From b05d3980dee39d161640fe9de9f69e39dfb92236 Mon Sep 17 00:00:00 2001 From: Alopez <alopez@iri.upc.edu> Date: Thu, 15 Dec 2022 10:24:57 +0100 Subject: [PATCH] Adapted toreceive an empty name --- include/iri_nav_module/nav_module.h | 33 ++++++++++++-------- src/iri_nav_module/dyn_params.py | 47 ++++++++++++++++++----------- 2 files changed, 50 insertions(+), 30 deletions(-) diff --git a/include/iri_nav_module/nav_module.h b/include/iri_nav_module/nav_module.h index a15258e..c867aa6 100644 --- a/include/iri_nav_module/nav_module.h +++ b/include/iri_nav_module/nav_module.h @@ -1,6 +1,8 @@ #ifndef _NAV_MODULE_H #define _NAV_MODULE_H +#include<ctype.h> + // IRI ROS headers #include <iri_ros_tools/module.h> #include <iri_ros_tools/module_action.h> @@ -847,56 +849,63 @@ class CNavModule : public CModule<ModuleCfg> params=ModuleCfg::__getParamDescriptions__(); - CModule<ModuleCfg>::dynamic_reconfigure(config,name+"_module"); - this->move_base_action.dynamic_reconfigure(config,name+"_move_base"); - this->make_plan_service.dynamic_reconfigure(config,name+"_make_plan"); - this->clear_costmaps.dynamic_reconfigure(config,name+"_clear_costmap"); + std::string prefix; + + if (name.length() == 0) + prefix = ""; + else + prefix = name + "_"; + + CModule<ModuleCfg>::dynamic_reconfigure(config,prefix+"module"); + this->move_base_action.dynamic_reconfigure(config,prefix+"move_base"); + this->make_plan_service.dynamic_reconfigure(config,prefix+"make_plan"); + this->clear_costmaps.dynamic_reconfigure(config,prefix+"clear_costmap"); for(typename std::vector<typename ModuleCfg::AbstractParamDescriptionConstPtr>::iterator param=params.begin();param!=params.end();param++) { - if((*param)->name==(name+"_move_base_goal_frame_id")) + if((*param)->name==(prefix+"move_base_goal_frame_id")) { (*param)->getValue(config,value); if(value.type()==typeid(std::string)) this->goal_frame_id=boost::any_cast<std::string &>(value); } - else if((*param)->name==(name+"_move_base_global_frame_id")) + else if((*param)->name==(prefix+"move_base_global_frame_id")) { (*param)->getValue(config,value); if(value.type()==typeid(std::string)) this->global_frame_id=boost::any_cast<std::string &>(value); } - else if((*param)->name==(name+"_move_base_robot_frame_id")) + else if((*param)->name==(prefix+"move_base_robot_frame_id")) { (*param)->getValue(config,value); if(value.type()==typeid(std::string)) this->robot_frame_id=boost::any_cast<std::string &>(value); } - else if((*param)->name==(name+"_move_base_cancel_prev")) + else if((*param)->name==(prefix+"move_base_cancel_prev")) { (*param)->getValue(config,value); if(value.type()==typeid(bool)) this->move_base_cancel_prev=boost::any_cast<bool &>(value); } - else if((*param)->name==(name+"_odom_watchdog_time_s")) + else if((*param)->name==(prefix+"odom_watchdog_time_s")) { (*param)->getValue(config,value); if(value.type()==typeid(double)) this->odom_watchdog_time_s=boost::any_cast<double &>(value); } - else if((*param)->name==(name+"_tf_timeout_time_s")) + else if((*param)->name==(prefix+"tf_timeout_time_s")) { (*param)->getValue(config,value); if(value.type()==typeid(double)) this->tf_timeout_time_s=boost::any_cast<double &>(value); } - else if((*param)->name==(name+"_clear_costmap_auto_clear_rate_hz")) + else if((*param)->name==(prefix+"clear_costmap_auto_clear_rate_hz")) { (*param)->getValue(config,value); if(value.type()==typeid(double)) this->auto_clear_rate_hz=boost::any_cast<double &>(value); } - else if((*param)->name==(name+"_clear_costmap_enable_auto_clear")) + else if((*param)->name==(prefix+"clear_costmap_enable_auto_clear")) { (*param)->getValue(config,value); if(value.type()==typeid(bool)) diff --git a/src/iri_nav_module/dyn_params.py b/src/iri_nav_module/dyn_params.py index 9deeb34..ded8131 100644 --- a/src/iri_nav_module/dyn_params.py +++ b/src/iri_nav_module/dyn_params.py @@ -4,36 +4,47 @@ from iri_ros_tools.dyn_params import add_module_service_params,add_module_action def add_nav_module_params(gen,name): - new_group = gen.add_group(name) + if len(name) == 0: + new_group = gen.add_group("nav") + prefix = "" + else: + new_group = gen.add_group(name) + prefix = name + "_" + - odom = new_group.add_group(name+"_Odometry") - tf = new_group.add_group(name+"_TF") + odom = new_group.add_group(prefix+"Odometry") + tf = new_group.add_group(prefix+"TF") - add_module_params(new_group,name+"_module") + add_module_params(new_group,prefix+"module") - move_base_action=add_module_action_params(new_group,name+"_move_base") - move_base_action.add(name+"_move_base_goal_frame_id",str_t, 0, "Reference frame of the position goals","map") - move_base_action.add(name+"_move_base_global_frame_id",str_t, 0, "Global reference frame of the TF","map") - move_base_action.add(name+"_move_base_robot_frame_id",str_t, 0, "Main reference frame of the robot","map") - move_base_action.add(name+"_move_base_cancel_prev", bool_t, 0, "Cancel previous action", True) + move_base_action=add_module_action_params(new_group,prefix+"move_base") + move_base_action.add(prefix+"move_base_goal_frame_id",str_t, 0, "Reference frame of the position goals","map") + move_base_action.add(prefix+"move_base_global_frame_id",str_t, 0, "Global reference frame of the TF","map") + move_base_action.add(prefix+"move_base_robot_frame_id",str_t, 0, "Main reference frame of the robot","map") + move_base_action.add(prefix+"move_base_cancel_prev", bool_t, 0, "Cancel previous action", True) - odom.add(name+"_odom_watchdog_time_s", double_t, 0, "Maximum time between odom messages",1, 0.01, 50) + odom.add(prefix+"odom_watchdog_time_s", double_t, 0, "Maximum time between odom messages",1, 0.01, 50) - tf.add(name+"_tf_timeout_time_s", double_t, 0, "Maximum time to wait for transform",5, 0.01, 50) + tf.add(prefix+"tf_timeout_time_s", double_t, 0, "Maximum time to wait for transform",5, 0.01, 50) - costmap=add_module_service_params(new_group,name+"_clear_costmap") - costmap.add(name+"_clear_costmap_enable_auto_clear",bool_t, 0, "Periodically clear the costmaps",False) - costmap.add(name+"_clear_costmap_auto_clear_rate_hz",double_t, 0, "Clear costmaps period", 0.1, 0.01, 1.0) + costmap=add_module_service_params(new_group,prefix+"clear_costmap") + costmap.add(prefix+"clear_costmap_enable_auto_clear",bool_t, 0, "Periodically clear the costmaps",False) + costmap.add(prefix+"clear_costmap_auto_clear_rate_hz",double_t, 0, "Clear costmaps period", 0.1, 0.01, 1.0) - make_plan=add_module_service_params(new_group,name+"_make_plan") + make_plan=add_module_service_params(new_group,prefix+"make_plan") return new_group def add_opendrive_gp_module_params(gen,name): - new_group = gen.add_group(name) + if len(name) == 0: + prefix = "opendrive_gp" + else: + prefix = name - add_module_service_params(new_group,name+"_get_map") - add_module_service_params(new_group,name+"_get_nodes") + new_group = gen.add_group(prefix) + + add_module_service_params(new_group,prefix+"_get_map") + add_module_service_params(new_group,prefix+"_get_nodes") return new_group -- GitLab