Apollo common math模块解读
[TOC]
本文是对 Apollo common math 模块进行研读的记录.
研读这个模块的意义在于 3 点:
- 了解哪些数学运算是较常用的, 可以针对性地学习在自己的代码里独立出来维护.
- 学习基本的几何/数学分析的算法以及编码技术, 毕竟比较轻量, 不用去看动辄几万行的数学库, 以及网上不一定靠谱的自学输出.
- Apollo 的其他模块依赖于这个模块, 有必要深入了解一下. 算法的性能与精度的瓶颈有可能就是卡在这个地方.
[TOC]
本文是对 Apollo common math 模块进行研读的记录.
研读这个模块的意义在于 3 点:
[TOC]
之前一篇博文里挖了个坑, 这次来填一下. 本文解读一下 Apollo 里 task 执行的模板抽象工厂模式.
[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]
本文记录一下《TDR-OBCA: A Reliable Planner for Autonomous Driving in Free-Space Environment》论文的阅读与公式推导.
所的出来的模型为 Apollo open space planner 代码依据.
改进 H-OBCA(参见研读推导论文博客)模型:
[TOC]
本文是对 Apollo Open Space Planner 的学习记录之一. 主要内容是 Hybrid A* 生成粗轨迹模块的分析.
[TOC]
EM Planner 在之前的博客中通过对论文详细学习了一遍, 这次通过代码学习一下 Apollo 的 Lattice Planner.
[TOC]
分析 Apollo 中的 Trajectory Stitching 模块, 参考 Replan 的逻辑.
三大特点:
(1) The top layer of the system is a multilane strategy that handles lane-change scenarios by comparing lane-level trajectories computed in parallel.
(2) Inside the lane-level trajectory generator, it iteratively solves path and speed optimization based on a Frenet frame.
(3) For path and speed optimization, a combination of dynamic programming and spline-based quadratic programming is proposed to construct a scalable and easy-to-tune framework to handle traffic rules, obstacle decisions and smoothness simultaneously.