ROS 101

https://www.clearpathrobotics.com/blog/2014/01/how-to-guide-ros-101/

什么是ROS

ROS(robot operating system)是一个用于PC控制机器人组件的开源系统.一个ROS系统包含多个独立nodes,nodes直接通过pub/sub(发布/订阅)模式通信.比如传感器可以实现为一个传感器Node,传感器node采集数据,数据可以被其他node,比如导航node,路径查找node等等消费.

Why ROS

ROS的node不一定非得在一个computer上,甚至是不需要在同种结构的设备上.比如你可以用一个硬件设备采集数据,pub msg,在笔记本电脑上订阅这个msg,在手机上收取msg。这使得ROS具有高度灵活性.而且ROS是开源的.

基础概念

  • ROS Master
  • ROS Node

每一个node都要向master注册,master类似于消息中间件.node之间通过向master注册进行通信.node之间通过pub/sub模式通信.pub/sub 一个topic.类似于zmq里的pub/sub topic概念.

举个例子:
camera node负责和cmaera交互,image process node负责图片处理,image display node负责图片展示。在开始的时候,每一个node都要注册到master,
camera node注册的时候告诉master,他将要发布topic为image_data的消息,其余node注册的时候告诉master,想要订阅topic为image_data的数据.这样,当camera node收到来自camera采集的数据时,它就会发送image_data数据到image process node和image display node。

  • Services

上面的例子中,process node是被动接收camera数据的,如果process node想要主动获取数据呢?

process node向master注册一个specific service。然后process node就可以向camera node发一个request,请求image_data,然后camera node控制camera采集数据,reply给process node。

猜你喜欢

转载自www.cnblogs.com/sdu20112013/p/10495536.html
101
ROS