在launch 参数配置中,分为有全局参数和局部参数(私有参数),两者参数的获取是不同的,参数示例如下:
<launch>
<!-- 全局参数 -->
<param name="param1" value="1"/>
<param name="param2" type="string" value="Hello param"/>
<node name="param_zpq" pkg="param_demo" type="param_zpq" output="screen">
<!-- 局部参数(私有参数) -->
<param name="param3" value="/dev/ttyusb"/>
</node>
</launch>
如何获取参数呢,如下:
#include "ros/ros.h"
int main(int argc,char** argv)
{
ros::init(argc, argv, "param_zpq");
ros::NodeHandle nh;
/* 私有句柄 */
ros::NodeHandle n("~");
int param1;
std::string param2,param3,param4;
ROS_INFO("=================loge1===============");
/*句柄nh 获取全局参数*/
bool get1 = nh.getParam("param1",param1);
if(get1)ROS_INFO("GET param1 %d",param1);
/*句柄nh 获取全局参数*/
bool get2 = nh.getParam("param2",param2);
if(get2)ROS_INFO("GET param2 %s",param2.c_str());
/*局部n 获取局部参数*/
bool get3 = n.getParam("param3",param3);
if(get2)ROS_INFO("GET param3 %s",param3.c_str());
/*如果想通过 全局句柄 nh 获取局部参数,只要在参数前添加node名即可*/
bool get4 = nh.getParam("/param_zpq/param3",param4);
if(get2)ROS_INFO("GET param4 %s",param4.c_str());
ros::Rate rate(10);
while(ros::ok()){
ROS_INFO("=================loge2===============");
ROS_INFO("param1 = %d",param1);
ROS_INFO("param2 = %s",param2.c_str());
ROS_INFO("param3 = %s",param3.c_str());
ROS_INFO("param4 = %s",param4.c_str());
ros::spinOnce();
rate.sleep();
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)