1. 速度规划概述
速度规划是自动驾驶系统中的核心模块之一,负责为车辆生成安全、舒适且符合交通规则的速度曲线。简单来说,就是在已知路径的基础上,为路径上的每个点分配一个合适的速度值。
在商用车领域(如农机、物流车辆等),速度规划通常需要考虑以下特点:
- 工作场景相对固定(如农田、仓库等封闭或半封闭环境)
- 最高速度要求较低(一般不超过30km/h)
- 对舒适性要求相对宽松
- 需要处理特殊的作业模式(如犁地时的往复运动)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 速度规划的技术难点
2.1 基础约束条件
任何速度规划方案都需要满足以下基本约束:
-
动力学约束:
- 最大加速度/减速度(由发动机功率和制动能力决定)
- 最大加加速度(Jerk限制,影响乘坐舒适性)
- 弯道速度限制(防止侧翻或失控)
-
安全性约束:
- 必须能够在障碍物前安全停车
- 需要预留安全距离应对突发情况
-
作业需求约束:
- 满足特定作业场景的速度要求(如喷洒农药需要恒定低速)
- 处理特殊移动模式(如倒车、掉头等)
2.2 典型问题场景
在实际应用中,会遇到以下几类典型问题:
-
启停问题:
- 从静止加速到工作速度
- 从工作速度减速到完全停止
- 需要确保停止位置精确(如精准停靠在装卸点)
-
速度保持问题:
- 在直线路段保持恒定速度
- 在弯道自动降速保证安全
- 在坡道自动调整速度补偿重力影响
-
障碍物应对问题:
- 静态障碍物绕行时的速度调整
- 动态障碍物(如其他移动车辆)的避让策略
3. 速度规划实现方案
3.1 全局规划层设计
全局规划层负责设置关键速度控制点(速度锚点),这些点定义了速度曲线的"骨架"。
典型的速度锚点包括:
| 锚点类型 | 位置特征 | 期望速度 | 目的 |
|---|---|---|---|
| 起点 | s=0 | 当前车速 | 初始状态 |
| 终点 | s=s_end | 0或目标速度 | 最终目标 |
| 作业点 | 特定位置 | 作业速度 | 满足作业需求 |
| 转弯点 | 弯道处 | √(a_max/κ) | 防止侧翻 |
在农机等商用车应用中,全局规划通常较为简单,主要关注:
- 作业起点和终点的速度设置
- 特殊作业点(如掉头点)的速度标注
- 整体路径的速度限制
3.2 局部规划层实现
局部规划层在全局锚点之间进行精细化的速度调整,主要处理以下问题:
-
速度曲线生成:
- 使用梯形或S型速度曲线连接不同速度段
- 考虑加速度/减速度限制
- 确保加加速度在舒适范围内
-
场景适配处理:
- 直线加速/减速
- 弯道速度调整
- 障碍物绕行速度控制
-
特殊作业模式处理:
- 掉头时的速度过渡
- 倒车作业的速度控制
- 重复路径的速度一致性
4. 简单实现方案详解
4.1 基本速度规划算法
对于商用车应用,可以采用基于梯形速度曲线的简单规划方法:
-
确定三个关键速度:
- v_start:当前速度
- v_target:目标巡航速度
- v_end:终点速度
-
计算加速/减速距离:
python复制# 加速段距离计算 s_acc = (v_target² - v_start²) / (2 * a_acc) # 减速段距离计算 s_dec = (v_end² - v_target²) / (2 * a_dec) -
判断速度曲线类型:
- 如果有足够距离(s_acc + s_dec < S_total),采用"加速-匀速-减速"三段式
- 如果距离不足,计算能达到的最大过渡速度:
python复制
v_max = sqrt((v_start²*|a_dec| + v_end²*a_acc) / (a_acc + |a_dec|))
4.2 弯道速度处理
对于弯道路段,需要根据曲率调整目标速度:
-
计算弯道限速:
python复制
v_curve = sqrt(a_lat_max / κ)其中:
- a_lat_max:最大允许横向加速度(通常0.3-0.5g)
- κ:路径曲率
-
速度过渡策略:
- 在进入弯道前适当提前减速
- 保持弯道内恒定速度
- 出弯后平稳加速
4.3 障碍物绕行处理
遇到静态障碍物时,采用以下策略:
-
减速策略:
- 在障碍物周围设置减速区
- 绕行速度 = 基础速度 × 减速系数(通常0.3-0.5)
-
速度恢复策略:
- 完全绕过障碍物后逐步恢复目标速度
- 采用平滑过渡避免速度突变
5. 进阶实现方案
5.1 基于优化的速度规划
对于更复杂的场景,可以采用优化框架:
-
建立优化问题:
python复制min Σ(w1*(v-v_des)² + w2*a² + w3*jerk²) s.t. v ≤ v_max a_min ≤ a ≤ a_max jerk_min ≤ jerk ≤ jerk_max s_obs ≥ s_safe -
求解方法:
- 二次规划(QP)
- 模型预测控制(MPC)
5.2 混合规划框架
结合规则和优化的混合方案:
-
场景识别层:
- 识别当前驾驶场景(巡航、跟车、弯道等)
- 选择对应的规划策略
-
优化执行层:
- 根据场景需求设置不同的目标函数权重
- 在统一框架下求解最优速度曲线
6. 实现注意事项
6.1 实际工程问题
-
参数标定:
- 加速度/减速度限制需要根据实际车辆性能调整
- 不同载重情况下参数会有变化
-
延迟补偿:
- 考虑执行机构的响应延迟
- 提前规划避免控制滞后
-
异常处理:
- 设置最大允许速度偏差
- 规划失败时的安全策略(如紧急制动)
6.2 性能优化技巧
-
计算效率优化:
- 采用稀疏矩阵加速QP求解
- 使用查表法加速曲率计算
-
内存管理:
- 固定大小数组存储路径点
- 避免动态内存分配
-
代码组织建议:
- 将速度规划模块与路径规划解耦
- 提供清晰的接口定义
7. 测试与验证
7.1 仿真测试方案
-
典型场景测试:
- 直线加速/减速
- 弯道通行
- 障碍物绕行
-
边界条件测试:
- 最小转弯半径
- 最大坡度
- 极限加速度
7.2 实车调试要点
-
参数调整顺序:
- 先调直线性能
- 再调弯道性能
- 最后调特殊场景
-
安全措施:
- 设置人工急停开关
- 初始测试使用低速
- 逐步提高难度
在实际农机项目中,我们采用了基于规则的速度规划方案,通过以下参数配置获得了良好效果:
- 最大加速度:0.5 m/s²
- 最大减速度:-1.0 m/s²
- 弯道横向加速度限制:0.3g
- 障碍物减速系数:0.4
这种方案在保证安全性的同时,也能满足作业效率要求。对于更复杂的应用场景,可以考虑引入优化框架提高规划质量。
