1.概念:在ROS的网络拓扑中,是不可以出现重名的节点的,因为假设可以重名存在,那么调用时会产生混淆,这也就意味着,不可以启动重名节点或者同一个节点启动多次,的确,在ROS中如果启动重名节点的话,之前已经存在的节点会被直接关闭。
2.在ROS中给出的解决策略是使用命名空间或名称重映射。一般有三种方法,rosrun 命令;launch 文件;编码实现。
2.1rosrun 命令:
(1)rosrun设置命名空间:语法: rosrun 包名 节点名 __ns:=新名称,如:
rosrun turtlesim turtlesim_node __ns:=/xxx
rosrun turtlesim turtlesim_node __ns:=/yyy
//__ns 这里前面是两个—
(2)rosrun名称重映射:语法: rosrun 包名 节点名 __name:=新名称,如:
rosrun turtlesim turtlesim_node __name:=t1 | rosrun turtlesim turtlesim_node /turtlesim:=t1(不适用于python)
rosrun turtlesim turtlesim_node __name:=t2 | rosrun turtlesim turtlesim_node /turtlesim:=t2(不适用于python)
//这里的__ 也是一样的两个_ 后面不再赘述
(3)rosrun命名空间与名称重映射叠加:rosrun 包名 节点名 __ns:=新名称 __name:=新名称