资讯详情

百度 Apollo 轨迹规划技术分享笔记

以下内容来源 百度 Apollo 开发者社区分享会

老师简介

百度高级架构师张雅嘉 Apollo 平台规划方向技术负责人。印第安纳大学计算机科学博士,从事机器人运动规划。他在机器人运动规划方向上有多年的研发经验,并带领团队参与 DARPA 机器人竞赛。2016年加入百度,从事无人驾驶平台规划方向的研发。

1. 第一个问题:整个规划过程的输入和输出 planning 代码中提取的位置是什么?

A请参见输入输出PublicRoadPlanner实现这一类

2. 第二个问题:每个实时规划的初始状态,如 s、速度和加速度主要是基于车身底盘的实时反馈,还是基于组合导航,还是基于上帧规划结果?如何连接到控制执行的连续两帧轨迹,以确保控制模块在连接处的速度、加速度和曲率没有突变?

A2:这个问题很好,在今天的分享中没有特别的介绍。我在这里简要描述了上游定位模块获得的车辆状态,包括当前地图坐标系下的坐标、方向、转向角度、速度、加速度等。

轨迹规划模块以固定频率进行,我们使用轨迹拼接算法(Trajectory Stitching)在控制器看来,保证相邻帧的轨迹是平滑的。假设我们的周期时间是dt如果我们没有上一个周期的轨迹,那么我们使用运动学模型, 对当前从定位模块获得的车辆状态进行外推,获得dt作为规划的起点,我们称之为重新规划(Replan);如果上一个周期的轨迹存在,我们将根据当前的系统时间T,在上周期的轨迹中找到相应的轨迹点,然后,我们比较了轨迹点和定位模块获得的当前车辆状态的差异。如果这种差异在一定范围内,我们会找到它T dt上一周期的时间轨迹点作为规划的起点;如果差异超过设定范围,控制器误差较大,我们将做第一种情况replan。

该机制保证了相邻帧轨迹在控制误差允许的情况下的平滑拼接。在控制器看来,规划模块的轨迹是一小段dt长度的轨迹光滑拼接起来的。

补充问题:为什么每次规划时,规划的起点不是车辆的当前状态,而是找到T dt规划的起点是时间的最后一周期轨迹点?

因为计划结果真的送到了控制器T dt时刻

3. 第三个问题:常三阶导数在路径规划中的物理含义和算法中的作用是什么?

A3:三阶导数是加速度,表示加速度的变化率。在物理上,它是舒适性的指标。在算法中,通过常的三阶导数实现相邻离散点之间的连接。

4. 第四个问题:张先生在文章中提到:将速度规划问题分解为启发性速度规划和分段加速算法的目的是解耦离散维度和时间。这里的离散维度是什么?

A也许我写得不太清楚,在速度规划中,离散维度指的是时间。

5. 第五个问题:我们在实实际使用它PublicRoadPlanner当发现车辆总是倾向于以最大加速度减速时。这适用于超车和紧急避障,但可能不适用于一般启动、转弯、转弯和停车。能否提供一套动态配置加减速参数的方法?

A理论上可以通过上游决策层动态调整参数。

6. 第六个问题:人工驾驶车辆,当前方远处有障碍物时,通常会松开油门,使车辆惯性向前移动。如果障碍物仍然靠近车辆,刹车减速,否则加速。规划算法如何描述通过惯性松开油门的行为?

A6:这主要是通过设计成本函数来实现的。如果我们惩罚二级导数,这意味着我们希望尽可能小地实现我们的目标。

7. 第七个问题:路径规划是否考虑了地形因素对车辆状态的影响?

A7:地形因素能举例吗?

8. 第八个问题:apollo lattice规划时看到车辆状态采集,横向为-0.5,0,0.5.在这种状态下,拟合轨迹还能超车或避免大障碍物吗?

A8:不能,Apollo Lattice需要通过改变引导线来实现更大的超车或避免障碍物。

9. 第九个问题: 在路径规划的分段加速度优化算法中,在车道中间设置障碍物,可通区间分为上下两个区间,约束条件不再简单[lmin,lmax],如何处理变成或条件?

