ROS : 参数服务器之动态调参(dynamic_reconfigure)

本文介绍了ROS中的动态参数调整工具dynamic_reconfigure,它允许在不重启节点的情况下更改参数。内容包括dynamic_reconfigure的工作原理,以及如何通过dynparam命令行工具进行动态调参,如列出可调参节点、获取和设置节点配置等。同时,文章还展示了在C++程序中如何使用dynamic_reconfigure来实现动态调节节点参数。
摘要由CSDN通过智能技术生成

参数服务器实现的功能:修改参数后,不需要重新编译,节点启动时生效;

动态调参实现的功能:修改参数后,不需要重新编译,无需重新启动节点;

这个一元堆栈包含dynamic_reconfigure包,它提供了一种方法,可以在任何时候更改节点参数,而无需重新启动节点。

目前,dynamic_reconfigure的重点是提供一种标准方法,将节点参数的子集公开给外部重新配置。客户机程序,例如GUIs,可以查询节点的可重构参数集,包括它们的名称、类型和范围,并向用户提供定制的接口。这对于硬件驱动程序特别有用,但具有更广泛的适用性。

 

源代码: git https://github.com/ros/dynamic_reconfigure.git (branch: master)

 

第一部分:动态调参的应用

1.dynparam命令行工具

dynparam工具支持节点的命令行重新配置,以及将它们的配置加载和转储到文件中。要运行dynparam,输入:

给下列程序添加注释:void DWAPlannerROS::initialize( std::string name, tf2_ros::Buffer* tf, costmap_2d::Costmap2DROS* costmap_ros) { if (! isInitialized()) { ros::NodeHandle private_nh("~/" + name); g_plan_pub_ = private_nh.advertise<nav_msgs::Path>("global_plan", 1); l_plan_pub_ = private_nh.advertise<nav_msgs::Path>("local_plan", 1); tf_ = tf; costmap_ros_ = costmap_ros; costmap_ros_->getRobotPose(current_pose_); // make sure to update the costmap we'll use for this cycle costmap_2d::Costmap2D* costmap = costmap_ros_->getCostmap(); planner_util_.initialize(tf, costmap, costmap_ros_->getGlobalFrameID()); //create the actual planner that we'll use.. it'll configure itself from the parameter server dp_ = boost::shared_ptr<DWAPlanner>(new DWAPlanner(name, &planner_util_)); if( private_nh.getParam( "odom_topic", odom_topic_ )) { odom_helper_.setOdomTopic( odom_topic_ ); } initialized_ = true; // Warn about deprecated parameters -- remove this block in N-turtle nav_core::warnRenamedParameter(private_nh, "max_vel_trans", "max_trans_vel"); nav_core::warnRenamedParameter(private_nh, "min_vel_trans", "min_trans_vel"); nav_core::warnRenamedParameter(private_nh, "max_vel_theta", "max_rot_vel"); nav_core::warnRenamedParameter(private_nh, "min_vel_theta", "min_rot_vel"); nav_core::warnRenamedParameter(private_nh, "acc_lim_trans", "acc_limit_trans"); nav_core::warnRenamedParameter(private_nh, "theta_stopped_vel", "rot_stopped_vel"); dsrv_ = new dynamic_reconfigure::Server<DWAPlannerConfig>(private_nh); dynamic_reconfigure::Server<DWAPlannerConfig>::CallbackType cb = boost::bind(&DWAPlannerROS::reconfigureCB, this, _1, 2); dsrv->setCallback(cb); } else{ ROS_WARN("This planner has already been initialized, doing nothing."); } }
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值