自动驾驶轨迹规划算法——Apollo Lattice Planner

发布于:2025-08-16 ⋅ 阅读:(21) ⋅ 点赞:(0)

自动驾驶轨迹规划算法——Apollo Lattice Planner

一、Apollo Lattice Planner 是什么?

1.1 定义与核心思想

Apollo Lattice Planner 是百度 Apollo 自动驾驶系统中的一款 基于采样搜索的实时轨迹规划器(Sampling-based Motion Planner)
其核心思想是:在离散化的状态空间内,对终端状态进行系统采样,并通过轨迹生成模型(多项式曲线 / 样条曲线)连接当前车辆状态与候选终端状态,形成一组候选轨迹,然后基于代价函数选择最优轨迹。

“Lattice” 一词源于 格栅化状态空间(Lattice State Space) 的思想:

  • 将车辆的可达状态按纵向距离、横向偏移、速度等维度进行规则离散(形成“格点”);
  • 每个格点都对应一条由轨迹生成器生成的可行曲线;
  • 最终通过代价评估,从格点连接形成的轨迹集合中选取最优解。

在自动驾驶系统中,Lattice Planner 主要负责:

  • 在考虑车辆动力学约束和障碍物分布的情况下,生成一组动态可行的候选轨迹;
  • 根据代价函数从候选中选取最优轨迹,实现平滑、安全的行驶;
  • 在动态环境中快速重新采样并选择新轨迹,确保实时避障与稳定行驶。

1.2 与其他规划器(如 EM、Hybrid A*)的区别

特性 Lattice Planner Hybrid A* Planner EM Planner
规划空间 离散化状态空间(采样) 连续曲线搜索(启发式) Frenet 坐标下路径/速度解耦
核心方法 状态采样 + 轨迹库 + 代价评估 A* 搜索 + 曲率约束 DP(动态规划)+ QP(二次规划)迭代
轨迹平滑性 中等(取决于轨迹生成模型) 较高(样条曲线) 高(样条曲线 + QP)
动态障碍物处理 中等(需在代价中建模) 较弱 强(ST 投影 + 速度优化)
实时性 高(可并行采样) 较低
适用场景 结构化道路、简单动态环境 弯曲狭窄空间、低速场景 城市道路、高速、动态复杂场景

Lattice Planner 最大的不同点在于 先生成一组覆盖多种驾驶意图的候选轨迹,再用代价函数一次性评估选择最优解,而不是像 EM Planner 那样分路径与速度两阶段交替优化。


1.3 Apollo Lattice Planner 的典型应用场景

Lattice Planner 依靠其 快速采样–评估 的特点,在以下场景中具有良好表现:

  1. 车道保持与换道
    • 可同时生成保持当前车道、向左换道、向右换道等多组候选轨迹,确保驾驶策略灵活。
  2. 超车与避障
    • 在检测到前方障碍物时,生成绕行轨迹或减速跟随轨迹,根据代价函数选择更优方案。
  3. 匝道汇入 / 驶出
    • 在高速公路汇入或驶出场景,通过在不同终端速度与终端横向位置采样,快速生成合适的接入轨迹。
  4. 低速复杂环境导航
    • 在泊车场、园区等低速环境中,可通过高密度采样生成精细避障轨迹。
  5. 实时动态避障
    • 虽然对动态障碍物处理不如 EM Planner 直接,但可在代价函数中引入动态预测信息,实现一定的动态避障能力。

二、Apollo Lattice Planner 的原理——Step by Step

下面用流水线视角把 Lattice 的一次规划周期讲清楚:每一步输入→处理→输出,并说明为什么要这么做下一步如何用到这一步的结果。读完即可照着实现。


Step 0:准备与坐标系(Preprocess)

