版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/u012700322/article/details/52244329
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
<div class="htmledit_views">
今天想把写的坐标转换package,改写成在launch文件中传入参数。中间遇到了一个小问题,特此记录一下。
- ros::init(argc, argv, "sub");
- ros::NodeHandle n;
- ros::NodeHandle pn("~");
- double x;
- pn.param("/x",p_x, 0.3);
- ros::init(argc, argv, "sub");
- ros::NodeHandle n;
- //ros::NodeHandle pn("~");
- double x;
- n.param("x",p_x, 0.3);
以上两种写法都是正确的。
- ros::init(argc, argv, "sub");
- ros::NodeHandle n;
- ros::NodeHandle pn("~");
- double x;
- pn.param("x",p_x, 0.3);
但是这种写法是错误的。
这是为什么呢?
这就涉及到NodeHandle的参数范围问题。如下:
- ros::init(argc, argv, "my_node_name");
- ros::NodeHandle nh1("~");
- ros::NodeHandle nh2("~foo");
nh1的命名空间(namespace)是 /my_node_name,而nh2的namespace是 /my_node_name/foo注:
在ROS中NodeHandle可以参考:
http://wiki.ros.org/roscpp_tutorials/Tutorials/AccessingPrivateNamesWithNodeHandle
http://wiki.ros.org/roscpp_tutorials/Tutorials/Parameters
</div>
</div>