1 什么情况下会用到namespace(以下简称ns)
当我们需要运行同一个pkg的同一个node,虽然可以在launch文件中给他们命名成不同的name但是,我们希望使用<group ns=""></group>来更加清晰的区分他们之间的不同。但是加上ns后,常常会出现以下问题,需要我们解决。比如,原先不添加ns的时候一切运行正常,但是当我们添加ns后,无法运行等一类问题。
2 理解什么是namespace
ns就是把你原先运行的pkg---node放到一个命名空间中去,这个命名空间就是ns,例如:
<launch>
<group ns="name1">
<node pkg="your_pkg" type="your_node_name" name="whatever" />
</group>
<group ns="name2">
<node pkg="your_pkg" type="your_node_name" name="whatever" />
</group>
</launch>
我们运行的pkg---node---name都可以一样,但是必须在不同的ns中,这样ROS才可以区分他们,否则会认为重复,第二个node会覆盖掉第一个node,这样始终只有一个node在运行。
在rosnode list 你可以看到:
/name1/whatever
/name2/whatever
而在rostopic list中,所有话题也会被追加上name1和name2
3 添加namespace后提示tf,no laser scan data等问题<

本文总结了在ROS中使用namespace时遇到的问题及解决方法,包括话题订阅失败、remap无效、yaml参数传递等。通过理解namespace原理,配合remap和正确设置话题路径,能有效避免这些问题。同时介绍了yaml文件在launch文件中的参数传递方式。
最低0.47元/天 解锁文章
6175

被折叠的 条评论
为什么被折叠?