A9:问题很好- 对于同一离散点,我们会有不同的区间。我们设计了一个类别,叫做PathBoundsDecider,它将处理不连续的范围。在实现过程中,我们将使用启发式方法对不同的范围进行排序,并在时间允许的情况下规划每个离散范围。

10. 第十个问题: 在优化迭代的过程中,l_(i→i 1)^? 相邻点 l_i^″ 与 l_(i 1)^″ 但是 l_(i→i 1)^? 在两个离散点之间会保持不变。请解释下这句话的含义?

A10:意思是加速度是优化的变量,会在优化迭代中发生变化;相邻点的加速度决定了加速度,即一旦确定了加速度,加速度只能通过差异来确定。

11. 第十一个问题:在第N次规划中规划轨迹后,根据轨迹运行一段距离。进入第一个N 一个循环后,如何使用上一个循环产生的轨迹?是保留一小部分,以后的重生,还是直接放弃以前的轨迹重新规划,还是从最后一个轨迹中选择最近的点,从这一点开始规划?

A请参见这个问题Q2的解答。

12. 第十二个问题:决策层作为体育规划的上层,如决策做出超车决策,体育规划层试图规划,结果发现不,现在该怎么办?当类似的决策和规划层做出不一致的决策时,在实际过程中是否有更好的结构来处理这些问题?

A12:这是一个非常好的问题,在规划层面上是一个非常重要的问题。这超出了今天的分享范围,我将简要回答可能的想法:规划层需要设计一个反馈信号,反馈给决策层,并通知决策层是否能做出决定。

13. 第十三个问题:Apollo 轨迹规划的起始条件之一是光滑的引导线,也就是说,轨迹规划是在获得引导线时才开始的吗?如果是这样,那么指导线本身就是曲率导向的,符合运动规律,为什么不在世界坐标系下作为无人驾驶汽车的可行轨迹呢?在弗雷那坐标系下进一步规划?这样做有什么好处?

A13:是的,规划必须有光滑的指导线。Frenet坐标系下的规划是为了避免直接考虑方向、曲率等问题,避免高维规划。

14. 第十四个问题:GitChat本文主要介绍apollo2.5里EMPlanner设计理念,后续apollo版本中还有lattice planner以及open space环境下的planner。能对em planner和lattice planner在public road比较场景中的表现吗?对于open space常见的倒车等轨迹规划,em planner和lattice planner能解决吗?

A14:对我们没有全面的对待em与lattice比较。em适合解决复杂的城市道路,lattice适合解决相对简单的高速场景。倒车的话,em和lattice无法解决。

15. 第十五个问题:在弗雷那坐标系下,横向距离是通过分段拟合直接求导纵向路径,还是离散后以差异的形式求导?ppt对三阶导数的解释似乎是后者

A15:三阶导数以差异的形式直接计算。

16. 第十六个问题:EM Planner在规划器中,通过惩罚路径和速度曲线的一级导体、二级导体和三级导体进行规划。这种方法在什么情况下会失败?有必要用车辆的动力学约束代替这些约束进行运动规划吗?还是将动力学约束分配到控制环节?

A16:我们将根据车辆的运动模型,估计一、二、三阶导数的值范围,找出符合运动值范围的空间,约束轨迹的解决。

17. 第十七个问题:在EMplan路径规划的起点initpoint,该点将先计算dl和ddl,在实车调试中,这两个值可能是由于前端输入heading数据有一些波动,导致这两个值过大,最终规划的路径是沿参考路径呈s型。如何避免这个问题?

A17:如果我认为这是一个综合性的问题heading出现抖动,不仅planning会受到影响,control更大的影响,这是来自上游模块的信息,这个问题不好,我个人认为不应该,在planning中解决。

18. 如何定义第十八个问题TTC?FTTI 对 planning 什么影响?

A18:请问TTC,FTTI什么意思?我不太清楚。

19. 第二十个问题:将车辆位置和障碍物位置投影到指导线上。投影后如何确定? s 值?

A19:详见相关代码:CartesianToFrenetConversion实现这一类。

20. 第二十一个问题:以前em规划器无论路径、速度规划点与点之间以五次多项式相连,本文中所描述的方法貌似完全是在离散状态下计算与优化(包括目标函数),而不考虑点与点之间连接的函数表达,所以纵向点需要很密(路径规划中纵向点间距大概多远?)。这种完全离散的方法与之前em中qp规划方法有什么好处?

