0%

ROS基础:命名空间和重映射

命名空间

ROS中主要有四种命名方式,分为基础,全局,相对和私有。

  1. 全局:开头有”/“的名称称为全局的命名空间,默认的全局命名空间为”/“,也可以通过以下方式设置;
    1. 命令参数设置:rosrun turtlesim turtlesim_node __ns:=/my
    2. 在launch文件中设置:<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" ns="sim1"/>
    3. 使用环境变量:export ROS_PACKAGE=default-namespace
  2. 相对:开头没有”/“的名称。ROS会以全局命名空间+相对名称来对其解析。
  3. 基础:用来描述资源自身,可以当做相对名称的一个子类;
  4. 私有:和相对名称一样,私有名称不能够完全确定它们自身所在的命名空间,和相对名称的区别是 私有名称使用的不是默认命名空间,而是用它们的节点名称作为命名空间。每个节点内部都有一些资源,这些资源只与本节点相关,不会与其他节点打交道,这时候为了安全我们使用私有名称。

ROS命名空间

可以看到节点名本身“node_name”只在私有名称中有效。这个“node_name”就是ros::init(argc,argv,“node_name”)中的node_name,可以通过launch文件覆盖。

命名映射

命名映射的基本语法是: name:=new_name。同样的,重映射的规则与名称的全局和相对特性有关系。规则参考如下:
ros命名映射

参考文献

  1. https://blog.csdn.net/jrc_january/article/details/76587630
  2. http://wiki.ros.org/Names
  3. http://wiki.ros.org/Remapping%20Arguments