Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef NAV_2D_UTILS_PARAMETERS_H
00036 #define NAV_2D_UTILS_PARAMETERS_H
00037
00038 #include <ros/ros.h>
00039 #include <string>
00040
00041 namespace nav_2d_utils
00042 {
00043
00055 template<class param_t>
00056 param_t searchAndGetParam(const ros::NodeHandle& nh, const std::string& param_name, const param_t& default_value)
00057 {
00058 std::string resolved_name;
00059 if (nh.searchParam(param_name, resolved_name))
00060 {
00061 param_t value = default_value;
00062 nh.param(resolved_name, value, default_value);
00063 return value;
00064 }
00065 return default_value;
00066 }
00067
00076 template<class param_t>
00077 param_t loadParameterWithDeprecation(const ros::NodeHandle& nh, const std::string current_name,
00078 const std::string old_name, const param_t& default_value)
00079 {
00080 param_t value;
00081 if (nh.hasParam(current_name))
00082 {
00083 nh.getParam(current_name, value);
00084 return value;
00085 }
00086 if (nh.hasParam(old_name))
00087 {
00088 ROS_WARN("Parameter %s is deprecated. Please use the name %s instead.", old_name.c_str(), current_name.c_str());
00089 nh.getParam(old_name, value);
00090 return value;
00091 }
00092 return default_value;
00093 }
00094
00101 template<class param_t>
00102 void moveDeprecatedParameter(const ros::NodeHandle& nh, const std::string current_name, const std::string old_name)
00103 {
00104 if (!nh.hasParam(old_name)) return;
00105
00106 param_t value;
00107 ROS_WARN("Parameter %s is deprecated. Please use the name %s instead.", old_name.c_str(), current_name.c_str());
00108 nh.getParam(old_name, value);
00109 nh.setParam(current_name, value);
00110 }
00111
00125 template<class param_t>
00126 void moveParameter(const ros::NodeHandle& nh, std::string old_name,
00127 std::string current_name, param_t default_value, bool should_delete = true)
00128 {
00129 if (nh.hasParam(current_name))
00130 {
00131 if (should_delete)
00132 nh.deleteParam(old_name);
00133 return;
00134 }
00135 XmlRpc::XmlRpcValue value;
00136 if (nh.hasParam(old_name))
00137 {
00138 nh.getParam(old_name, value);
00139 if (should_delete) nh.deleteParam(old_name);
00140 }
00141 else
00142 value = default_value;
00143
00144 nh.setParam(current_name, value);
00145 }
00146
00147
00148 }
00149
00150 #endif // NAV_2D_UTILS_PARAMETERS_H