ros node and topic namespace
一、ros节点名
ros节点名可以包含a-z、A-Z、数字0-9、下划线_,且必须以字母开头。节点启动后,ros会自动在节点名前加/,表明是全局命名空间下的节点,节点名具有系统唯一性。
ros::init(argc, argv, "pos_node");
二、话题名
ros::NodeHandle nh; //使用默认命名空间/
ros::NodeHandle nh("~"); //创造句柄的时候指明了其命名空间为**私有命名空间**
利用公有句柄创建的订阅和发布话题,其命名空间默认都在"/"全局命名空间下,如果topic名字没加/,ros会自动加上。
利用私有句柄创建的订阅和发布话题,默认利用节点名称作为子命名空间。
三、更改命名空间
# 1、rosrun 启动更改命名空间为xxx,该节点相关的所有话题均被改为在xxx namespace下
rosrun data lidar_node __ns:=xxx
# 2、利用roslaunch来更改命名空间
<launch>
<group ns = "AAA">
<include file="$(find velodyne_pointcloud)/launch/VLP-32C_points.launch">
<arg name="min_range" value="0" />
<arg name="max_range" value="200" />
</group>
</launch>
注意:如果发布或者订阅话题时,话题名称使用了"/"符号,那么该话题就会屏蔽一切其他命名空间,只会使用自定义名称