机器人是一种高复杂的系统性实现,在机器人上可能集成各种传感器(雷达、摄像头、GPS...)以及运动控制实现,为了解耦合,在ROS中的每个功能节点都是一个单独的进程,每一个进程都是独立运行的,更确切地讲,ROS是进程(也成为Node)的分布式框架。因为这些进程甚至还可分布于不同主机,不同主机协同工作,从而分散计算压力,不过随之也有一个问题:不同进程之间是如何进行通信的?也即不同进程间如何实现数据交互?

ROS中的基本通信机制主要有如下三种实现策略:

  • 话题通信(发布订阅模式)
  • 服务通信(请求响应模式)
  • 参数服务器(参数共享模式)

1、话题演示案例:

控制小乌龟做圆周运动

获取乌龟位姿

2、服务演示案例:

在指定位置生成乌龟

3、参数演示案例:改变乌龟窗口的背景颜色: