ROS学习笔记(2)roslaunch 文件remap 作用域

一、背景介绍

小弟在ROS学习笔记(1)(https://blog.csdn.net/jik198558/article/details/105163565)的最后(2.2.3)发现remap标签没有实现预想的功能,于是做了以下几个实验来理解remap的作用域,希望对小伙伴们有帮助。

三、实验过程

2.1代码概述

node:mtalker1 中发布两个话题chatter及chatterp
mlistener1 中订阅分别订阅两个话题remapchatter及chatterp
mlistener2 中订阅分别订阅两个话题remapchatter及chatterp
其中chatter和remapchatter消息类型相同

2.2实验结果

2.2.1测试用例及结果

备注:表格里的通讯结果是以是否接受到chatter话题消息为依据的

序号remap 位置remap方向mlistener1 通讯结果mlistener2 通讯结果附录
1与node标签平行from="/remapchatter" to="/A/chatter"失败成功图2.1.1
2与node标签平行from="/A/remapchatter" to="/A/chatter"成功失败图2.1.2
3与node标签平行from="/A/chatter" to="/A/remapchatter"成功失败图2.1.3
4与node标签平行from="/A/chatter" to="/remapchatter"失败成功图2.1.4
5处于mtalker1的node标签内部from="/A/chatter" to="/remapchatter"失败成功图2.2.1
6处于mtalker1的node标签内部from="/A/chatter" to="/A/remapchatter"成功失败图2.2.2
7处于mtalker1的node标签内部from="/A/remapchatter" to="/A/chatter"失败失败图2.2.3
8处于mtalker1的node标签内部from="/remapchatter" to="/A/chatter"失败失败图2.2.4
9处于mlistener1 的node标签内部from=/A/chatter" to="/A/remapchatter"失败失败图2.3.1
10处于mlistener1 的node标签内部from=/A/chatter" to="/remapchatter"失败失败图2.3.2
11处于mlistener1 的node标签内部from="/A/remapchatter" to="/A/chatter"成功失败图2.3.3
12处于mlistener1 的node标签内部from="/remapchatter" to="/A/chatter"失败失败图2.3.4
13处于mlistener2 的node标签内部from=/A/chatter" to="/A/remapchatter"失败失败图2.4.1
14处于mlistener2 的node标签内部from=/A/chatter" to="/remapchatter"失败失败图2.4.2
15处于mlistener2 的node标签内部from="/A/remapchatter" to="/A/chatter"失败失败图2.4.3
16处于mlistener2 的node标签内部from="/remapchatter" to="/A/chatter"失败成功图2.4.4

2.2.2实验数据记录

图2.1.1
在这里插入图片描述
图2.1.2在这里插入图片描述
图2.1.3
在这里插入图片描述
图2.1.4
在这里插入图片描述
图2.2.1
在这里插入图片描述
图2.2.2
在这里插入图片描述
图2.2.3
在这里插入图片描述
图2.2.4
在这里插入图片描述
图2.3.1
在这里插入图片描述
图2.3.2
在这里插入图片描述
图2.3.3
在这里插入图片描述
图2.3.4
在这里插入图片描述
图2.4.1
在这里插入图片描述
图2.4.2
在这里插入图片描述
图2.4.3
在这里插入图片描述
图2.4.4
在这里插入图片描述

三、实验结论

1,当remap和node平行时,from和to可以为launch文件中任意节点。
2,当remap处于节点内部时,from必须为当前节点所定义的内容,to可以是launch文件中任意节点。见测试用例表格条目(6,11,16)

四、疑问

1,在做实验过程中发现直接用launch文件启动mtalker1,mlistener1,mlistener2节点后,在控台使用ctrl+c则会将所有节点退出,使用rosnode list指令查看所有节点均被注销。launch文件如下:

<launch>
    <remap from="/A/remapchatter" to="/A/chatter"/>
   <node pkg="learning_communication" type="mtalker1" name="talker" ns="/A" launch-prefix="xterm -e"/>
   <node pkg="learning_communication" type="mlistener1" name="mlistener1" ns="/A" launch-prefix="xterm -e"/>
   <node pkg="learning_communication" type="mlistener1" name="mlistener2" launch-prefix="xterm -e"/>
</launch>

2,如果先使用roscore控台启动master后,再用launch文件启动mtalker1,mlistener1,mlistener2节点后,在控台使用ctrl+c则会发现这些节点依旧存在,不知道为什么有大神可以解释下吗?下图分别是rosnodelist指令截图和rqt截图,其中rqt中为每个节点均加了一个n—的前缀。不知道什么意思。

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值