Apollo common math模块解读
[TOC]
本文是对 Apollo common math 模块进行研读的记录.
研读这个模块的意义在于 3 点:
- 了解哪些数学运算是较常用的, 可以针对性地学习在自己的代码里独立出来维护.
- 学习基本的几何/数学分析的算法以及编码技术, 毕竟比较轻量, 不用去看动辄几万行的数学库, 以及网上不一定靠谱的自学输出.
- Apollo 的其他模块依赖于这个模块, 有必要深入了解一下. 算法的性能与精度的瓶颈有可能就是卡在这个地方.
[TOC]
本文是对 Apollo common math 模块进行研读的记录.
研读这个模块的意义在于 3 点:
[TOC]
前几篇博客介绍了open space planner 的中的 HybridAStar, DualVariableWarmStartProblem, IterativeAnchoringSmoother 都是 OpenSpaceTrajectoryOptimizer
类里调用的算法.
本篇补充一下 planner 主要 TASK 类执行的过程, 包括 OpenSpaceRoiDecider
, OpenSpaceTrajectoryProvider
, OpenSpaceTrajectoryOptimizer
, OpenSpaceTrajectoryPartition
还有 OpenSpaceFallbackDecider
类.
[TOC]
本文介绍 Open Space Planner 中的一个离散点光滑的算法– IterativeAnchoringSmoother
.
相对独立嵌入在整个 Open Space Planner 算法里, 虽然有些冗余, 但是些思想还是值得借鉴的. 例如使用正态分布产生随机采点代替优化过程. 故记录之.
[TOC]
本文为 Apollo Open Space Planner 介绍的第二部分 warm start, 即根据上一篇 Hybrid A* 搜索的结果优化出较好的 initial guess 以便优化主体模型时能快速收敛.
本篇介绍基于 IPOPT 求解器的优化过程.
公式推导请参考上 2 篇博文: 1, 2.
[TOC]
分析 Apollo 中的 Trajectory Stitching 模块, 参考 Replan 的逻辑.