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>

 注意:如果发布或者订阅话题时,话题名称使用了"/"符号,那么该话题就会屏蔽一切其他命名空间,只会使用自定义名称

posted @ 2021-12-30 14:29  chenjian688  阅读(189)  评论(0编辑  收藏  举报