一、在ROS底下使用.yaml文件配置参数
具体语句如下:
template<typename T>
T getParam(const string& name,const T& defaultValue) //This name must be namespace+parameter_name
{
T v;
if(ros::param::get(name,v)) //get parameter by name depend on ROS.
{
ROS_INFO_STREAM("Found parameter: "<<name<<",\tvalue: "<<v);
return v;
}
else
ROS_WARN_STREAM("Cannot find value for parameter: "<<name<<",\tassigning default: "<<defaultValue);
return defaultValue; //if the parameter haven't been set,it's value will return defaultValue.
}
//How use.
int main(int argc,char** argv)
{
ros::init(argc,argv,"readyaml");
ros::NodeHandle nh;
getParam<int>("readyaml/int",0);
getParam<float>("readyaml/float",0.5);
getParam<string>("readyaml/string","NotFound");
getParam<bool>("readyaml/bool",false);
return 0;
}
那么怎么设置参数?看代码。
<launch>
<node pkg="readyaml" type="readyaml" name="readyaml" clear_params="true" output="screen">
<!-- First way: direct set-->
<param name="int" value="32760"/>
<!-- Second way: use .yaml file-->
<rosparam file="$(find readyaml)/rosYaml.yaml"/>
</node>
</launch>
rosYaml.yaml文件里写的什么?
#parameter_name: value
string: HaveFound
float: 3.14159
bool: true
二、使用Ubuntu下的yaml-cpp