< >
Home » ROS与C++入门教程 » ROS与C++入门教程-访问NodeHandle类的私有名称

ROS与C++入门教程-访问NodeHandle类的私有名称

ROS与C++入门教程-访问NodeHandle类的私有名称

说明:

  • 介绍如何访问NodeHandle类的私有名称

为什么不仅仅是~name

  • 如果NodeHandle创建时候有自己的命名空间,则访问私有名称就会有些麻烦。
  • 代码:
ros::init(argc, argv, "my_node_name");
ros::NodeHandle nh("/my_node_handle_namespace");
  • 那私有名称的如何求解?一些可选如:

    • /my_node_handle_namespace/my_node_name/name
    • my_node_name/my_node_handle_namespace/name
    • /my_node_handle_namespace/name
    • Something else entirely
  • 因为这个原因,NodeHandle不允许直接通过私有名称作为参数传递或用nodehandle的构造函数作为参数。

访问私有名称

  • 解决方案就是在实例化NodeHandle时候使用私有名称作为工作空间。
ros::init(argc, argv, "my_node_name");
ros::NodeHandle nh1("~");
ros::NodeHandle nh2("~foo");
  • nh1的命名空间是 /my_node_name, and nh2的命名空间是/my_node_name/foo.
  • 下面的访问:
ros::NodeHandle nh;
nh.getParam("~name", ... );
  • 可替换成:
ros::NodeHandle nh("~");
nh.getParam("name", ... );

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ROS与C++入门教程