ROS句柄NodeHandle的命名空间

编程入门 行业动态 更新时间:2024-10-06 06:45:42

ROS<a href=https://www.elefans.com/category/jswz/34/1771366.html style=句柄NodeHandle的命名空间"/>

ROS句柄NodeHandle的命名空间

参考:
.5.html

1.NodeHandle

ros::NodeHandle对象,也就是节点的句柄,它可以用来创建PublisherSubscriber以及做其他事情。

句柄(Handle)这个概念可以理解为一个“把手”,你握住了门把手,就可以很容易把整扇门拉开,而不必关心门是什么样子。NodeHandle就是对节点资源的描述,有了它你就可以操作这个节点了,比如为程序提供服务、监听某个topic上的消息、访问和修改param等等。

2.NodeHandle的命名空间的影响

2.1.对topic的影响

2.2.对param的影响

在实际的项目中,实例化句柄时,经常会看到两种不同的写法 ros::NodeHandle n; ros::NodeHandle nh("~"); 这两种写法有什么不同呢?以本教学报的name_demo为例。在本节launch文件夹的demo.launch定义两个参数,一个全局serial 他的数值是5,一个是局部的serial,他的数值是10.

<launch><!--全局参数serial--><param name="serial" value="5" /><node name="name_demo" pkg="name_demo" type="name_demo"output="screen"><!--局部参数serial--><param name="serial" value="10" /></node>
</launch>

name_demo.cpp中,我们分别尝试了,利用全局命名空间句柄提取全局的param和局部的param,以及在局部命名空间下的句柄提取全局的param和局部的param,详细的代码如下:

#include <ros/ros.h>
int main(int argc, char* argv[])
{int serial_number = -1;//serial_number初始化ros::init(argc, argv, "name_demo");//node初始化/*创建命名空间*///n 是全局命名空间ros::NodeHandle n;//nh 是局部命名空间ros::NodeHandle nh("~");/*全局命名空间下的Param*/ROS_INFO("global namespace");//提取全局命名空间下的参数serialn.getParam("serial", serial_number);ROS_INFO("global_Serial was %d", serial_number);//提取局部命名空间下的参数serialn.getParam("name_demo/serial", serial_number);//在全局命名空间下,要提取局部命名空间下的参数,需要添加node nameROS_INFO("global_to_local_Serial was %d", serial_number);/*局部命名空间下的Param*/ROS_INFO("local namespace");//提取局部命名空间下的参数serialnh.getParam("serial", serial_number);ROS_INFO("local_Serial was %d", serial_number);//提取全局命名空间下的参数serialnh.getParam("/serial", serial_number);//在局部命名空间下,要提取全局命名空间下的参数,需要添加“/”ROS_INFO("local_to_global_Serial was %d", serial_number);ros::spin();return 0;
}

最后的结果:

[ INFO] [1525095241.802257811]: global namespace
[ INFO] [1525095241.803512501]: global_Serial was 5
[ INFO] [1525095241.804515959]: global_to_local_Serial was 10
[ INFO] [1525095241.804550167]: local namespace
[ INFO] [1525095241.805126562]: local_Serial was 10
[ INFO] [1525095241.806137701]: local_to_global_Serial was 5

更多推荐

ROS句柄NodeHandle的命名空间

本文发布于:2024-03-09 03:17:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:句柄   空间   ROS   NodeHandle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!