跟着阿杰slam 入门学习--DWA规划器
一、什么是DWA算法?
DWA(Dynamic Window Approach,动态窗口法)是一种经典的局部路径规划算法,专为移动机器人动态避障设计。其核心思想是通过在当前速度空间内动态生成速度窗口,评估可行轨迹的安全性、朝向目标性和速度效率,最终选择最优运动指令。
简单来说,给定机器人起点和目标点,机器人会在当下判断“最合适”的线速度与角速度(v,ω)去移动,躲避障碍物并最终到达目标点。注意与全局规划不同的是,DWA算法是局部规划器,只能规划出一定时间内的路径。
参考原文链接:https://blog.csdn.net/m0_46578404/article/details/147053201
窗口:除了碰到障碍物以外的每个轨迹以及在轨迹上可能的速度变化
DWA:从可能的窗口中挑选出最合适的那条,按照它驱动机器人移动
挑选标准:
1.过程:实际运动轨迹与全局规划轨迹贴合程度
2.目标:与目标点距离
3.风险:与障碍物距离
关系图:
全局规划器(Global Planner)
└── 局部规划器(Local Planner / Local Trajectory Planner)
├── DWA(Dynamic Window Approach)
├── TEB(Timed-Elastic-Band)
├── MPC(Model Predictive Control)
├── EBand(Elastic Band)
└── 其他采样/优化类算法
在 ROS 的 move_base 框架里,“local planner” 只是一个插件接口;DWA、TEB、MPC 等都实现该接口,从而被 move_base 调用。只要在 move_base 参数里把 base_local_planner 设为对应的插件名,就可以一键切换不同局部规划器,其余流程(接收全局路径、发布 cmd_vel、与代价地图交互)完全不变。

<param name="base_local_planner" value="dwa_local_planner/DWAPlannerROS" />
<rosparam file="$(find wpb_home_tutorials)/nav_lidar/dwa_local_planner_params.yaml" command="load" />

参数:

调参工具rqt_reconfigure:
rosrun rqt_reconfigure rqt_reconfigure

重要参数:
# 轨迹评分参数
path_distance_bias: 32.0 # 靠近全局路径的权重,默认值 32.0
goal_distance_bias: 24.0 # 接近导航目标点的权重,默认值 24.0
occdist_scale: 0.01 # 控制器避障的权重,默认值 0.01
更多推荐
所有评论(0)