这篇文章主机频道详细介绍了“ros是linux发行版吗?”内容详细,步骤清晰,细节处理得当。希望这篇文章《ros是linux发行版吗?可以帮你解惑。让我们按照主机频道的思路,一起学习新知识。
Ros是一个linux发行版。ROS的全称是机器人操作系统,翻译过来就是机器人操作系统;它基于Linux内核,只能在Linux下运行。ROS提供了一些标准的操作系统服务,如硬件抽象、底层设备控制、公共功能实现、进程间消息和数据包管理。ROS可以分为两层,下层是上面说的操作系统层,上层是实现不同功能的各种软件包,比如定位绘图、动作规划、感知等等。
ROS的定义介绍了ROS的全称,翻译成机器人操作系统。基于Linux内核,目前只能在Linux下运行。
ROS的设计者将ROS表述为“ROS = Plumbing+Tools+Capabilities+Ecosystem”,即ROS是通信机制、工具软件包、高级机器人技能和机器人生态系统的集合。
顾名思义,ROS是一个系统。它类似于我们常用的操作系统。ROS封装了底层的机器人硬件,也就是说不同机器人所包含的所有底层参数对于使用ROS进行开发的人来说都是一样的。这里还要提一下,ROS目前没有可视化界面。我们使用的Windows和Linux可以直接看到图像界面并进行操作,因为它们有可视化界面,而ROS没有。我们所谓的操作系统不一定要有可视化的界面。有兴趣可以看看最早的操作系统,只有命令行,没有丰富多彩的界面。
ROS提供了一些标准的操作系统服务,如硬件抽象、底层设备控制、公共功能实现、进程间消息和数据包管理。ROS基于图形架构,因此不同节点的进程可以接收、发布和聚合各种信息(如传感、控制、状态、规划等。).
ROS可以分为两层,下层是上面说的操作系统层,上层是实现不同功能的各种软件包,比如定位绘图、动作规划、感知、仿真等等。
ROS是一个多义词,也可以是一种沟通机制。在ROS的开发中,一个应用用一个节点来表示,节点就是一个可执行的程序。节点通过ROS相互通信。ROS通过节点管理器(主节点)管理每个节点。至于具体的原理实现,后面再说。
此外,ROS还代表了机器人开发的一系列工具包、算法、技能、平台、生态等等。
罗斯的历史。说白了,ROS就是一群大佬在开发机器人时认为比较好的东西(可以是一些有用的库,软件,或者是一些想法,协议,标准)。在机器人的发展中,各类机器人并没有统一的标准。每开发一个没见过的机器人,都需要重新学习很多东西,非常不方便。所以大佬们借鉴操作系统产生的思想,想为什么不做一个系统让机器人封装底层呢?结果产生了ROS。经过多年的打磨,ROS已经越来越完善,使用的人也越来越多。
活性氧功能
如果你想问我ROS是做什么的,你只需要知道一句话。ROS用于开发机器人或机械臂。
在机器人发展史上,标准化工作仍然不到位。不同的机器人使用不同的系统、程序等等,只要跨平台,开发起来就非常困难。为了解决这个问题,ROS诞生了。ROS可以通过封装让底层硬件对开发者透明,大大降低了跨平台开发的难度。
之所以选择ROS,是因为大家应该明白,使用的人很多,普及面广。ROS具有丰富的领域、材料、功能、内容和知识。你想不用它编译你自己的库吗?
1.ROS的性能特点在正式学习ROS之前,先介绍一下ROS的几个特点,即元操作系统、分布式通信机制、松耦合的软件框架、丰富的开源函数库等。,帮你建立一些感性认识。
ROS是机器人领域的元操作系统。换句话说,它并不是一个真正的操作系统,其底层的任务调度、编译、设备驱动等仍由其原生操作系统Ubuntu Linux完成。
ROS实际上是运行在Ubuntu Linux上的一个子操作系统,或者说是一个软件框架,但是它提供了硬件抽象、函数调用、进程管理等类似于操作系统的功能,以及获取、编译、跨平台的功能和工具。
ROS的核心思想是将机器人的软件功能做成节点,节点之间通过发送消息进行通信。这些节点可以部署在同一台主机上,也可以部署在不同的主机上,甚至可以部署在Internet上。ROS网络通信机制中的master负责管理和调度网络中节点之间的通信过程,并提供配置网络中全局参数的服务。
ROS是一个松耦合的软件框架,它使用分布式通信机制来实现节点间的进程通信。ROS的软件代码以松耦合的方式组织,开发过程灵活,管理维护方便。
ROS有丰富的开源函数库。ROS是基于BSD(Berkeley Software Distribution)协议的开源软件,允许任何人在商业和闭源产品中修改、重用、再分发和使用。使用ROS,你可以快速构建自己的机器人原型。
2.ROS的发行和Linux的发行类似。ROS的发行版内置了一系列常用的功能包,即ROS系统打包安装在原生系统中。ROS最初是基于Ubuntu系统开发的,ROS的发布版本名称采用了与Ubuntu相同的规则,即版本名称由两个首字母相同的英文单词组成,按字母升序选取版本的首字母。图1显示了ROS的一些主要版本。
图1主要版本的ROS系统架构安装ROS后,很多朋友应该会迫不及待的马上开始写程序。因为ROS的架构比较复杂,为了便于理解其中的各种概念,我们先来讨论一下ROS的系统架构,让大家可以全面的掌控ROS中的所有概念。按照官方的说法,ROS架构可以分别从计算图、文件系统和开源社区的角度来理解。
1.从计算图的角度来看,ROS架构中可执行程序的基本单元称为节点,节点通过消息机制进行通信,从而形成网络图,也称为计算图,如图3所示。
图3 ROS的计算图的结构节点是可执行程序,通常称为进程。ROS功能包中创建的每一个可执行程序在启动并加载到系统进程后,都是一个ROS节点,如图3中的节点1、节点2、节点3。
节点通过发送和接收消息进行通信,消息发送和接收机制分为主题通信、服务通信和动作通信三种。如图3所示,节点2和节点3,节点2和节点5采用主题通信,节点2和节点4采用服务通信,节点1和节点2采用动作通信。计算图中的节点、主题、服务和动作应该用唯一的名称来标识。
ROS使用节点将代码和功能解耦,提高了系统的容错性和可维护性。所以,与其创建一个包罗万象的庞大节点,不如让每个节点都有特定的单一功能。如果用C++写节点,需要使用ROS提供的roscpp库。如果用Python写节点,需要使用ROS提供的rospy库。
消息是形成计算图的关键,包括消息机制和消息类型。有三种消息机制:主题、服务和动作。每种消息机制中传输的数据都有特定的数据类型(消息类型),可分为主题消息类型、服务消息类型和动作消息类型。消息机制和消息类型将在1.5节中解释。
Rosbag是ROS中专门用来保存和回放题目中数据的文件。一些难以收集的传感器数据可以记录在数据包中,然后重复回放,以调试算法性能。
参数服务器可以为整个ROS网络中的节点提供易于修改的参数。参数可以被认为是可以在节点中从外部修改的全局变量,包括静态参数和动态参数。静态参数一般用于设置节点启动时的工作模式。动态参数可用于动态配置节点或改变节点运行时的工作状态,如电机控制节点中的PID控制参数。
主节点负责节点间通信过程的调度和管理。所以必须先启动主节点,可以通过roscore命令启动。
2.从文件系统的角度,理解ROS程序的不同组件要放在不同的文件夹中,文件夹按照不同的功能组织文件。这是ROS的文件系统结构,如图4所示。
图4 ROS的文件系统结构工作区是一个文件夹,包含功能包、编译包和编译后的可执行文件。用户可以根据自己的需求创建多个工作区,并在每个工作区开发不同用途的功能包。在图4中,我们创建了一个名为chunk _ ws的工作区,它包含三个文件夹:src、build和devel。
src文件夹放置每个功能包和配置功能包的CMake配置文件CMakeLists.txt。这里,由于ROS中的源代码是由基于CMake技术的柳絮工具编译的,所以我们会在src源文件空间和各种功能包中看到一个CMake配置文件CMakeLists.txt,起到配置编译的作用。
构建文件夹包含缓存、配置、中间文件等。编译CMake和柳絮函数包时生成。
devel文件夹包含编译后的可执行程序,无需安装即可直接运行。一旦编译并测试了功能包的源代码,就可以直接导出这些编译后的可执行文件,与其他开发者共享。
功能包是ROS中软件组织的基本形式,具有创建ROS程序的最小结构和内容,包括ROS节点源代码、脚本、配置文件等。
一、CMakeLists.txt是一个函数包配置文件,用于编译时编译cmakefunction包的编译配置。
二。package.xml是功能包的列表文件,以及这个功能包的各种相关信息,比如包名、开发者信息、依赖关系等。,是用xml标签格式标记的,主要是为了让功能包的安装和分发更容易。
三。include/& lt;pkg _ name & gt是函数头文件的目录,可以放*。h头文件包含在这里的功能包程序中。包含目录需要添加一级路径的原因
四。msg、srv和action分别用于存储非标准主题消息、服务消息和动作消息的定义文件。ROS支持消息通信中使用的用户定义的消息类型。这些自定义消息是不必要的,例如,程序只使用标准消息类型。
v. scripts目录包含Bash和Python等脚本文件,这不是必需的。
不及物动词启动目录存储节点的启动文件,以及*。启动文件用于启动一个或多个节点,在有多个节点的大型项目中非常有用,也不是必须的。
七。src目录存储了功能包节点对应的源代码。一个功能包可以有多个节点程序来完成不同的功能,每个节点程序可以独立运行。这里的src目录存储了这些节点程序的源代码。可以根据需要创建文件夹和文件来组织源代码,可以用C++、Python等编写。
3.从开源社区的角度理解ROS架构。ROS是开源软件,各种独立的在线社区分享和贡献软件和教程,形成了一个强大的ROS开源社区,如图5所示。
图5 ROS开源社区结构的发展依赖于开源和共享软件,由不同的组织共享和发布,如GitHub源代码共享、Ubuntu软件仓库发布和第三方库。ROS的官方wiki是一个重要的文档讨论社区,在这里你可以方便地发布和修改相应的文档页面。ROS的回答首页有大量ROS开发者的问答,对于ROS开发中遇到的各种问题的讨论非常活跃。
评论前必须登录!
注册