ros是什么?
转载:https://blog.csdn.net/qq_25267657/article/details/84316111
ros(Robot Operating System) 机器人操作系统
- 为什么要用ros ?
- ros可以做什么?
- ros的特点
这些,我们大概就可以知道ROS 是什么了
- 为什么需要机器人操作系统?
操作系统是啥:操作系统就是提供一些软件和硬件的接口,让我们可以直接使用,而不用管它内部到底做了啥。所以不同的平台,不同的功能,就要有不同的操作系统来完成底层操作。
ros和其他的操作系统最大的区别就是:进程之间的通信。传统的操作系统进程之间的通信都是要系统来调用的,会消耗大量的系统资源。但在机器人这里可能不太合适。
因为一个机器人可能是由很多个传感器组成,是通过各模块相互沟通交流来完成指定任务。所以进程之间有效快速的通信,是一个机器人要必备的要求,ros就提供这样的功能。
注意:
虽然叫做操作系统,但是并不是真正的操作系统,说白了,就是一个框架,一个平台。还是要依靠具体的操作系统,现在是Linux比较多
- ROS 可以做什么
1. 上面简单的介绍了,ros可以快速的完成机器人各个模块之间的通信(分布式计算),可以从不同节点中接受和发送信息。
2. 简单就是说:可以提高机器人开发过程中的软件复用性
三.ROS的特点
1.点对点:各个功能分开,可以快速
2.多语言支持,各个包可以用不用的语言
3.结构简单,集成度高
4.工具包丰富,仿真界面工具rviz,仿真环境gazebo,rqt_plot图形化显示工具
5.免费开源的
四.ROS纵向介绍
1.计算机图层级:程序如何运行,程序如何通信
2.文件系统级:程序是有那个文件组成的。已经一下简单命令
3.开源级:ros的开源资源
计算机图层级:
- 节点:就是进程,一个功能。白的说就是机器人之间的模块
- 节点:节点管理器,管理节点的
- 话题:一种通信机制。多对多的通信。实时性比较差。需要拥有一个缓冲区,一般用的比较多的就是数据的传输的情况。
订阅者(节点)和发布者(节点)通过话题 来就两者连接起来,进行通讯。但两者都不知道对方是否存在的情况。两个节点和话题的数据结构必须保持一致。一个节点发送数据,可以多个节点订阅。也可以多个节点发送数据,一个节点订阅等
- 服务:也是一种通信机制,多对一的通信(一个服务端,多个客户 端)。实时性较高。双向的通信。用于逻辑判断。
服务通信两端的节点一个叫服务器(talker),一个叫客户端(listener),服务器还是发布数据信息的,客户端则是接收数据信息的,但是这种通信只允许有一个服务器,客户端可以有多个,服务器和客户端之间双向同步通信,采取请求和应答的模式进行通信。
5) 服务和话题的比较
| 话题 | 服务 |
同步 | 异步 | 同步 |
模型 | 发布者/订阅者 | 服务器/客户端 |
是否有反馈 | 没有 | 有 |
是否用缓冲区 | 有 | 没有 |
实时性 | 比较弱 | 强 |
节点之间对应关系 | 可以N:N | 1:N |
适用的地方 | 数据的传输 | 逻辑的判断 |
文件系统层:说白了解就是各个文件的结构和直接的关系
一个功能包分为多个部分,如下:
(1)功能包清单:记录功能包信息,包括各个包的信息以及发行者,还有功能包之间的依赖关系,编译的相关信息等。管理包的
(2)消息类型: ROS采用话题通信的时候的消息的类型的文件,
(3)服务类型: ROS服务通信的时候的服务类型的文件
(4)代码:一个个的节点是通过相应的编程语言进行编写的,其代码称作源代码,存放于特定文件夹之中。
元功能包,就是一个个小功能包组成的大功能包,为了实现一个更大的功能。
开源层:
ROS中最外层的层次,免费的开源平台,可以共享资源