ROS通信架构简述(一)

1.通信架构
实现基础的通信,包括各种数据的处理,进程的运行,消息的传递ROS的设计之初,是为了方便通信,各个节点之间具有分布式架构、松耦合关系,比如对于机器人的遥控系统,在前人造好机器人的情况下,可替换/添加成任意的遥控系统:电脑键盘,手机终端,游戏手柄...分布式系统通信的好处:扩展性好、软件复用率高
1.通信元素
1.1节点:在文件系统级是一个静态的可执行文件,连接入网络变成动态的(加载入内存运行,用于通信后),成为一个进程,即节点。一个节点负责某一功能,使得ROS具有分布式架构的特点,松耦合。便于调试和查找问题
1.2节点管理器:管理中心管理节点运行的调度,使其有条不紊的运行。所有通信节点都需要先在节点管理器注册信息,注册后相当于已知各自信息,之后节点之间直接联系
小技巧:如果你想不起来节点有哪些指令,直接输入rosnode;若想查看rosnode命令的用法,通过rosnode help来查看。主题,服务,参数服务器同理可得
1.3message
是topic的格式标准,topic是为了从通信方式上给出的名称,实则还是message,相当于C语言当中的结构体;
rosmsg show msg_name 显示某个msg的内容
2.1通信的方式
主题/服务/参数服务器/动作库
2.1.1topic
topic是一种具有实时性、周期性的、消息点对点的、单向的通信方式的特点;它的通信过程:首先,publisher节点和subscriber节点都要到节点管理器进行注册,然后publisher会发布topic,subscriber在master的指挥下会订阅该topic,从而建立起sub-pub之间的通信;属于一种异步通信方式,两者之间收发不用顾及对方感受。
2.1.2service
是一种双向的、同步的、非周期性、非实时的请求-查询式通信方式;有需要就调用,不浪费资源
2.1.3参数服务器
一种更加静态通信方式,参数都放置在一本词典里,进行调用
2.1.4动作库
actionlib也是一种请求响应机制的通信方式,actionlib主要弥补了service通信的一个不足,在service长时间得不到回复响应时候,称之为通信堵塞;为了解决这个问题,action可中断服务请求,也可查看服务进度,而这些是服务所没有的,相当于扩展了服务功能

猜你喜欢

转载自blog.csdn.net/chanleoo/article/details/80577491
今日推荐