命名空间
ROS中主要有四种命名方式,分为基础,全局,相对和私有。
- 全局:开头有”/“的名称称为全局的命名空间,默认的全局命名空间为”/“,也可以通过以下方式设置;
- 命令参数设置:
rosrun turtlesim turtlesim_node __ns:=/my
- 在launch文件中设置:
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" ns="sim1"/>
- 使用环境变量:
export ROS_PACKAGE=default-namespace
- 命令参数设置:
- 相对:开头没有”/“的名称。ROS会以全局命名空间+相对名称来对其解析。
- 基础:用来描述资源自身,可以当做相对名称的一个子类;
- 私有:和相对名称一样,私有名称不能够完全确定它们自身所在的命名空间,和相对名称的区别是 私有名称使用的不是默认命名空间,而是用它们的节点名称作为命名空间。每个节点内部都有一些资源,这些资源只与本节点相关,不会与其他节点打交道,这时候为了安全我们使用私有名称。
可以看到节点名本身“node_name”
只在私有名称中有效。这个“node_name”
就是ros::init(argc,argv,“node_name”)
中的node_name
,可以通过launch文件覆盖。
命名映射
命名映射的基本语法是: name:=new_name
。同样的,重映射的规则与名称的全局和相对特性有关系。规则参考如下: