一、源码及问题
最初的源码链接https://blog.csdn.net/heyijia0327/article/details/44983551
改进后的代码连接https://blog.csdn.net/xingdou520/article/details/83626591
前段时间看了一下dwa算法的原理,机器人在获得目的地信息后,首先经过全局路径规划规划出一条大致可行的路线,然后调用局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略,ROS中主要是使用了DWA算法。在ROS中每当move_base处于规划状态就调用DWA算法计算出一条最佳的速度指令,发送给机器人运动底盘执行。DWA算法全称为dynamic window approach,其原理主要是在速度空间(v,w)中采样多组速度,并模拟这些速度在一定时间内的运动轨迹,再通过一个评价函数对这些轨迹打分,最优的速度被选择出来发送给下位机。
通过一段时间的研究发生源码有很大的bug,一个是更换起点和终点之后需要手动调节初始姿态,很麻烦!二是某些方向存在逻辑,会陷入循环导致寻路失败。如下:
起点和终点 起点和终点(发生错误!!!)
二、改进后效果
只需要输入起点和终点即可,并且任意位置都可成功寻路