由于ROS必须有唯一的名称,不论是节点还是话题都是如此,简单地两次执行相关节点将导致之前执行的节点终止。但是我们可以在运行时更改节点的名称,而不需要运行额外的程序或更改源代码。方法包括命名空间(namespace)和重新映射(remapping)。
这里说一下关于节点和话题的名称重映射,以turtlesim这个简单的小实验为例子。
节点名称重映射:
-
记得先打开ros_maseter,运行roscore.
-
rosrun turtlesim turtlesim_node __name:=first_turtle
此处name前为两个下划线。 -
rosrun turtlesim turtlesim_node __name:=second_turtle
-
通过rosnode list 可以查看当前的节点有哪些
-
rosrun turtlesim turtle_teleop_key
可以通过键盘控制来控制两个乌龟同时运动,因为两只乌龟订阅同一个话题turtle1/cmd_vel,而发布节点turtle_teleop_key只向话题turtle1/cmd_vel发送消息。
如图所示,可以开启两个turtlesim,并且有不同的名称,可以通过键盘同时控制两个乌龟同时运动在做多摄像头定位时非常有用。
利用rqt_graph工具可以看到当前节点和话题关系。