本系列介绍目前大厂主流的时空联合规划算法开源代码,架构以及基于该架构的再次开发。从介绍代码,编译,调试到功能需求的二次开发都有详细介绍,适合零基础想要学习自动驾驶规划部分的学生以及在职人员。
什么是时空联合规划
简单来说就是同时求解路径与速度曲线。
时空联合规划本质上是求解最优化问题,将路径和速度曲线作为优化问题的变量,同时得到二者在可行范围内的最优解。
为什么选择时空联合规划
目前市场量产项目的规划问题一般使用时空解耦,比如Apollo 的EM planner。使用路径和速度解耦的方式进行规划,先进行路径规划再基于该路径进行速度规划,把一个三维规划问题转化成两个二维规划问题,在分解的过程中会丢失一些解,这些解在完成速度规划的时候会发现可能不是优的
基于此时空联合规划的优点被显现出来:在可行解空间内具有完备解集合。速度和路径作为变量在可行域内求解的最优解保证都是最优的。
时空联合规划的应用
开源代码介绍了如何解决车辆在前进行驶过程中的路径和速度规划问题,可以应用于城市以及高速高架场景下的LaneKeep,LaneChange。
使用iLQR 方法解决非线性系统,目标函数也不必非要为二次型。同时构造增广拉格朗日函数把问题的等式,不等式约束项加到目标函数里面去,得到优化后的拉格朗日函数。
原开源代码:https://github.com/Grandereohb/ALTRO-iLQR
注: 以下所有的理论内容仅便于后续理解代码和架构,想要更详细的了解可以参考《最优化:建模算法与理论》刘浩洋
介绍顺序:
- 前言
- 介绍LQR和iLQR
- 介绍增广拉格朗日函数法
- 配置开源代码,编译和plot展示
正式开始介绍代码,先介绍iLQR再介绍增广拉格朗日部分
iLQR(预计10月底完成iLQR更新)
- iLQR类和问题构建
- 系统模型DiscreteDynamics 和ContinuousDynamics类
- 连续模型离散化过程
- 目标函数CostFunction和CostExpansion类
- iLQR 正向反向传播过程
- 架构总结
增广拉格朗日函数:
(待新增)