ROS通信架构(1)
Node && Master
- 链接
Node是ROS中的最小的进程单元, 从程序角度来说,node就是一个可执行文件(通常为C++编译生成的可执行文件、Python脚本)被执行,加载到了内存之中;从功能角度来说,通常一个node负责者机器人的某一个单独的功能。
Master是ROS中的节点管理器,在整个网络通信架构里相当于管理中心,管理着各个node。node首先在master处进行注册,之后master会将该node纳入整个ROS程序中。node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信
Roslaunch
roslaunch可以自动的启动roscore,它整合了很多的node
Topic
Topic是ROS的四种通信方式之一,是一种异步的通信方式,擅长处理周期性和实时性的信息。两个节点首先去master那里注册,其中发布topic的node叫做publish,接收topic的node叫做subscirbe。然后就可以点对点的进行通信。
这里注意三点:
- topic通信方式是异步的,发送时调用publish()方法,发送完成立即返回,不用等待反馈
- subscriber通过回调函数的方式来处理消息
- topic可以同时有多个subscribers,也可以同时有多个publishers。ROS中这样的例子有:/rosout、/tf等等。
基本上概念就是这些,然后贴上一些基本的命令就开始实际的演练:
#查看当前所有的topic
rostopic list
#显示某个topic的属性信息
rostopic info /topic_name
#显示某个topic的内容
rostopic echo /topic_name
#向某个topic发送内容
rostopic pub /topic_name ...