Autoware调试心得-astar_avoid的避障实现
2022-12-23 # 实用教程

简介

网上有关 astar_avoid 模块的源码分析挺多的,我这里就不对它用到的 A* 算法做过多赘述了。不过知道它的实现原理跟实际调试还是存在很大出入,因为 A* 算法在实际应用时需要跟Autoware的其他模块所结合,为此了解其实际避障逻辑尤为重要,这也是本文的由来。

准备工作

  1. 实车或仿真环境
  2. 已部署成功 Autoware
  3. 一个可被检测到的障碍物

避障逻辑

因为我看到 astar_avoid 模块里的源码用到了有限状态机(Finite State Machine)来应对各种可能遇到的环境,所以我就以期望的避障状态出发绘制了下面两张时序图。

成功避障

下图是我们最期望看到的,一次成功的避障会经历的各个状态的切换过程。
avoid0

没有避障

而实际调试中没有避障成功的话,那就大概率是卡在下图的某一环节里了。
avoid1

这两图放一起应该很清晰就能认识 astar_avoid 模块的避障逻辑了。