找回密码
 立即注册
查看: 379|回复: 6

关于Apollo中规划算法的思考。

[复制链接]
发表于 2022-1-28 09:34 | 显示全部楼层 |阅读模式
首先表明我对apollo的看法:apollo开源出来一个可行的方案,该方案并不一定是唯一的,最优的。处于该前提下,我说下我的想法。
1、Lattice为什么不被更新和抛弃,是算法缺陷?但是为什么在新planner中又穿插使用呢?
2、轨迹拼接能够根本解决Lattice帧间不连续这一问题吗?那么Lattice帧间不连续的根本问题有哪些?
3、新的基于优化规划算法中,参考线平滑的核心意义是什么?有必要使用优化求解来平滑?多项式拟合的龙格现象没法解决?优化算法平滑的收益和投入成正比?
4、Frenet可以简化规划算法,但是他没有假设前提?Frenet真的是规划算法的最优坐标系?
………
1、自己有幸使用Lattice算法做过量产,发现该算法从理论上讲就至少有3个理论缺陷。该算法上手快,但是后期性能提升和泛化能力很差。对于轨迹生成,我认为在XY坐标系下,基于车辆运动学或再加动力学得到轨迹的方法更优。通过减少求解信息,达到减少耗时,提高限定时间内成功求解的概率;减少坐标系转换带来的损失。
2、轨迹拼接不能根本解决或缓解帧间不连续,从理论上讲,轨迹拼接对Lattice的实际收益(非特例)基本可以忽略,除此之外,轨迹拼接中往前递推的操作,个人感觉完全没必要,这本属于控制的范畴。
3、参考线平滑是有必要的,如果使用优化算法来光滑,个人感觉大材小用(不排除后续path求解强耦合很平滑的参考线,此处没有量化分析过)。个人感觉参考线平滑使用拟合就够了。
4、Frenet高精度坐标转化需要使用优化算法,否则就可能存在厘米级误差,这会被城市场景中的决策判断放大。在Frenet下的障碍物筛选也没有XY下精度高,为了安全,只能提高冗余量,牺牲决策判断。
5、基于优化框架的算法本质上包括两部分:问题转化(设计)和问题求解。只有“白盒式”的熟悉了解QP求解原理和过程,才能游刃有余的设计问题,定向调参,定向减少耗时。基于优化思想设计算法是很通用的,下到控制性能提升,上到online-POMDP。对于Apollo就是选库和调库,我认为只有深入求解库,才能反观问题设计部分是不是最优的,优化耗时不仅仅是求解库本身的事,而是一个问题设计和求解的协作。
………
个人认为,规划算法的最优解是:
车辆运动学和动力学+非线性问题线性化求解(QP)+Frenet粗选障碍物+XY细选障碍物。
多障碍物避障(狭窄空间通行):
车辆运动学和动力学+全局搜索算法(元启发式搜索)
………
Apollo只是一个开源方案,除此之外还有很多更好,更优的方案,不要all in apollo,要知道内部也需要靠成绩晋升,这些成绩也许仅仅为了晋升。
发表于 2022-1-28 09:35 | 显示全部楼层
[思考]为什么轨迹拼接收益不大呢?可以细说一下原因吗?
发表于 2022-1-28 09:37 | 显示全部楼层
我的轨迹拼接的理解是从上一帧轨迹选当前位置对应点(往前时间弥补本属于控制范畴),目的是控制拿到轨迹曲率相对光滑。
拼接针对于初始点,整个轨迹规划不仅仅考虑起始点,而是整个轨迹。控制拿不到光滑轨迹的原因是上游不完美和规划算法的帧间性能,应该从规划性能入手,弥补上游不完美,根本解决控制拿不到帧间光滑轨迹的问题。
拼接针对初始点进行光滑,收益肯定有,就看相对于什么了。
发表于 2022-1-28 09:37 | 显示全部楼层
决策规划控制对于自动驾驶汽车,这三个环节密切相关呀。
发表于 2022-1-28 09:46 | 显示全部楼层
三者互相依赖,密切相关,只有懂下游所需才能做好事。
三者又互相独立,只有处理好三者能力和边界才能更好的协作,才能根本解决实际问题。
发表于 2022-1-28 09:52 | 显示全部楼层
个人理解:
1.lattice也是一种优化,离散解空间,遍历式求解方式,牺牲解的精度换求解时间。缺点结果求解质量不行;这种方法的好处在于对约束和目标函数不再有任何要求,复杂也罢,非凸也罢。
2.轨迹拼接其实就是解决时间一致性问题,主要因为a.每一帧的解就不是全局最优解,也就不再满足Bellman原则,b.控制误差以及感知误差导致每一帧的问题都不再是同一个优化问题。以前做实验出现过这种情况,如果不考虑拼接,多帧之间的轨迹可能来回跳动,特别是狭窄区域。
3.平滑后轨迹相对于粗糙轨迹形状发生了变化,从理论上来说有可能发生碰撞,基于这点考虑,轨迹平滑的难点在于将非凸的避碰约束、运动学的微分约束放在优化里面。感觉拟合本身也是一种优化,只不过没有考虑这些约束。
4.Frenet能够将弯道场景看成直道进行规划,通过模型之外的坐标转换得到笛卡尔坐标系解,使规划场景一般化。但是缺点也很明显。
发表于 2022-1-28 09:56 | 显示全部楼层
首先,很认同的你的大部分观点。在第二点,我想补充一下:
轨迹拼接对Lattice肯定有收益的,但是这种方式是否能够根本解决Lattice帧间不连续(受上游感知或定位波动影响)的问题吗?从Lattice原理上分析可知,轨迹拼接不能根本解决问题。
解决问题还是需要从根本上解决,否则性能问题反反复复出现。
我的观点是,使用优化算法可以根本解决Lattice的性能问题。直观而言,可以对比横向控制算法中的预瞄PID(单点)算法和MPC(优化)算法。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 20:29 , Processed in 0.092831 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表