ROS中话题、节点、服务和参数统称为计算图源(graph resource),每一个计算图源由一个叫计算图源名称的短字符串标识。所谓的计算图源名称也就是ROS在解析这些话题名、节点名、服务名和参数名时需要具体对应的名称。
计算图源名称包括全局名称、相对名称、私有名称和匿名名称。
官网参考:http://wiki.ros.org/Names
https://blog.csdn.net/jack_20/article/details/70746736
http://wiki.ros.org/roscpp/Overview/NodeHandles
全局名称
所有以”/”开头的计算图源名称都是全局名称。其实不管是相对名称还是私有名称,ROS在解析具体名称时都需要转换到全局名称才能明确确定(有点类似操作系统标识文件位置的绝对路径);
在定义ros::NodeHandle节点句柄对象时,如果没有传递任何参数,如下所示:
ros::NodeHandle nh;
此时使用该句柄的任何相对名称都默认直接在该相对名称前面加上”/”,使其成为全局名称,例如:
ros::Publisher objectPublisher_ = nh.advertise<std_msgs::Int8>("object",1);
由于名称object前面没有”/”,此时ROS在解析该名称的时候,则默认直接在前面加上”/”,使其成为全局名称,此时可以利用
rostopic list
发现,发布的话题名为"/object”
。
全局名称可以按照命名空间归类计算图源,如/a/b/c/d/e
也是一个有效的全局名称。
相对名称
凡是名称开头没有“/”的计算图源名称都是相对名称。相对名称本身不能完全确定它们自身所在的命名空间(有点类似操作系统标识文件位置的相对路径),需要在相对名称前面加上当前默认命名空间组成一个全局名称,才能明确标识计算图源。
ros::NodeHandle nh("my_namespace");
私有名称
以一个波浪符号(~)开始的计算图源名称为私有名称。私有名称也不能完全确定它们自身所在的命名空间,而是需要ROS客户端库将这个名称解析为一个全局名称。与相对名称使用默认命名空间来解析计算图源名称不同的是,私有名称使用它们的节点名称作为命名空间来解析。
如:
ros::init(argc, argv, "my_node_name");
ros::NodeHandle nodeHandle("~");
ros::NodeHandle nh2("~foo");
此时nodeHandle的命名空间为/my_node_name
,nh2的命名空间为/my_node_name/foo
。
launch中的命名空间
参考: https://github.com/micpalmia/youbot_ros_tools/wiki/Understanding-launch-and-namespaces
使用注意
在launch文件中也可以指定参数,此时参数的命名空间需要格外注意:命名空间由参数所在的位置决定。
如下所示,此时参数没有定义在任何节点域内,因为launch文件是可以一次性启动多个节点的,因此此时参数的默认命名空间为“/”,并不由任何节点名决定;
所以下图中产生的参数为”/vechicle_name"
如果改为下图形式,此时参数在node内部定义,为私有名称,此时参数的默认命名空间为"/<node_name>"
;
所以下图中产生的参数为"/ros_namespace_ne/vehicle_name"
。
注:作为节点元素的子集时,param 元素中给出的参数名总是被当做私有名称解析,无论它们是否以~或者/开始
在launch中使用参数的时候计算图源注意事项:
https://answers.ros.org/question/43001/setting-parameters-in-a-launch-file-does-not-appear-to-be-working/
待看:
http://durant35.github.io/2017/07/14/ROS_%3Carg%3E
%3Crosparam%3E/
https://answers.ros.org/question/12094/local-vs-global-parameters-in-a-launch-file/
https://blog.csdn.net/u014587147/article/details/75647002
https://www.cnblogs.com/zjiaxing/p/5541841.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/121301.html