ros::NodeHandle nh;
std::string global_name, relative_name, default_param;
if (nh.getParam("/global_name", global_name))
{
// do something
}
if (nh.getParam("relative_name", relative_name))
{
// do something
}
// Default value version
nh.param<std::string>("default_param", default_param, "default_value");
ros::param::get()
通过“bare”版本检索的参数相对于节点的命名空间进行解析。
std::string global_name, relative_name, default_param;
if (ros::param::get("/global_name", global_name))
{
// do something
}
if (ros::param::get("relative_name", relative_name))
{
// do something
}
// Default value version
ros::param::param<std::string>("default_param", default_param, "default_value");
// Create a ROS node handle
ros::NodeHandle nh;
// Construct a map of strings
std::map<std::string,std::string> map_s, map_s2;
map_s["a"] = "foo";
map_s["b"] = "bar";
map_s["c"] = "baz";
// Set and get a map of strings
nh.setParam("my_string_map", map_s);
nh.getParam("my_string_map", map_s2);
// Sum a list of doubles from the parameter server
std::vector<double> my_double_list;
double sum = 0;
nh.getParam("my_double_list", my_double_list);
for(unsigned i=0; i < my_double_list.size(); i++) {
sum += my_double_list[i];
}
在 ROS Fuerte 和更早版本上,参数服务器上的列表只能通过使用 Xml Rpc::Xml Rpc Value 类来检索,该类可以表示参数服务器上的任何类型。这在以后的 ROS 版本中仍然是有效的方法。
XmlRpc::XmlRpcValue my_list;
nh.getParam("my_list", my_list);
ROS_ASSERT(my_list.getType() == XmlRpc::XmlRpcValue::TypeArray);
for (int32_t i = 0; i < my_list.size(); ++i)
{
ROS_ASSERT(my_list[i].getType() == XmlRpc::XmlRpcValue::TypeDouble);
sum += static_cast<double>(my_list[i]);
}
Reference
[roscpp/Overview/Parameter Server - ROS Wiki](http://wiki.ros.org/roscpp/Overview/Parameter Server)