架构介绍
系统基本架构¶
总的来说,整个ROS的项目在部署运行过程中,分为几个部分:
- 环境
- 执行器
- 传感器
- 软件结构
环境¶
包含了软件环境和硬件环境。通常一个ROS的机器人,需要一个开发主板用于运算和控制操作。
例如,我们用树莓派作为开发板,用来作为这个机器人的运算和控制操作,那么这个就是软件所运行的硬件环境。开发板上通常需要有操作系统,所装的操作系统属于系统环境。当然开发板上可能会外接一些其他硬件,如摄像头。那么这些硬件也属于硬件环境。
执行器¶
执行器主要作用是给操作系统发送一些指令,通过指令取控制硬件操作。例如发送指令给开发板,让开发板外接的陀机转动,驱动物体运动。执行器更像是硬件驱动的输入。
传感器¶
在硬件环境中,可能会安装一些环境探测的硬件,例如温度感应器。这些硬件感应器会将感觉的数据发布出来,传感器其实扮演的就是这些硬件发布数据的传播者,更像是硬件驱动的输出。
### 软件结构
这里所说的软件结构是指,ROS机器人运行时部署的软件及软件间的关系。
机器人运行起来后,内部会有很多单元程序运行,每个单元程序做很小的事情。有的小程序负责读取硬件驱动传递的数据,有的负责处理读取的数据,有的负责判断数据,有的负责发出指令....
总之,ros将复杂的程序分解成了很小的一部分,每部分干很少的活,每个部分还可以复用。
ROS 软件结构组成¶
ROS Master¶
- 管理Node节点间进行通讯的
- 每个Node节点都需要到Ros Master中进行通讯
通roscore
命令可以启动ROS Master,启动节点前,必须启动ROS Master。
# 启动ROS Master
roscore
ROS Node¶
-
具备单一功能的可执行程序
-
可以单独编译,可执行,可管理
-
存放在package中
ROS 哲学¶
1. Peer to peer¶
点对点的设计。
-
Node节点单元
-
采用了分布式网络结构
-
节点间通过RPC + TCP/UDP进行通讯
2. Distributed¶
分散协同式布局。可以将ROS同时部署到多台机器上,让多台机器进行通讯。
3. Multi-lingual¶
多编程语言的支持。
- 可以采用python,c++,lisp等语言进行开发。
- 遵循协议进行编码,和编程语言无关
4. Light-weight¶
组件工具包丰富。ros提供了丰富的开发工具包。
5. Free and open-source¶
免费并且开源。
- BSD许可。可修改,可复用,可商用。
- 开源使软件进步