输入:HD Map 参考线、车辆当前状态 ( x 0 , y 0 , ψ 0 , v 0 , a 0 ) (x_0,y_0,\psi_0,v_0,a_0) (x0,y0,ψ0,v0,a0)、障碍物(静/动态)多边形与预测轨迹
处理

  1. 选定一条参考线(routing 给的那条),在其上构造 Frenet 坐标系 ( S , L ) (S,L) (S,L)
  2. 把车辆状态、车道边界、障碍物全部投影到 Frenet:得到 S 0 , L 0 S_0,L_0 S0,L0 和障碍物在 ( S , L ) (S,L) (S,L) 的占据带。
    输出:参考线函数 x ref ( s ) , y ref ( s ) , κ ref ( s ) {x_{\text{ref}}(s),y_{\text{ref}}(s),\kappa_{\text{ref}}(s)} xref(s),yref(s),κref(s)、起点 ( S 0 , L 0 , v 0 ) (S_0,L_0,v_0) (S0,L0,v0)、障碍物在 S ! − ! L S!-!L S!!L 的占据区。
    为什么:Frenet 能把纵向进度横向偏移解耦,后续采样与碰撞检测都更简单。
    交接:提供给 Step 1 做“终端状态采样”的空间边界与起点条件。

Step 1:终端状态采样(Where to go)

目标:在**规划时域 T plan T_{\text{plan}} Tplan*内,枚举一批“**想去哪里、以多快的速度结束**”的*终端状态,形成“格点”(lattice)。

输入:起点 ( S 0 , L 0 , v 0 ) (S_0,L_0,v_0) (S0,L0,v0)、参考线限速与曲率上限、车道几何与障碍物占据区
处理:构造终端状态三元组

q = ( S end ,   L end ,   v end ) , T ∈ [ T min ⁡ , T max ⁡ ] q=(S_{\text{end}},\,L_{\text{end}},\,v_{\text{end}}),\quad T\in[T_{\min},T_{\max}] q=(Send,Lend,vend),T[Tmin,Tmax]

  • 纵向采样 S end S_{\text{end}} Send: 依据 v 0 , a max ⁡ , T plan v_0,a_{\max},T_{\text{plan}} v0,amax,Tplan 取若干值(如每 10–20m 一个)。
  • 横向采样 L end L_{\text{end}} Lend: 取当前车道中心、相邻车道中心及±偏移(如 ±0.5m 微调)。
  • 速度采样 v end v_{\text{end}} vend: 依据限速与曲率约束 v max ⁡ ( s ) = min ⁡ ! ( v limit , a y , max ⁡ / ∣ κ ∣ ) v_{\max}(s)=\min!\left(v_{\text{limit}},\sqrt{a_{y,\max}/|\kappa|}\right) vmax(s)=min!(vlimit,ay,max/∣κ ) 取低/中/高多个档。
  • 时间采样 T T T: 给每个 ( S end , L end , v end ) (S_{\text{end}},L_{\text{end}},v_{\text{end}}) (Send,Lend,vend) 配 1–2 个候选到达时刻(加速/匀速/减速情形)。

快速可行性过滤

  • L end L_{\text{end}} Lend 不得越界(车道边/硬路肩);
  • 终点邻域与障碍物重叠的直接丢弃;
  • 若要在 T T T 内达到 S end , v end S_{\text{end}},v_{\text{end}} Send,vend 必需的纵向加速度超过 ∣ a max ⁡ ∣ |a_{\max}| amax,丢弃。

输出:一组候选终端状态 Q = ( S e , L e , v e , T ) \mathcal{Q}={(S_e,L_e,v_e,T)} Q=(Se,Le,ve,T)​。
为什么:把“意图空间”离散化,一次性覆盖保持车道/换道/跟随/超车等多种策略。
交接:每个 q ∈ Q q\in\mathcal{Q} qQ​ 会在 Step 2 被连接成一条实际轨迹。


Step 2:轨迹生成(Connect start → each terminal)

目标:为每个 q q q,生成一条从当前状态到终端状态、时域对齐动力学可行的曲线。

输入:起点边界条件 ( S 0 , S ˙ 0 = v 0 , S ¨ 0 = a 0 ) (S_0,\dot S_0=v_0,\ddot S_0=a_0) (S0,S˙0=v0,S¨0=a0) ( L 0 , L ˙ 0 , L ¨ 0 ) (L_0,\dot L_0,\ddot L_0) (L0,L˙0,L¨0),终点 q = ( S e , L e , v e , T ) q=(S_e,L_e,v_e,T) q=(Se,Le,ve,T)
处理纵向横向各用五次多项式(满足位置/速度/加速度三对边界):

