• 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

     

     

     

  • 相关阅读:
    LeetCode 023 Merge k Sorted Lists
    LeetCode 022 Generate Parentheses
    LeetCode 020 Valid Parentheses
    LeetCode 019 Remove Nth Node From End of List
    LeetCode 018 4Sum
    LeetCode 017 Letter Combinations of a Phone Number
    Linux常用命令详解(3)
    Linux常用命令详解(2)
    Linux常用命令详解(1)
    部署cobbler服务器
  • 原文地址:https://www.cnblogs.com/long5683/p/10000197.html
Copyright © 2020-2023  润新知