A20:好问题。在路径规划中,离散s在0.5m路径有200条m长。优点是我们有更大的路径控制权,可以在非常复杂的问题上计算出可行的轨迹。

21. 第二十二个问题:每两个离散点之间有一个常三阶导数项,可以理解为以函数形式三次多项式吗?或者上一个问题说的是在完全离散的状态下计算的?

A21:可以理解,本质上也是多项式。

22. 第二十三个问题:如图所示 Uturn 情况,主车在大概 s1 感知障碍物 box,但同一个 box 的四个 corner 点被映射到了不同的 s 重构障碍物 sl 边界出了问题,结构最大最小 s 及最大最小 l 构成的错误 sl_boundary,最后,障碍物没有占据车道,无法通行。你是怎么解决的?

A22:好问题,这种情况是极端的。现在我们根据不同的情况进行特殊处理,没有很好的综合解决方案。

23. 第二十四个问题:DpPolyPathOptimizer、QpSplinePathOptimizer、QpPiecewiseJerkPathOptimizer 、PiecewiseJerkPathOptimizer 这些优化器和应用有什么区别?

A23:前面的3个已经被deprecate掉了,使用PiecewiseJerkPathOptimizer替代。应用商PiecewiseJerkPathOptimizer能够覆盖前面的优化器。

24. 第二十五个问题:在路径规划算法中,保证三阶导是每段的常数,那每一段的三阶导这个数是怎么确定的?

A24:通过差分二阶导数

25. 第二十六个问题:文章中提到“路径规划避让静态障碍物,速度规划避让动态障碍物”,而 2018 年的论文“Baidu Apollo EM Motion Planner”实验中路径规划中可以避让对向来车,这两个描述是否矛盾,怎样理解静态障碍物?对于速度较低的动态障碍物是否合适在路径规划中考虑的?

A25:静态障碍物可以以速度大小来区分。对于速度较低的障碍物,范围只要能够bound到一定的大小,也可以在路径规划中考虑。

26. 第二十七个问题:控制 kappa 相对控制角速度有什么优势吗?另外,纵向有考虑加速度,横向不考虑角加速度的原因?

A26:角速度涉及了路径和速度两个方面的综合因素。在我们的实现中,路径和速度分开考虑是为了降低难度。 直接考虑角加速度的算法我们正在开发,不久会发布。

27. 第二十八个问题:非和谐车辆系统就是非完整约束车辆系统吗?在路径规划时也需要考虑到当前车辆的运动状态而适当的调整车辆的几何形状,几何形状是指什么?多种平滑指引线的计算方法,有哪些常见方法?

A27:是的。应该是根据车辆状态来调整路径的几何形状吧?平滑算法可以参见我们的实现:QP Spline,spiral curve ...

28. 第二十九个问题:如何判断车与障碍物是否相撞?

A28:请问是指在我们的实现中,如何计算避免碰撞的轨迹还是几何上怎么判断?

29. 第三十个问题:之前做控制看到用 MPC 的思想去做避障的轨迹规划,请问这种方法和现在这种在图空间中采样的方法有什么优缺点?这两种方法有分类么?

A29:这个是个大问题,MPC是control-based的方法,在地图坐标系做规划,与我们在Frenet坐标系下规划不同。具体我们可以线下交流。

30. 第三十一个问题:如果控制使用 MPC 的话,MPC 无解怎么办?

A30:无解了就没办法了,planning也有无解的时候啊

31. 第三十二个问题:路径规划的求解用的什么方法?另外这种求解方式耗费算力吗?

A31:使用的OSQP,计算路径的话,0.5m间隔200m总长,少于10ms

32. 第三十三个问题:规划算的参数很多都是相互耦合的, 应给如何调节? 有什么智能化的方法吗?

A32:我们以前尝试过auto tuning,现在还没有很好的进展。

33. 第三十四个问题:为什么每次规划时,不以车辆当前的状态为规划起始点呢,而是“找到 T+dt 时间的上一周期轨迹点作为规划起始点”?

A33:好想已经有参与者代为回答了

34. 第三十五个问题:如果在做路径规划的时候只考虑静态障碍物,那么在该路径上规划出的轨迹是否无法对动态障碍物进行合适的处理?

