1 背景
有了由lane_segment插值得到的粗糙参考线,这种参考线是无法输出给下游使用的,需要进一步的处理使得参考线更加平滑,才能供下游控制模块使用。
Apollo中共有三种参考线平滑算法,分别为:
1. QpSpline Smoother
2. SpiralReferenceLine Smoother
3. DiscretePoints Smoother
目前Apollo中默认配置为最后一种,基于离散点的平滑。这种方法在量产方案上也是使用比较多的一种,不仅可以用于结构化道路,也可用于非结构化道路,所以本篇着重介绍离散点平滑。
2 参考线平滑
代码在Apollo中的位置见下图:
如果考虑参考线的曲率约束,其优化问题是非线性的,可以使用ipopt非线性求解器求解(内点法),也可以将曲率约束线性化后使用osqp求解器来用sqp方法求解;如果不考虑曲率约束,则直接用osqp求解二次规划问题。
本篇的内容,网上也有很多讲解,但不少文章里的公式推导是比较牵强的,因此笔者主要参考原始论文的公式推导,尽量全面地还原论文作者的思想,并且本篇文章对于整个二次规划内容的构建和求解都进行了阐述。
2.1 优化的思想