ROS学习笔记【3】:ROS通信架构(上)master topic

通信架构:理解为ROS程序运行起来后会形成的网络结构和框架

机器人常常带有很多很多的传感器,机器人的正常运行离不开传感器的协调工作。这意味着有很多的进程需要同时进行。所以我们要关注如何管理这些进程和他们之间的通讯。

master:节点管理器

master的作用

1.每个节点启动的时候都需要向master注册  2.管理node之间的通讯

过程:node1要开始运行,node1必须要去master那里注册,如果另外有一个node2想和node1通讯,但是他们之间本来就不认识对方,但是node2可以通过master来找到node1并且和node1进行点对点的通讯。

所以在启动ROS程序之前,第一步就是要启动master

用以下指令启动 ros master

$ roscore

但是在启动master的时候,同时会启动rosout:日志输出 和parameter server 参数服务器

node:节点

ROS里的进程,是package可执行文件运行的实例。(可执行文件是静态的,node这个概念是动态的,当一个可执行文件运行(被放入内存)后这个程序就成了一个node)

node一般以功能来划分

启动一个node

$ rosrun [pkg-name][node-name]

node相关的常用指令:

 但是往往一个ROS程序包含很多节点,不可能一条一条rosrun pkgname,这时候用下面一条指令来一次启动master和多个节点

$ roslaunch [pkg-name][file-name.launch]

roslaunch在执行前会自己检测有没有执行roscore,如果没有它会先执行 roscore

launch文件有一定的规范的写法(百度)

小提醒:机器人启动的包名一般命名为 bot-name_bringup

节点间的通讯:

Topic 通讯方式:ROS中的异步通讯方式

topic(代码中就是一串字符串一般以“/”开头,没写过代码我也不太了解)可以理解为两个节点之间谈论的话题,可以是机器人的视觉信息,也可以是位置信息。

过程:节点A只管向某个topic发送信息(publish),节点B只管订阅(subcribe)了这个topic,那么消息就得到了传递,一个topic可以被多个node订阅,也可以有多个node向topic发送信息

在publish过程中,进程只管发送信息,不会也不需要等待publish后返回信息

Topic有很严格的格式要求

Message:message是topic内容的数据类型(类、结构体),定义在*.msg文件中(pkg/msg/file.msg)

有关topic的常用指令和node很相似,

 

有待实操

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值