本篇著作念和专家分享一下Apollo7.0最新的筹办算法。因为Apollo的planning团体代码都相当宏壮,一先河依旧理清其框架,再分算法块逐一击破云云功效更好。这篇文
本篇著作念和专家分享一下Apollo7.0最新的筹办算法。因为Apollo的planning团体代码都相当宏壮,一先河依旧理清其框架,再分算法块逐一击破云云功效更好。
这篇著作欲望能指导读者理清planning的团体框架,梳理数据流,以紧要场景为例,不停剖判到task (apollo planning 的紧要算法所正在处)逻辑前的打算做事、输入奈何构制的,之后再深化看task内部的细节也更容易通晓。
特殊贯注,本文中的流程图均为作家花费了豪爽时期梳理而来,以便读者不妨更易通晓planning的团体框架,收拢中心不被细节带跑偏。
读懂一个模块,最初一定是通晓其的上下逛,即输入输出是什么。熟习Apollo CyberRT框架的小伙伴都分明正在该框架下,输入输出由Reader和Writer组成,并界说正在每个模块的component文献中。除此以外,CyberRT框架界说了两种形式,差异为音讯触发和时期触发,而planning中采用的为音讯触发,因而必需接到特定的上逛音讯后,才会进入内部主逻辑,而音讯触发的上逛音讯,界说为component中Process()函数的入参。
ntainer css-ym3v7r
ntainer css-xi606m style=text-align: center;
x03z
nWrap css-1baulvz
ntainer css-xi606m style=text-align: center;

ntainer css-xi606m style=text-align: center;

ntainer css-xi606m style=text-align: center;

ntainer css-xi606m style=text-align: center;

ntainer css-xi606m style=text-align: center;

ntainer css-xi606m style=text-align: center;
上面便是Apollo中的场景切换及管束逻辑。正在每个场景scenario下,还分为一个或众个stage,而每个stage下面,又划分了众个task来完结相应的筹办职分。以用到最众的lane_follow场景为例,它就包蕴了一个stage——lane_follow_default_stage,而正在这个stage下包蕴了众个task,如下图所示:
ntainer css-ym3v7r
ntainer css-xi606m style=text-align: center;
x03z
nWrap css-1baulvz
注意查看lane_follow场景下的task,咱们可能看出Apollo的筹办思绪也是横纵向解耦,先筹办path,再筹办speed。的确的,对待path来说,先做出是否需求lane_change或者lane_borrow的计划,再按照计划状况来天生凸空间,最终基于reference_line及凸空间求解一个二次优化题目,从而取得优化后的path。对待speed来说,是基于ST图实行DP+QP的优化本事,先使用DP来找到一个cost值最小的可行解,再使用QP对可行解实行腻滑,取得最终腻滑后的ST图点集。最终,基于s值对path和speed实行协调,取得一条腻滑的轨迹。
至此,Apollo 7.0 planning的中枢框架及核默算法的输入都依然评释大白了,总体来看Apollo筹办的团体思绪尽头分明,然则细节个别真的需求花费豪爽时期来通晓,我感觉假若没能将这套算法安顿到实车上跑过的话,许众算法能够真的无法很好地通晓。
我片面也陆接续续看这套代码有两年众了,永远感觉许众细节都没有深化通晓透,代码光看是确信不可的,假若没有前提正在实车,或者是仿真里现实运转,处分相应场景下遭遇的题目的话,是永远不行转化为己方的常识的,欲望与专家共勉,也接待专家有任何疑难正在评论区留言互换。
汽车测试网-开创于2008年,报道汽车测试技能与产物、趋向、动态等 合系邮箱 marketing#auto-testing.net (把#改成@)
微信扫一扫打赏
支付宝扫一扫打赏
