ROS 资源名字规范

来源:互联网 发布:淘宝手办店黑店 编辑:程序博客网 时间:2024/06/06 06:31

ROS 计算图级资源:

节点、参数、主题、服务,这些命名规范和解释规则适应所有这些资源,在ROS中配置参数,进行topic订阅发布中很重要!!!

命名规范

  1. 第一个字符必须是([a-z|A-z]),或者波浪号~或者斜杠/
    注意:不建议大写字符,有出BUG的时候

  2. 后面的字符可以是([0-9|a-z|A-Z]), 下划线( _ ),斜杠(\)

名字的解释规则

/:全局命名空间
~:局部空间
举例:

Node Relative(default) Global Private /node1 bar -> /bar /bar -> /bar ~bar -> /node1/bar /wg/node2 bar -> /wg/bar /bar -> /bar ~bar -> /wg/node2/bar /wg/node3 foo/bar -> /wg/foo/bar /foo/bar -> /foo/bar ~foo/bar -> /wg/node3/foo/ba

relative : 相对于节点的名字空间 进行解释的。/node1 的空间是global / 所以 relative和全局的解释一样**
/node1 会形成一个 私有空间 ~


2017/10/30
ros::NodeHandle nh
ros::NodeHandle nh(“~”)


// nh_,nh_private_ 定义在类中,下面两个出现在初始化列表中
nh_(ros::NodeHandle()), /* This is an initialization list */
nh_private_(ros::NodeHandle(“~”)) /* if you don’t know what that means, go read about it */
类中的nh_ 和主函数中的nh关系:”可视范围内” 在命名空间上存在关联
在类构造函数后面的初始化列表中出现的ros::NodeHandle(“~”)解释为/node/的内部(私有),没有~ 就无所谓了。

nh可以定义多个,相对之间的关系不清楚,但是在命名空间都与node名字相关
launch文件中启动node时:ns参数可以定义node所在的名称空间/ns/nodename


参考

http://wiki.ros.org/Names