共计 1889 个字符,预计需要花费 5 分钟才能阅读完成。
1. 背景与痛点
自动驾驶车辆在路口右转时面临多重技术挑战。右转场景通常涉及复杂的交通参与者交互,包括对向直行车辆、行人过街、自行车穿行等动态障碍物。主要痛点可归纳为:

- 盲区处理 :A 柱遮挡导致视觉盲区,需依赖多传感器冗余检测
- 轨迹平滑性 :传统规划算法在曲率变化处易产生突变,影响乘坐舒适性
- 决策时效性 :需在 100ms 内完成环境感知 - 决策 - 控制的闭环响应
- 规则合规性 :不同地区右转交规差异(如红灯是否允许右转)
2. 技术方案对比
| 方案类型 | 传统方法 | Apollo 优化方案 |
|---|---|---|
| 路径生成 | 固定半径圆弧 + 直线拼接 | 基于 Frenet 坐标系的五次多项式平滑 |
| 障碍物响应 | 完全停止等待 | 动态避让走廊 (Dynamic Corridor) |
| 决策框架 | 有限状态机 | 分层强化学习 (Hierarchical RL) |
| 控制执行 | PID 跟踪 | MPC+ 前馈补偿 |
3. 核心实现
3.1 多传感器数据融合
Apollo 采用前向毫米波雷达、摄像头、激光雷达的异构数据融合:
- 雷达提供 100m 范围内动态物体相对速度
- 摄像头实现交通灯检测和行人识别
- 激光雷达点云用于构建局部高精地图
通过卡尔曼滤波进行时间对齐后,各传感器数据输入到感知模块的统一坐标系中。
3.2 动态路径规划算法
右转路径在 Frenet 坐标系下分解为:
# Apollo 中的 Frenet 路径生成代码片段
class FrenetPath:
def __init__(self):
self.t = [] # 时间序列
self.d = [] # 横向偏移
self.s = [] # 纵向位移
def to_cartesian(self, reference_line):
# 将 Frenet 坐标转换回笛卡尔坐标系
cartesian_points = []
for i in range(len(self.s)):
s, d = self.s[i], self.d[i]
xy = reference_line.get_cartesian(s, d)
cartesian_points.append(xy)
return cartesian_points
3.3 曲率连续处理
采用 Quintic 多项式保证曲率连续:
l(s) = a0 + a1*s + a2*s² + a3*s³ + a4*s⁴ + a5*s⁵
通过约束条件:
– 起点 / 终点位置、速度、加速度
– 最大曲率限制(通常 <0.1 m⁻¹)
– 横向加速度限制(<1.5 m/s²)
4. 代码示例
以下展示 Apollo 中轨迹优化的关键实现:
// modules/planning/math/curve1d/quintic_polynomial_curve1d.cc
void QuinticPolynomialCurve1d::DeriveCoefficients(
const double x0, const double dx0, const double ddx0,
const double x1, const double dx1, const double ddx1,
const double param) {
// 计算五次多项式系数
const double p = param;
const double p2 = p * p;
const double p3 = p2 * p;
coeff_[0] = x0;
coeff_[1] = dx0;
coeff_[2] = ddx0 / 2.0;
Matrix3d A;
A << p3, p2 * p2, p2 * p3,
3 * p2, 4 * p3, 5 * p2 * p2,
6 * p, 12 * p2, 20 * p3;
Vector3d b;
b << x1 - coeff_[0] - coeff_[1] * p - coeff_[2] * p2,
dx1 - coeff_[1] - 2 * coeff_[2] * p,
ddx1 - 2 * coeff_[2];
Vector3d x = A.colPivHouseholderQr().solve(b);
coeff_[3] = x(0);
coeff_[4] = x(1);
coeff_[5] = x(2);
}
5. 性能考量
在北京亦庄测试基地的实测数据:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 规划耗时 (ms) | 120 | 65 |
| 轨迹抖动次数 /km | 8.2 | 1.3 |
| 急刹车次数 / 百次 | 15 | 3 |
6. 避坑指南
6.1 参数调优
- 曲率权重 :不宜超过 0.3,否则会导致路径过于保守
- 时间分辨率 :建议保持在 0.1s,过小会增加计算负荷
6.2 传感器标定
- 激光雷达与 IMU 的时间同步误差需 <5ms
- 摄像头标定板距离应覆盖 3 -50m 范围
- 雷达安装俯仰角建议 2 - 5 度避免地面反射
6.3 边缘 Case 处理
- 右转时对向车流突然加速:增加 10% 的安全余量
- 行人突然闯入:采用 TTC(Time-To-Collision)<2s 作为紧急制动阈值
7. 开放问题
当前方案在以下场景仍有优化空间:
- 无保护右转时的人车博弈决策
- 大雨天气下的传感器降级处理
- 特殊车辆(如超长货车)的路径预测
期待读者共同探讨更优的解决方案。
正文完
