ROS 通信架构(一)

通信架构主要包括数据的处理,过程的运行,消息的传递。

1、Node & Master

Node

最小的进程单元——节点; node——可执行文件,负责机器人某个单独的功能,每个node负责某一个单独的功能,采用分布式的方式,模块化分工的思想。

Master

通过master管理各个node

启动master和node

启动ROS命令

roscore

同时启动roscout(负责日志输出的一个节点)和parameer server(参数服务器,非node,存储参数配置的服务器)

启动node:

rosrun pkg_name node_name
Master、Node以及Node之间的关系

ROS 通信架构(一)_第1张图片

rosrun和rosnode命令

rosrun命令:

rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

rosnode 详细命令:

ROS 通信架构(一)_第2张图片

2、launch文件

机器人是一个系统工程,需要同时开启很多node,ROS提供了一个同时启动master和多个node命令:

roslaunch pkg_name file_name.launch

首先启动master,在按照launch的规则执行,roslaunch一个启动工具,能够一次性把多个节点按照我们预先配置启动起来。

launch文件遵循XML格式:

 
 
 
 
 
 
 
 
 
 
 

理解launch文件,通过更改launch模板满足普通项目需求。

3、Topic

ROS的通信方式有四种:

  • Topic主题
  • Service服务
  • Parameter Service 参数服务器
  • Actionlib 动作库

topic是一种点对点的单项通信方式,node之间通过topic方式传递信息。

初始化过程:

ROS 通信架构(一)_第3张图片

首先,publisher节点和subscriber节点都要到节点管理器进行注册,然后publisher会发布topicsubscribermaster的指挥下会订阅topic,从而建立起sub-pub之间的通信。

整个过程是单向的。

Subscriber接收消息会进行处理——回调(Callback)——提前定义好一个处理函数,当有消息来时就会触发这个处理函数,函数会对消息进行处理。

topic通信属于一种异步的通信方式。

通信示例

摄像头画面的发布、处理、显示

ROS 通信架构(一)_第4张图片

ROS是一种分布式的结构,一个topic可以被多个节点同时发布,也可以同时被多个节点接收。

分布式系统通信的好处:扩展性好、软件复用率高。

总结

1、topic 通信方式是异步的,发送时调用publish()方法,发送完成立即返回,不用等待反馈。

2、subscriber通过回调函数的方式来处理消息。

3、topic可以同时有多个subscribers,也可以同时有多个publishers。ROS中这样的例子有:/rosout、/tf等。

操作命令

topic几种使用命令:

ROS 通信架构(一)_第5张图片

4、Message

Message就是topic内容的数据类型,也称之为topic的格式标准

你可能感兴趣的:(ROS学习)