简体   繁体   English

如何有效地在ROS中加载大量参数?

[英]How to efficiently load large amount of parameters in ROS?

What is the better way to load many parameters in ROS compared to: 与以下方法相比,在ROS中加载许多参数的更好方法是:

double default_maxvel_xy = 3;
double default_maxvel_z = 1.5;
double default_maxvel_c = 1;
double default_maxacc_xy = 2;
double default_maxacc_z = 1;
double default_maxacc_c = 1;
double default_maxjerk_xy = 1;
double default_maxjerk_z = 1;
double default_maxjerk_c = 1;
n.param<double>("default_maxvel_xy", default_maxvel_xy, 3);
n.param<double>("default_maxvel_z", default_maxvel_z, 1.5);
n.param<double>("default_maxvel_c", default_maxvel_c, 1);
n.param<double>("default_maxacc_xy", default_maxacc_xy, 2);
n.param<double>("default_maxacc_z", default_maxacc_z, 1);
n.param<double>("default_maxacc_c", default_maxacc_c, 1);
n.param<double>("default_maxjerk_xy", default_maxjerk_xy, 1);
n.param<double>("default_maxjerk_z", default_maxjerk_z, 1);
n.param<double>("default_maxjerk_c", default_maxjerk_c, 1);

m_waypoint.max_dynamics.vel_max.linear.x = default_maxvel_xy;
m_waypoint.max_dynamics.vel_max.linear.y = default_maxvel_xy;
m_waypoint.max_dynamics.vel_max.linear.z = default_maxvel_z;
m_waypoint.max_dynamics.vel_max.angular.x = default_maxvel_c;
m_waypoint.max_dynamics.vel_max.angular.y = default_maxvel_c;
m_waypoint.max_dynamics.vel_max.angular.z = default_maxvel_c;

m_waypoint.max_dynamics.acc_max.linear.x = default_maxacc_xy;
m_waypoint.max_dynamics.acc_max.linear.y = default_maxacc_xy;
m_waypoint.max_dynamics.acc_max.linear.z = default_maxacc_z;
m_waypoint.max_dynamics.acc_max.angular.x = default_maxacc_c;
m_waypoint.max_dynamics.acc_max.angular.y = default_maxacc_c;
m_waypoint.max_dynamics.acc_max.angular.z = default_maxacc_c;

m_waypoint.max_dynamics.jerk_max.linear.x = default_maxjerk_xy;
m_waypoint.max_dynamics.jerk_max.linear.y = default_maxjerk_xy;
m_waypoint.max_dynamics.jerk_max.linear.z = default_maxjerk_z;
m_waypoint.max_dynamics.jerk_max.angular.x = default_maxjerk_c;
m_waypoint.max_dynamics.jerk_max.angular.y = default_maxjerk_c;
m_waypoint.max_dynamics.jerk_max.angular.z = default_maxjerk_c;

where it is just too many codes and prone to error. 那里的代码太多,容易出错。 Can I some how create a custom type in yaml and load it as a whole? 我可以在Yaml中创建自定义类型并将其作为整体加载吗?

Dictionary (in Python meaning) can be loaded as map, eg map. 字典(在Python中含义)可以作为地图(例如map)加载。 List (in Python meaning) can be loaded as vector, eg map. 列表(在Python中是含义)可以作为矢量加载,例如map。

Example: 例:

std::map<std::string, double> parameter_map;
ros::param::get("~my_parameter_map", parameter_map);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM