wiki链接 :wiki.ros.org/roscpp/Overview/Parameter%20Server
ROS的参数服务器可以存储字符串,整型,浮点型,布尔型,列表,字典,iso8601数据,64基编码数据.字典数据要有字符串键.
roscpp的参数API支持所有这些,尽管在使用中常使用strings,integers,floats,booleans.XmlRpc::XmlRpcValue类实现了其它数据类型
roscpp有两类参数API,直接版本在ros::param名字空间下,句柄版本在ros::NodeHandle类下.
1.获取参数
从参数服务器内获取一个参数值.
a. ros::NodeHandle::getParam()方法
通过节点句柄取得参数与节点句柄的名字空间有关.
ros::NodeHandle nh;
std::string global_name, relative_name, default_param;
if (nh.getParam("/global_name", global_name))
{
...
}
if (nh.getParam("relative_name", relative_name))
{
...
}
// Default value version
nh.param("default_param", default_param, "default_value");
b.ros::param::get()方法
直接版本获取参数与节点的名字空间有关.
std::string global_name, relative_name, default_param;
if (ros::param::get("/global_name", global_name))
{
...
}
if (ros::param::get("relative_name", relative_name))
{
...
}
// Default value version
ros::param::param("default_param", default_param, "default_value");
2.设置参数
句柄方式
ros::NodeHandle nh;
nh.setParam("/global_param", 5);
nh.setParam("relative_param", "my_string");
nh.setParam("bool_param", false);
直接方式
ros::param::set("/global_param", 5);
ros::param::set("relative_param", "my_string");
ros::param::set("bool_param", false);
3.检查参数是否存在
句柄方式: ros::NodeHandle::hasParam()
直接方式: ros::param::has()
4.删除参数
ros::NodeHandle::deleteParam()
ros::param::del()
5.寻找参数
ros::NodeHandle::searchParam("bar",key)
ros::param::serch("bar",key)