wiki链接:http://wiki.ros.org/roscpp/Overview/NodeHandles
NodeHandles节点句柄 API: http://docs.ros.org/api/roscpp/html/classros_1_1NodeHandle.html
关于节点的启动与关闭,已经在之前的博客中学习记录过了(http://wiki.ros.org/roscpp/Overview/NodeHandles),
下面来继续学习ROS提供的节点句柄相关知识
ros::NodeHandle类有两个作用:1.它在roscpp程序内提供了一种RAII(Resource Acquisition Is Initialization)类型式启动和关闭内部节点的方法.
2.它提供了名字空间解决方案中额外一层,使对于子部件的写操作更加简单.
1.自动地启动和关闭
在节点初始化和关闭一节中,使用ros::NodeHandle管理节点的内部引用,使启动和关闭一个节点变得简单.在创建时,如果一个内部节点没有被启动,节点句柄将启动该节点.一旦所有的节点句柄实例被销毁,那么节点将被自动关闭.
2.名字空间
节点句柄允许给构造器明确一个名字空间ros::NodeHandle nh("my_namespace");
这使节点拥有相对名字<node_namespace>/my_namespace,而不仅仅是<node_namespace>
也可以给节点句柄明确一个父节点句柄和一个紧跟的名字空间
ros::NodeHandle nh1("ns1");
ros::NodeHandle nh2(nh1, "ns2");
这使节点句柄nh2进入<node_namespace>/nh1/nh2名字空间下
全局名字空间
ros::NodeHandle nh("/my_global_namespace");