1、计算图
ROS 分布式系统中不同进程需要进行数据交互,计算图可以以点对点的网络形式表现数据交互过程。在LINUX上启动新终端,键入: rqt_graph 或 rosrun rqt_graph rqt_graph 即可查看当前的计算图,以我们前2节的案例为例,其计算图如下
2、注意点
1、在运行这个程序的时候,你会发现订阅方接收的消息比发布方发布的要少那么一部分,如下图所示,我先启动的订阅方,后启动的发布方,按理说只要发布方发消息,订阅方就一定会接收到,但根据图可以发现,少了个1。这个主要的原因是因为,发布方注册的同时也在发消息,但是此时还没有注册上,也就是订阅方还没有匹配上发送方,所以订阅方会少接收一部分消息。解决办法是,让发布方注册的后休眠一会。具体的做法就是加一个休眠的函数 ros::Duration(3.0).sleep();休眠3秒。加在发布方发消息之前。具体位置如下
int count = 0;//定义一个int数据类型的count
//编写循环,循环中发布数据
ros::Duration(3.0).sleep();
while (ros::ok())
{
count++;
如图,有接收不到的消息。
加上休眠之后,如下图
2、发送方和订阅方的名字是唯一的,话题必须一样,才可以通信!!!
3、发布方和订阅方的编程语言可以不一样,只要满足ros的通信标准就可以通信,也就是解耦合能力比较强。