S ( t ) = ∑ i = 0 5 a i t i , { S ( 0 ) = S 0 ,   S ˙ ( 0 ) = v 0 ,   S ¨ ( 0 ) = a 0 S ( T ) = S e ,   S ˙ ( T ) = v e ,   S ¨ ( T ) = 0 L ( t ) = ∑ i = 0 5 b i t i , { L ( 0 ) = L 0 ,   L ˙ ( 0 ) = L ˙ 0 ,   L ¨ ( 0 ) = L ¨ 0 L ( T ) = L e ,   L ˙ ( T ) = 0 ,   L ¨ ( T ) = 0 \begin{aligned} S(t)&=\sum_{i=0}^{5} a_i t^i,\quad \begin{cases} S(0)=S_0,\ \dot S(0)=v_0,\ \ddot S(0)=a_0\\ S(T)=S_e,\ \dot S(T)=v_e,\ \ddot S(T)=0 \end{cases}\\ L(t)&=\sum_{i=0}^{5} b_i t^i,\quad \begin{cases} L(0)=L_0,\ \dot L(0)=\dot L_0,\ \ddot L(0)=\ddot L_0\\ L(T)=L_e,\ \dot L(T)=0,\ \ddot L(T)=0 \end{cases} \end{aligned} S(t)L(t)=i=05aiti,{S(0)=S0, S˙(0)=v0, S¨(0)=a0S(T)=Se, S˙(T)=ve, S¨(T)=0=i=05biti,{L(0)=L0, L˙(0)=L˙0, L¨(0)=L¨0L(T)=Le, L˙(T)=0, L¨(T)=0

线性方程组一次解出 a i , b i a_i,b_i ai,bi。得到 Frenet 轨迹 γ ( t ) = ( S ( t ) , L ( t ) ) \gamma(t)=(S(t),L(t)) γ(t)=(S(t),L(t))
随后做 Frenet→笛卡尔 转换得到 ( x ( t ) , y ( t ) ) (x(t),y(t)) (x(t),y(t)),并计算 v ( t ) , a ( t ) , κ ( t ) v(t),a(t),\kappa(t) v(t),a(t),κ(t)

硬约束快速筛(fail-fast):

  • ∣ a ( t ) ∣ ≤ a max ⁡ |a(t)|\le a_{\max} a(t)amax ∣ j ( t ) ∣ ≤ j max ⁡ |j(t)|\le j_{\max} j(t)jmax
  • ∣ κ ( t ) ∣ ≤ κ max ⁡ |\kappa(t)|\le \kappa_{\max} κ(t)κmax ∣ a y ( t ) ∣ = v 2 ∣ κ ∣ ≤ a y , max ⁡ |a_y(t)|=v^2|\kappa|\le a_{y,\max} ay(t)=v2κay,max
  • 轨迹包络不与车道边界相交。
    不满足者直接淘汰,减少后续代价评估负担。

输出候选轨迹集 G = γ k ( t ) \mathcal{G}={\gamma_k(t)} G=γk(t)(已通过硬约束)。
为什么:分解生成使求解快、稳、可并行;以 T T T​ 对齐避免“纵横不同步”。
交接:把可行轨迹交给 Step 3 计算打分。

在这里插入图片描述


Step 3:碰撞检测与安全评估(Safe or not)

目标:判明每条候选轨迹是否与障碍物发生碰撞过近

输入 γ k ( t ) \gamma_k(t) γk(t)、车辆矩形包络(长 L veh L_{\text{veh}} Lveh、宽 W veh W_{\text{veh}} Wveh)、障碍物(含预测)在时间上的形状/占据区
处理

  • Δ t \Delta t Δt 采样 t = 0 ! → ! T t=0!\to!T t=0!!T,得到车辆姿态 ( x , y , ψ ) (x,y,\psi) (x,y,ψ)
  • 构造车辆矩形多边形(可外扩安全边距 d safe d_{\text{safe}} dsafe);
  • 静态障碍物多边形做重叠测试(SAT/多边形相交);
  • 动态障碍物,取其在时刻 t t t 的预测多边形,与车辆包络相交检测;
  • 记录最近距离 d min ⁡ ( t ) d_{\min}(t) dmin(t),作为安全代价的输入。
    输出
  • 可行性标志(是否碰撞);
  • 最近距离曲线 d min ⁡ ( t ) d_{\min}(t) dmin(t)(供代价函数使用)。
    为什么:把**“能不能走”“走得安不安全”**分开:先剔除碰撞,再量化接近程度。
    交接:把可行轨迹及其 d min ⁡ ( t ) d_{\min}(t) dmin(t)​ 交给 Step 4 计算综合代价。

在这里插入图片描述


Step 4:代价评估(Score every feasible trajectory)

目标:用一套可加权、可调参的指标,给每条可行轨迹打分,平衡安全/舒适/效率/规则。

输入 γ k ( t ) \gamma_k(t) γk(t) L , L ˙ , L ¨ , v , a , j , d min ⁡ ( t ) L,\dot L,\ddot L, v,a,j, d_{\min}(t) L,L˙,L¨,v,a,j,dmin(t)、参考速度 v des ( s ) v_{\text{des}}(s) vdes(s)、目标进度 S goal S_{\text{goal}} Sgoal
处理:离散求和近似积分,常用代价:

C lat = ∑ t  ⁣ ( α 0 L 2 + α 1 L ˙ 2 + α 2 L ¨ 2 ) Δ t C lon = ∑ t  ⁣ ( β 0 ( v − v des ) 2 + β 1 a 2 + β 2 j 2 ) Δ t C obs = ∑ t ϕ  ⁣ ( d min ⁡ ( t ) ) , ϕ ( d ) = { + ∞ , d ≤ 0 exp ⁡ ( − d / τ ) , d > 0 C eff = λ 1   ∣ S ( T ) − S goal ∣ + λ 2   max ⁡ ( 0 , v des − v avg ) C rule = 车道变更惩罚、实线跨越、限速超标等软惩罚 \begin{aligned} C_{\text{lat}}&=\sum_t\!\left(\alpha_0L^2+\alpha_1\dot L^2+\alpha_2\ddot L^2\right)\Delta t\\ C_{\text{lon}}&=\sum_t\!\left(\beta_0(v-v_{\text{des}})^2+\beta_1 a^2+\beta_2 j^2\right)\Delta t\\ C_{\text{obs}}&=\sum_t \phi\!\left(d_{\min}(t)\right),\quad \phi(d)= \begin{cases} +\infty, & d\le 0\\ \exp(-d/\tau), & d>0 \end{cases}\\ C_{\text{eff}}&=\lambda_1\,|S(T)-S_{\text{goal}}|+\lambda_2\,\max(0,v_{\text{des}}-v_{\text{avg}})\\ C_{\text{rule}}&=\text{车道变更惩罚、实线跨越、限速超标等软惩罚} \end{aligned} ClatClonCobsCeffCrule=t(α0L2+α1L˙2+α2L¨2)Δt=t(β0(vvdes)2+β1a2+β2j2)Δt=tϕ(dmin(t)),ϕ(d)={+,exp(d/τ),d0d>0=λ1S(T)Sgoal+λ2max(0,vdesvavg)=车道变更惩罚、实线跨越、限速超标等软惩罚

归一化与加权:对各项做 min-max 或基于期望量纲的归一化,再加权求和

C total = w lat C lat + w lon C lon + w obs C obs + w eff C eff + w rule C rule . C_{\text{total}}=w_{\text{lat}}C_{\text{lat}}+w_{\text{lon}}C_{\text{lon}}+w_{\text{obs}}C_{\text{obs}}+w_{\text{eff}}C_{\text{eff}}+w_{\text{rule}}C_{\text{rule}}. Ctotal=wlatClat+wlonClon+wobsCobs+weffCeff+wruleCrule.

输出:每条候选轨迹的总分 C total ( γ k ) C_{\text{total}}(\gamma_k) Ctotal(γk)
为什么:安全 > 舒适 > 效率的层级可通过权重体现;同时保留对业务规则的软约束。
交接:把打分结果交给 Step 5 做选择与收敛策略。


Step 5:最优选择与防抖(Pick one & make it stable)

目标:选出当前周期的最优轨迹,同时避免周期间“抖动”(频繁换道/意图跳变)。

输入 C total ( γ k ) {C_{\text{total}}(\gamma_k)} Ctotal(γk)、上周期已执行轨迹片段 γ prev \gamma_{\text{prev}} γprev
处理

  1. γ ∗ = arg ⁡ min ⁡ C total \gamma^*=\arg\min C_{\text{total}} γ=argminCtotal
  2. 与上周期保持一致性
    • γ ∗ \gamma^* γ γ prev \gamma_{\text{prev}} γprev 代价差很小,优先延续 γ prev \gamma_{\text{prev}} γprev滞后/黏滞策略);
    • 换道引入迟滞阈值(进入阈值 < 退出阈值),减少反复横跳;
    • 对输出加终端意图锁定时间(例如换道一旦开始,至少执行 t lock t_{\text{lock}} tlock)。
  3. 失败回退(fallback):若无任何可行轨迹(极端拥堵/感知瞬断),降级为原地/沿参考线安全制动的保底轨迹。

输出:稳定的单条执行轨迹 Γ ∗ ( t ) \Gamma^*(t) Γ(t)​。
为什么:实车上“又换回去了”的体验很差,滞后与锁定能显著提升连贯性
交接:把执行轨迹交给控制器,并把末端状态作为下一周期的warm-start

在这里插入图片描述


Step 6:发布与滚动执行(Publish & roll)

输入 Γ ∗ ( t ) \Gamma^*(t) Γ(t)(当前周期 3–8s 时域,多为 50–100 Hz 采样点)
处理

  • 发布以 ( x ( t ) , y ( t ) , v ( t ) , a ( t ) , ψ ( t ) ) (x(t),y(t),v(t),a(t),\psi(t)) (x(t),y(t),v(t),a(t),ψ(t)) 形式的时序轨迹;
  • 控制器(MPC/Stanley/PID)在高频回路跟踪;
  • 记录已执行前缀,剩余后缀与环境状态一起喂回 Step 0,进入下一周期
    输出:车控可直接跟踪的时间标定轨迹
    为什么:Lattice 是滚动规划,每 80–150ms 重算一次,以应对环境变化。
    交接:形成闭环,新的感知/预测与上周期轨迹共同决定下周期采样的范围与密度(可对“上周期最优”的邻域加密)。

把“如何串起来”再压缩成一句话

Step 0 定基准线与 Frenet;Step 1 选一堆“终点假设”;Step 2 把每个终点用五次多项式连接成整条轨迹;Step 3 先剔除碰撞,再量化安全距离;Step 4 统一打分(安全/舒适/效率/规则);Step 5 选最优并加防抖/回退;Step 6 发布并滚动到下一周期。
每一步都把自己的结构化结果(格点、曲线、距离、分数、单条轨迹)交给下一步继续加工,直到得到一条可执行且稳定的轨迹

三、 关键技术细节实现手册

3.1 五次多项式系数求解矩阵(Quintic Polynomial Coefficients)

在 Lattice Planner 中,纵向 S ( t ) S(t) S(t) 与横向 L ( t ) L(t) L(t) 都用 五次多项式

p ( t ) = a 0 + a 1 t + a 2 t 2 + a 3 t 3 + a 4 t 4 + a 5 t 5 p(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3 + a_4 t^4 + a_5 t^5 p(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5

  • 已知边界条件(位置、速度、加速度):

{ p ( 0 ) = p 0 , p ˙ ( 0 ) = v 0 , p ¨ ( 0 ) = a 0 p ( T ) = p T , p ˙ ( T ) = v T , p ¨ ( T ) = a T \begin{cases} p(0) = p_0,\quad \dot{p}(0) = v_0,\quad \ddot{p}(0) = a_0 \\ p(T) = p_T,\quad \dot{p}(T) = v_T,\quad \ddot{p}(T) = a_T \end{cases} {p(0)=p0,p˙(0)=v0,p¨(0)=a0p(T)=pT,p˙(T)=vT,p¨(T)=aT

  • 矩阵形式求解

x = [ a 0 , a 1 , a 2 , a 3 , a 4 , a 5 ] ⊤ \mathbf{x} = [a_0, a_1, a_2, a_3, a_4, a_5]^\top x=[a0,a1,a2,a3,a4,a5]

则前 3 个系数直接由起点条件确定:

a 0 = p 0 , a 1 = v 0 , a 2 = a 0 / 2 a_0 = p_0,\quad a_1 = v_0,\quad a_2 = a_0/2 a0=p0,a1=v0,a2=a0/2

剩余 3 个系数由终点条件解出:

[ T 3 T 4 T 5 3 T 2 4 T 3 5 T 4 6 T 12 T 2 20 T 3 ] [ a 3 a 4 a 5 ] = [ p T − ( a 0 + a 1 T + a 2 T 2 ) v T − ( a 1 + 2 a 2 T ) a T − ( 2 a 2 ) ] \begin{bmatrix} T^3 & T^4 & T^5 \\ 3T^2 & 4T^3 & 5T^4 \\ 6T & 12T^2 & 20T^3 \end{bmatrix} \begin{bmatrix} a_3 \\ a_4 \\ a_5 \end{bmatrix} = \begin{bmatrix} p_T - (a_0 + a_1 T + a_2 T^2) \\ v_T - (a_1 + 2a_2 T) \\ a_T - (2a_2) \end{bmatrix} T33T26TT44T312T2T55T420T3 a3a4a5 = pT(a0+a1T+a2T2)vT(a1+2a2T)aT(2a2)

数值实现可直接用 numpy.linalg.solve 求解。


3.2 碰撞检测几何模型(Collision Checking Geometry)

为了快速判断轨迹是否与障碍物冲突,常用简化矩形模型:

  • 车辆包络
    • 长度 L car L_{\text{car}} Lcar
    • 宽度 W car W_{\text{car}} Wcar
    • ( x c , y c , θ ) (x_c, y_c, \theta) (xc,yc,θ) 下,车辆四个顶点坐标为:

p i = R ( θ ) ⋅ p i body + [ x c , y c ] ⊤ \mathbf{p}_i = \mathbf{R}(\theta) \cdot \mathbf{p}_i^{\text{body}} + [x_c, y_c]^\top pi=R(θ)pibody+[xc,yc]

其中 R ( θ ) \mathbf{R}(\theta) R(θ) 为旋转矩阵, p i body \mathbf{p}_i^{\text{body}} pibody 为车体坐标系下顶点位置。

  • 障碍物表示
    • 静态障碍物:已知多边形/矩形
    • 动态障碍物:已知轨迹 O ( t ) O(t) O(t) + 包络
  • 检测方法
    1. AABB 快速排除(Axis-Aligned Bounding Box)
    2. SAT 分离轴定理(支持凸多边形)
    3. 若采用圆形近似,直接比较中心距离:

∥ p car − p obs ∥ < r car + r obs \|\mathbf{p}_{\text{car}} - \mathbf{p}_{\text{obs}} \| < r_{\text{car}} + r_{\text{obs}} pcarpobs<rcar+robs


3.3 代价函数归一化(Cost Normalization)

为了在不同物理量(时间、加速度、横向偏移等)之间进行加权,先对每类代价做归一化:

C norm = C − C min ⁡ C max ⁡ − C min ⁡ + ϵ C_{\text{norm}} = \frac{C - C_{\min}}{C_{\max} - C_{\min} + \epsilon} Cnorm=CmaxCmin+ϵCCmin

  • 典型代价项
    1. 舒适性代价:加速度平方和、加加速度平方和
    2. 安全代价:最小障碍物距离的倒数
    3. 参考线偏移:末端 ∣ L end − L ref ∣ |L_{\text{end}} - L_{\text{ref}}| LendLref
  • 归一化后加权求和:

C total = w s C s + w c C c + w l C l C_{\text{total}} = w_s C_s + w_c C_c + w_l C_l Ctotal=wsCs+wcCc+wlCl

其中权重 w i w_i wi 从经验或自动调参获得。


3.4 参数默认值表

参数 符号 默认值 说明
规划时域 T plan T_{\text{plan}} Tplan 4.0 s 每次局部规划的时间长度
最小/最大到达时间 T min ⁡ , T max ⁡ T_{\min},T_{\max} Tmin,Tmax 3.0 s / 5.0 s 用于终端状态采样
纵向加速度限制 a max ⁡ a_{\max} amax 2.5 m/s² 驾驶舒适度约束
纵向加加速度限制 j max ⁡ j_{\max} jmax 2.0 m/s³ 减少急加减速
最大曲率 κ max ⁡ \kappa_{\max} κmax 0.2 1/m 转向半径约 5 m
最大侧向加速度 a y , max ⁡ a_{y,\max} ay,max 2.0 m/s² 横向舒适性约束
车长 L car L_{\text{car}} Lcar 4.8 m 碰撞检测用
车宽 W car W_{\text{car}} Wcar 1.8 m 碰撞检测用
横向终端采样 L end L_{\text{end}} Lend 当前车道中心 ±0.5m、相邻车道中心 保证覆盖换道场景
纵向终端采样间隔 Δ S \Delta S ΔS 10 m 保证覆盖加减速范围

网站公告

今日签到

点亮在社区的每一天
去签到