【ROS】不改变源码的方式调试参数——rosparam

    1先将某参数放到参数列表(参数服务器)中去。

            方法有:①launch文件里添加参数语句:

       如:

  <launch>
	<node name="icp" pkg="my_pcl_tutorial" type="icp" >
        </node>
   <param name="MaximumIterations" value="80"/>
   </launch>

       可否改变参数服务器里参数的值:是。

                            参数所在命名空间:全局。(想设为某命名空间的参数,可以改变paramname:参数名-->空间名/参数名;想放在节点的命名空间里,就将参数语句放在节点语句内,<node>前面。)

       又如:在launch里加载yaml文件,批量放参数。

<launch>
	<node name="icp" pkg="my_pcl_tutorial" type="icp" >
        </node>
        <rosparam command="load" file="$(find my_pcl_tutorial)/param/icp.yaml"/>
</launch>

       yaml文件格式:很简单-->参数名:值

                EuclideanFitnessEpsilon:  1
                MaximumIterations: 30 
                MaxCorrespondenceDistance: 1
                TransformationEpsilon: 1e-6 

       可否改变参数服务器里参数的值:是。 直接在yaml文件里改变参数值就可以了。                         

       参数所在命名空间:全局。(想设为某命名空间的参数,可以加一句ns="空间名"。如:

        <rosparam command="load" file="$(find my_pcl_tutorial)/param/icp.yaml" ns="icp"/>  )


                        ②在终端中使用rosparam set语句:

       如:

        rosparam  set  /EuclideanFitnessEpsilon  0.5  

       可否改变参数服务器里参数的值:是。                    
       参数所在命名空间:全局。(想设为某命名空间的参数,可以在改变paramname:参数名-->空间名/参数名)

       ③在源码(节点)中使用rosparam  set语句:

       注意这样的话,参数所在的命名空间就是节点的命名空间了。

 2在源文件(节点)里使用,从参数服务器中拿下来。

    方法有:①ros::param::get("frequency",f) 

                              frequency:参数名,f:参数变量。

                                ②使用句柄,ros::NodeHandle::getParam()

        比如:

      pn.getParam("int_param",num);

        如果获取参数失败,可以用以下设置默认参数的语句(这种方式也不能将参数放到服务器,读取不到的),

     n.param<float>("string_param", a, 123.0);
     或
         ros::param::param<std::string>("default_param", default_param, "default_value");

还有个私有参数私有空间的问题,还没太明白,先留着吧。






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值