A34:有这个可能,这个是个为了降低规划难度做的牺牲。

35. 第三十六个问题:请问在路径规划模块中需要考虑障碍物运动的不确定性么。对于和其他车辆有交互的场景,例如堵车时加塞这样对路权有争夺的情况,如何去设计我们的决策方案?在实际路测中当前 Apollo 规划系统不能解决的主要有哪些问题呢?

A35:好问题。这需要上游模块,比如预测模块提供比较好的预测。现在planning中还没有相应的解决方案。

36. 第三十七个问题:做路径规划之前如何做出应该从某个障碍物上方绕过、下方绕过或者跟在障碍物后面的决策?

A36:通过用户设置代价函数,比如加速度的权重,等等,通过代价来进行判断。

37. 第三十八个问题:Apollo 基于场景、阶段和任务的理念进行规划,那么阶段(stage)该如何理解?这个过程做了什么?能否举例说明?

A37:Stage简要的说是一个场景中的一个阶段,几个stage顺序组合起来形成一个完整的场景。

38. 第三十九个问题:在 Apollo 中,关于 MPC 的控制和基于 frenet 的横纵向控制,二者之间什么关系?

A38:具体控制中的MPC实现,我不是很了解,我可以把问题转到我们做控制的同学。

39. 第四十个问题:路径加载轨迹点,一次性全部读入缓冲区里放到ram里面吗?如果是这样做的话是不是有点浪费内存?

A39:不是很清楚您的问题,路径可能一共就400个点,ram的空间应该不需要多少吧。

40. 第四十一个问题:未来无人车的规划决策以及控制会不会被强化学习取代?

A40:这问题太大... 我们线下讨论吧。

41. 第四十二个问题:路径规划算法怎样在脱离实际车辆进行测试?测试通过需要哪些量化指标之后再上实车验证?

A41:我们现在会通过仿真平台做初步验证,在planning成功率,轨迹质量加以检测之后,再做实车测试。

42. 第四十三个问题:在实际使用过程中规划路径经常出现跳变,导致控制不稳定,请问可以如何减小规划结果的跳动?

A42:这个和实际的实现有关系,合理的跳变表明对动态环境做出了反应;不合理的跳变说明在设计代价函数的时候有欠缺,需要改进设计。

43. 第四十四个问题:对于档位切换时,加减速度会滞后的车辆实施自动驾驶时,如何改进控制跟不上规划步调导致频繁重规划的问题?

A43:这个好像主要是控制的问题。在planning层面,我们可以适当的减小加速度的搜索范围,生成尽可能和缓的轨迹。

44. 第四十五个问题:能够根据生产的轨迹和当前雷达测到的其它车辆位置速度,预测碰撞风险吗? 如果其它车辆突然加速,实际是很困难感觉

A44:是的,这个是预测模块非常头疼的问题..

45. 第四十六个问题:指引线在道路居中规划时是否可以理解为车道中心线?

A45:可以这么理解,现在的实现也是这样;不排除将来我们有更好的方法找到不严格为道路中心线的更好的指引线。

46. 第四十七个问题:能否分享一下指引线的生成方法。Apollo里的cos_theta_reference_smoother和spiral_reference_line_smoother是如何工作的?(Apollo似乎还未提供文档进行解释)

A46:好的,如果有机会,我们可以专门有指引线生成方法的分享。具体技术细节很多,涉及了非线性优化的问题。

47. 第四十八个问题:智能车是如何控制速度的?如何让车辆达到预定的速度?

A47:这个超出了我的范围,需要控制的同学来回答 A48 纵向速度闭关控制,通过对ESC和EMS发送目标加减速度或扭矩。

48. 第四十九个问题:这个规划方案在哪个版本中有提现?可以离线运行吗?

A48:这个规划方案会在7月Apollo新版本正式发布。离线运行是指?

59. 第五十个问题:目前针对前方低速前行(比自车速度低),这时候要不要换道是由上层的决策模块决定的吗?如果是,假如现在决策要换道,左右两边还有其它车辆的情况下,规划层如何根据左右两边的车辆运动情况进行规划?是先定一个沿参考路径方向的换道距离,确定当前决策下换道路径,后续不再改变这条路径,还是实时根据左右两边车辆运动轨迹,每一帧都规划一条与左右两边车辆没有碰撞的路径?

