Autoware调试心得-astar_avoid的避障实现
简介
网上有关 astar_avoid 模块的源码分析挺多的,我这里就不对它用到的 A* 算法做过多赘述了。不过知道它的实现原理跟实际调试还是存在很大出入,因为 A* 算法在实际应用时需要跟Autoware的其他模块所结合,为此了解其实际避障逻辑尤为重要,这也是本文的由来。
准备工作
- 实车或仿真环境
- 已部署成功 Autoware
- 一个可被检测到的障碍物
避障逻辑
因为我看到 astar_avoid 模块里的源码用到了有限状态机(Finite State Machine)来应对各种可能遇到的环境,所以我就以期望的避障状态出发绘制了下面两张时序图。
成功避障
下图是我们最期望看到的,一次成功的避障会经历的各个状态的切换过程。
没有避障
而实际调试中没有避障成功的话,那就大概率是卡在下图的某一环节里了。
这两图放一起应该很清晰就能认识 astar_avoid 模块的避障逻辑,那就这些。