一、什么是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

更多推荐