A49:是后一种情况,实时根据左右两边车辆运动轨迹,每一帧都规划一条与左右两边车辆没有碰撞的路径

50. 第五十一个问题:车辆沿着光滑的道路指引线运动时,突然出现紧急情况时(比如cut in工况),如何处理?决策层会优先执行预设的规避动作然后重新进行规划么?

A50:不会,我们以10HZ的方式进行规划就是为了能够及时更新轨迹,处理紧急情况。

51. 第五十二个问题:针对行人这类低速且方向随机的障碍物是否有专门的处理方式,举个例子,园区场景,单车道有行人自右侧向左横穿,走几步又停下再走,车辆如果按避障处理可能会在向左拐弯途中发现行人障碍物变到左侧,于是又试图向右避障,请问老师针对这种场景是否有对应解决办法?

A51:这个就是预测的问题了,好像这个问题折磨了预测同学很久,我可以问问他们最新进展。planning层面不适合对这样的情况做假设与处理。

52. 第五十三个问题:此处指的地形是指比如矿区、越野环境下,路面非常不平,若不考虑地形对车辆动力学的影响,规划的结果可能无法使用,在规划模块如何考虑比如土坡、水坑的影响?

A52:这个问题我还没考虑过,可能最先会做的是减小轨迹计算的搜索范围,让轨迹不要贴合车辆动力学的边界,提高能够执行的概率。

53. 第五十四个问题:在路径规划中是怎么计算几何上,本车与障碍物是否碰撞,实时性能如何?通过什么方法求解?

A53:二维bounding box碰撞,大概需要十几个向量点乘运算,可以参见Separate Axis theorem,中文可能叫超平面分割定理。

54. 第五十五个问题:请问这种算法已经发布在git上了吗?未来会代替lattice和em吗?

A54:是的,这是我们的计划,尽可能使用一套算法解决问题。

55. 第五十六个问题:请问是指在我们的实现中,如何计算避免碰撞的轨迹还是几何上怎么判断?

是几何上的。

A55:请参见A53

56. 第五十七个问题:目前对无保护左转弯用什么方法规划的?

A56:这个是决策层面的问题,具体请参见我们专门设计的场景

57. 第五十八个问题:如果目的地是在车后方不远处(eg: 10m),规划的话是先掉头,还是直接倒车?这个权重如何取?

A57:在我们的规划中(onlane planner),我们假设的是一般公路场景,算法中不允许向后移动。Open space planner可以允许这样的操作。

58. 第五十九个问题:当规划路径,出现几种损失函数彼此不能兼顾,该优先选择那些损失函数?

A58:代价函数是几个因素加权的和。所以我觉得您指的是应该提高那些的权重?这个可能需要根据不同的应用场景、车辆类型来决定。

59. 第六十个问题:请问规划时在停车点时的规划策略是怎样的 ?

A59:不是很明白您的问题。您指的是到了停车点,我们的后续策略吗?

60. 第六十一个问题:这个规划方案在哪个版本中有提现?可以离线运行吗? 离线运行就是 在电脑上模拟

A60: 可以离线运行,在电脑上模拟。

61. 第六十二个问题:请问强化学习在目前规划中有使用吗?主要应用在什么场景?

A61: 目前还没有使用,我们现在还在探索。大家敬请期待哦!

62. 第六十三个问题:open space planner的规划算法能具体介绍一下吗?

A62: 我没有参与open space planner的具体开发,技术上是以一篇论文为基础,可以联系apollo小姐姐领取。

63. 第六十四个问题:针对前方突发的障碍物(比如虚警或横穿马路的动物),按照技术文档的方式可以规划出避让的路径,但会有较大的离心加速度,实际最优选择似乎应该是紧急制动,就是与障碍物相交碰撞的路径,但是横向路径规划似乎一开始就剔除了这些可能碰撞的区间,不知道我的理解是否有问题

A63: 如果突发障碍物的话,我们会当作动态障碍物处理,在生成路径的时候是不考虑的。所以在这个场景下,我们会在路径上继续直行,在速度上紧急制动。

百度 Apollo 轨迹规划技术分享笔记 - 知乎 (zhihu.com)

标签: s1a5传感器传感器352a25

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台