<ROS> NodeHandle句柄
作者:jack_20
原文:https://blog.csdn.net/jack_20/article/details/70746736
1、句柄可以让你通过构造函数指定命名空间
ros::NodeHandle nh("my_namespace");
这使得使用该句柄的任何相对名字都是相对<node_namespace>/my_namespace,而不是只相对<node_namespace>
你也可以指定一个父句柄和追加的命名空间
ros::NodeHandle nh1("ns1");
ros::NodeHandle nh2(nh1,"ns2");
这将把nh2放入到<node_namespace>/ns1/ns2命名空间
2、也可以指定全局名字
ros::NodeHandle nh("/my_global_namespace");
这种做法并不推荐,因为这样会使得节点无法被放入别的命名空间。只是有时在代码中使用全局名字有用。
3、私有名字
使用私有名字比直接调用有私有名的句柄方法更有技巧,你可以在一个私有命名空间中直接创建一个新的句柄。
ros::NodeHandle nh("~my_private_namespace");
ros::Subscriber sub = nh.subscribe("my_private_topic",....);
以上例子会订阅<node_name>/my_private_namespace/my_private_topic
注意:理解的重点上文中红色标注的部分,node_namespace和node_name是两回事!
node_name = node_namespace + nodename
补充demo
// launch 文件中 ns=="node_namespace"
ros::init(argc, argv, "node_name"); // node name
ros::NodeHandle n; //n 命名空间为/node_namespace
ros::NodeHandle n1("sub"); // n1命名空间为/node_namespace/sub
ros::NodeHandle n2(n1,"sub2");// n2命名空间为/node_namespace/sub/sub2
ros::NodeHandle pn1("~"); //pn1 命名空间为/node_namespace/node_name
ros::NodeHandle pn2("~sub"); //pn2 命名空间为/node_namespace/node_name/sub
ros::NodeHandle pn3("~/sub"); //pn3 命名空间为/node_namespace/node_name/sub
ros::NodeHandle gn("/global"); // gn 命名空间为/global
<ROS> NodeHandle句柄的更多相关文章
- ROS节点的初始化及退出详解(ros::init、SIGINT、ros::ok、ros::NodeHandle
https://haoqchen.site/2018/04/28/ROS-node-init/ #include "ros/ros.h" #include <signal.h ...
- SLAM+语音机器人DIY系列:(二)ROS入门——5.编写简单的消息发布器和订阅器
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- ROS知识(9)----NodeHandle命令空间问题
一直被NodleHandle的构造函数的命名空间搞混淆了.例如: ros::NodeHandle node_private("~/"); ros::NodeHandle node_ ...
- 编写ros串口节点,使用官方serial包
参考http://www.roswiki.com/read.php?tid=557&fid=39 1.通过sudo apt-get install ros-<distro>-ser ...
- ROS笔记——创建简单的主题发布节点和主题订阅节点
在安装好ROS后,接着学习如何创建节点和节点之间的通信方式,以一个简单的主题发布节点和主题订阅节点说明. 节点是连接ROS网络等可执行文件,是实现某些功能的软件包,也是一个主要计算执行的进程. 一.创 ...
- ROS主题发布订阅
节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beg ...
- SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- SLAM+语音机器人DIY系列:(二)ROS入门——6.编写简单的service和client
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- ROS串口通信
身处机器人行业,不想一直只做低端的单片机控制,老是待在舒适区,所以一直都想学一下ROS系统,但看了几个月资料后,感觉还是云里雾里,似懂非懂,感念似乎都很清楚,但要实际去做,却又感觉无从下手. 于是想先 ...
随机推荐
- Log4net 配置文件组成
Example: <?xml version="1.0" encoding="utf-8" ?><configuration><l ...
- beifen
Comparison of Models for Predicting the Outcome of Craniocerebral Injury by Using Machine Learning ...
- spring cloud 工程构建
https://blog.csdn.net/zhou199252/article/details/80745151 https://blog.csdn.net/forezp/article/detai ...
- MySQL80修改密码
mysql> update user set password=password('123') where user='root' and host='localhost'; ERROR 106 ...
- openSUSE XFCE桌面 多媒体解码器安装
openSUSE15 leap 在终端命令行安装编解码器: 添加必要的软件源 zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_ ...
- (a ==1 && a== 2 && a==3) 有可能是 true 吗?
工作之余逛知乎的时候看到一个有意思的讨论,(a ==1 && a== 2 && a==3) 有可能是 true 吗?啊?一个变量同时满足三个条件?扯呢? 当然是我太天真 ...
- LSC问题(不连续问题)
转载:http://blog.csdn.net/v_JULY_v/article/details/6110269 本文是动态规划算法中,网上写得最好的一个之一.看完很容易理解.需要重点理解的部分,我会 ...
- 【算法导论】【排序】—— 计数排序(counting sort)
计数排序的特点: 需要额外的数组以存储: 中间过程数据(记为数组 C),数组 C 的下标是待排序序列的元素值,下标对应的值为出现的次数: 排序后的序列(记为 B),计数排序仅获取原始待排序序列的值,对 ...
- aiohttp AppRunner的用法
参考廖雪峰的aiohttp教程,会出现两个DeprecationWarning, loop argument is deprecated Application.make_handler(...) i ...
- Linux查询日志内容
1.查询日志中含有某个关键字的信息 cat app.log |grep 'error' 2.查询日志尾部最后10行的日志 tail -n 10 app.log 3.查询10行之后的所有日志 tail ...