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", ... );
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号