NodeHandles
os::NodeHandle类有两个作用:
第一、它在roscpp程序内提供了一种RAII(Resource Acquisition Is Initialization)类型式启动和关闭内部节点的方法.
第二、它提供了名字空间解决方案中额外一层,使对于子部件的写操作更加简单.
1、自动地启动和关闭
在节点初始化和关闭一节中,使用ros::NodeHandle管理节点的内部引用,使启动和关闭一个节点变得简单.
在创建时,如果一个内部节点没有被启动,节点句柄将启动该节点.一旦所有的节点句柄实例被销毁,那么节点将被自动关闭.
2、命名空间
节点句柄允许给构造器明确一个命名空间
ros::NodeHandle nh("my_namespace");
这使节点拥有相对命名<node_namespace>/my_namespace,而不仅仅是<node_namespace>
也可以给节点句柄明确一个父节点句柄和一个紧跟的命名空间
ros::NodeHandle nh1("ns1");//ns1=namespace1
ros::NodeHandle nh2(nh1, "ns2");//nh1下的namespace2
这使节点句柄nh2进入<node_namespace>/nh1/nh2命名空间下
全局命名
ros::NodeHandle nh("/my_global_namespace");
一般不鼓励这样做,因为它可以导致节点被推入命名空间(例如:roslaunch),然而,在代码中使用全局名称时会非常有用。
局部命名
ros::NodeHandle nh("~my_private_namespace");
ros::Subscriber sub = nh.subscribe("my_private_topic", ...);
上面的例子将订阅<node_name>/my_private_namespace/my_private_topic
NodeHandles的更多相关文章
- ROS学习笔记(二) # ROS NodeHandles
1. 自动启动和关闭 ros::NodeHandle nh: 这段代码执行之后,如果内部节点还没有启动,ros::NodeHandle 会启动这个节点:一旦所有的 ros::NodeHandle 实例 ...
- ROS主题发布订阅
节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beg ...
- 用C++写一个简单的发布者
节点是一个可执行程序,它连接到了ROS的网络系统中.我们将会创建一个发布者,也就是说话者节点,它将会持续的广播一个信息. 改变目录到之前所建立的那个包下: cd ~/catkin_ws/src/beg ...
- Writing a Simple Publisher and Subscriber
用c++实现一个publisher/subscriber publisher #include "ros/ros.h" #include "std_msgs/String ...
- ROS与C++
构建工作空间 catkin_make 构建Catkin包 catkin_create_pkg # This is an example, do not try to run this # catkin ...
- ROS 创建服务和请求
教程 维基 http://wiki.ros.org/cn/ROS/Tutorials 快速过程 创建包 $ cd ~/catkin_ws $ mkdir ~/catkin_ws/src $ cd ~/ ...
- ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)
一.创建发布器节点 1 节点功能: 不断的在ROS网络中广播消息 2 创建节点 (1)打开工作空间目录 cd ~/catkin_ws/src/beginner_tutorials 创建一个发布器节点( ...
- ROS教程
Learning ROS 学习ROS Depending on your learning style and preferences, you can take two approaches to ...
- 用C++编写发布器和订阅器节点
1.转移到之前教程在catkin工作空间所创建的package路径下: $ roscd package_name/ 例子:$ roscd practice/2.在package路径下创建src目录: ...
随机推荐
- C#里面的事物回滚,解决同步数据插入时出现重复数据
什么是事物回滚: 举个栗子,你在你家的银行分行取钱,取完钱数据要同步,而且可能每个分行都有一个存储这些数据的数据库,分行的这些 存取的记录都需要实时同步,如果你取完500刚好断电了,好嘛,分行可能刚记 ...
- python-桥接模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 有些类在功能设计上要求,自身包含两个或两个以上变化的因素,即该类在二维或者多维上 ...
- 排序算法(8)--Merge Sorting--归并排序--Merge sort--归并排序
1.基本思想 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序 ...
- WeUI移动页面实现时间选择器(年-月-日-时-分)
在做微信公众号的时候,使用的WeUI样式,有一个需求是用户选择一个预约时间,需要年月日并精确到小时和分钟. 但是WeUI的picker组件不支持直接显示5列,根据WeUI.js作者的建议,是将日期和时 ...
- 如何用JS获取页面上的所有标签
最近忙的一匹,忙着大保健,都来不及写博客,今天特意抽出点时间来写一写 前两天看到一个题,是问如何从页面上获取所有的标签的并查看他们的数量,感觉还是有点意思的,所以给大家来搞一下子 我们先来捋捋思路,那 ...
- 有关正则表达式的Js方法(replace)
整理一下最近常用的几个有关正则的js方法 replace 语法:stringObject.replace(regexp/substr,replacement) 用法1 const str='abc13 ...
- 如何在Vue中建立全局引用或者全局命令
1 一般在vue中,有很多vue组件,这些组件每个都是一个文件.都可能需要引用到相同模块(或者插件).我们不想每个文件都import 一次模块. 如果是基于vue.js编写的插件我们可以用 Vue.u ...
- tilestache
pip install tilestache -i https://mirrors.ustc.edu.cn/pypi/web/simple python C:/Python27/ArcGIS10.4/ ...
- SQLServer 常见SQL函数
SQL Server SQL函数 by:授客 QQ:1033553122 字符函数 日期函数 数学函数 系统函数
- 7.打开文件、文件读写操作、with方式、文件常用函数
打开文件: 在python3中,打开文件的函数是: open(file, mode='r', buffering=None, encoding=None, errors=None, newline=N ...