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等问题<