1. CRV项目路径规划模块架构解析
在自动驾驶系统中,路径规划模块承担着将全局导航指令转化为可执行轨迹的关键任务。CRV项目中的MPCLocalPlanner类采用分层处理架构,其核心设计理念可概括为"全局粗导引,局部精修整"。该模块通过四个处理阶段实现这一目标:
- 输入预处理阶段:对车辆状态和全局路径进行坐标转换和有效性校验
- 路径平滑阶段:使用B样条算法生成几何连续的可行驶路径
- 速度规划阶段:结合运动学约束和曲率限制生成速度剖面
- 安全边界生成阶段:计算轨迹两侧的动态可行驶区域
实际工程中发现,输入路径点的质量直接影响规划效果。建议在调用set_global_plan()前,对原始路径进行至少10米的Douglas-Peucker算法压缩,保留关键特征点即可。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法实现细节
2.1 B样条路径平滑技术
模块采用三次均匀B样条(k=3)进行路径插值,其数学表达式为:
code复制C(u) = Σ[Ni,p(u)·Pi] (i=0 to n)
其中控制点Pi通过scipy.interpolate.splprep自动计算得出。关键参数配置如下表所示:
| 参数名 | 推荐值 | 作用说明 |
|---|---|---|
| s | 0.5 | 平滑因子,值越小越贴近原始路径 |
| k | 3 | 样条阶数,决定曲线连续性 |
| nest | -1 | 自动计算控制点数量 |
在实测中发现,当原始路径点间距大于3米时,直接插值会导致曲率突变。解决方法是在调用splprep前,先对输入路径进行线性插值加密,确保点间距在0.5-1米范围内。
2.2 曲率限速模型
基于车辆动力学原理,弯道限速公式为:
code复制v_max = √(a_lat_max / |κ|)
其中κ通过中心差分法计算:
python复制def calculate_curvature(x, y):
dx = np.gradient(x)
dy = np.gradient(y)
ddx = np.gradient(dx)
ddy = np.gradient
