ros::NodeHandle命名

本文详细解析了ROS中NodeHandle的参数范围问题,通过对比不同写法的正确性和错误性,帮助开发者理解如何在launch文件中正确使用参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版权声明:本文为博主原创文章,未经博主允许不得转载。 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文件中传入参数。中间遇到了一个小问题,特此记录一下。


  1. ros::init(argc, argv, "sub");
  2. ros::NodeHandle n;
  3. ros::NodeHandle pn("~");
  4. double x;
  5. pn.param("/x",p_x, 0.3);

  1. ros::init(argc, argv, "sub");
  2. ros::NodeHandle n;
  3. //ros::NodeHandle pn("~");
  4. double x;
  5. n.param("x",p_x, 0.3);

以上两种写法都是正确的。

  1. ros::init(argc, argv, "sub");
  2. ros::NodeHandle n;
  3. ros::NodeHandle pn("~");
  4. double x;
  5. pn.param("x",p_x, 0.3);

但是这种写法是错误的。

这是为什么呢?


这就涉及到NodeHandle的参数范围问题。如下:

  1. ros::init(argc, argv, "my_node_name");
  2. ros::NodeHandle nh1("~");
  3. 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值