ros入门教程(三)-- 通信架构(上)

ROS通信涉及节点管理器、节点和多种通信方式。节点管理器通过master进行节点注册和通信管理,roscore启动master并包含rosout和参数服务器。节点是ROS进程,通过roslaunch可批量启动。Topic作为异步通信方式,采用publish-subscribe机制,允许多个订阅者和发布者。Message定义了Topic的数据格式,遵循msg文件的规范。
摘要由CSDN通过智能技术生成


ROS 通信架构,即计算图层的概念。

一个机器人想要完整运行起来,涉及到多个传感器和各种设备。要保证这些设备进程及各个传感器进程之间的通信,就需要用到ros。

通信架构

节点管理器
节点管理器(master)
  • 每个节点启动时都要用master注册
  • 管理node之间的通信

master可以实现两个节点之间的点对点通信。

roscore

用来启动ros master

$ roscore

除了master,这个指令还顺带启动了rosout日志输出和parameter server参数服务器。

  • rosout: 它是一个负责日志输出的node,负责输出error和记录log。
  • parameter server:主要负责一些参数的配置。
node

一个node其实就是一个ROS的进程,即pkg里的可执行文件的运行实例。通常来说,一个节点做一个特定的功能。一般上node都是以功能来划分

node的启动
$ rosrun [pkg_name][node_name] # 用来启动node

其他关于node的常用指令

$ rosnode list # 列出当前运动的node信息
$ rosnode info [node_name] #显示某个node的详细信息
$ rosnode kill [node_name] #结束某个node
roslaunch

在运行多个node的时候,可以直接使用ros提供给我们的简单办法

$ roslaunch [pkg_name][file_name.launch] #启动master和多个node
#launch 文件位置:file_name.launch : pkg -> launch -> *.launch

roslaunch 会首先检查master是否已启动,如无则启动master。 然后再按launch文件的启动规则启动node。

在这里插入图片描述
该文件的编写规则和pkg.xml文件一样,都遵循xml标签语言的规范。

举例:pr2启动运行的node

在这里插入图片描述
此处 pr2_bringup 是它的一个包名,这是现在的一个通行做法。一般把机器人启动的pkg叫做bringup。

通信方式

Topic

Topic是ROS中的异步通信方式,是Node之间通过publish-subscribe机制通信。

发送
订阅
Node A
/Topic
Node B

当我们实际写topic的代码,实际上topic就是一个字符串。我们就可以把这个字符串当成一个频道。

举例:摄像头信息传递过程
pub
pub
sub
sub
sub
camera
/camera-rgb
/camera-depth
image process
display

此处对于发布者来说:只管发送,有没有人接受,怎么处理都不关心。只需要按特定的格式发送就行。
对于接收者来说:不管是谁发送的,有消息到了就可以处理消息,没有消息就做别的事情

总结
  1. topic的通信方式是异步的,在发送的时候会调用publish()这个方法,调完这个函数就立即返回,不用等返回结果。这和之后的service有区别。
  2. 对于一个topic来说,可以有多个接收者和发送者。

topic有很严格的格式要求,如果是某个消息的topic,那一定要符合ros里定义的该消息的格式,这种格式就是下面要讲的Message

Message

它是Topic内容的数据类型或者说是格式标准,是消息传送过程中一条一条信息必须遵守的规范。所以msg其实是类的概念,具体的消息就是这个msg的对象。Message定义在*.msg文件中(pkg/msg/*.msg)

和C++很像,基本的msg类型如下所示:
在这里插入图片描述

举例:具体一个msg文件如何组织
node 1
/camera-rgb
node 2

在这里插入图片描述
对于/camera-rgb就必须遵循如下的这个msg,它是ros里面定义好的数据类型。形式上特别像C语言里面的结构体。

相关命令

在这里插入图片描述

转载请注明出处。
本文总结于中国大学MOOC《机器人操作系统入门》
链接: link.
图片来自于课程视频截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值