zoukankan      html  css  js  c++  java
  • 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

     

     

     

  • 相关阅读:
    前端构建工具gulpjs的使用介绍及技巧
    mysql /*! 50100 ... */ 条件编译
    linux 硬连接与软连接
    Linux 数据流重定向
    倒排索引
    sed 常用的功能
    linux mysql安装
    mysql help
    linux 命令行选项
    mysql 主主复制的配置流程
  • 原文地址:https://www.cnblogs.com/long5683/p/10000197.html
Copyright © 2011-2022 走看看