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之间的关系

在这里插入图片描述

rosrun和rosnode命令

rosrun命令:

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

rosnode 详细命令:

在这里插入图片描述

2、launch文件

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

roslaunch pkg_name file_name.launch

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

launch文件遵循XML格式:

<launch> <!--根标签-->
<node> <!--需要启动的node及其参数-->
<include> <!--包含其他launch-->
<machine> <!--指定运行的机器-->
<env-loader> <!--设置环境变量-->
<param> <!--定义参数到参数服务器-->
<rosparam> <!--启动yaml文件参数到参数服务器-->
<arg> <!--定义变量-->
<remap> <!--设定参数映射-->
<group> <!--设定命名空间-->
</launch> <!--根标签-->

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

3、Topic

ROS的通信方式有四种:

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

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

初始化过程:

在这里插入图片描述

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

整个过程是单向的。

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

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

通信示例

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

在这里插入图片描述

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

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

总结

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

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

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

操作命令

topic几种使用命令:

在这里插入图片描述

4、Message

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值