1. 速度规划基础:速度规划在机器人/自动驾驶中的作用,常见速度曲线类型
大家好,我是老张。做运动控制这行十几年了,今天咱们聊聊速度规划。
速度规划,说白了就是告诉机器人或车子:你什么时候该跑多快,什么时候该停下来。听起来简单?我刚开始做项目时也这么想,结果第一次调试AGV小车,启动时直接一个急加速,货架上的零件全飞了。嗯,从那以后我再也不敢小看速度规划了。
1.1 为什么需要速度规划?
你想想看,如果让电机直接从一个速度跳到另一个速度,会发生什么?
- 冲击力巨大——机械结构受不了,齿轮打齿、皮带断裂是常事
- 定位不准——急停时惯性大,过冲严重,精度根本保证不了
- 乘客体验差——自动驾驶里一脚急刹,后排乘客直接贴到前座
我在做工业机器人项目时遇到过一件事:客户反馈说机器人运行时有异响。查了半天,发现就是速度规划太粗糙,每次加减速都像被人踹了一脚。后来换成S形曲线,异响消失了,节拍还快了15%。
核心观点:速度规划的本质是在效率和舒适性之间找平衡。没有规划的速度,就像没有刹车的跑车——快是快,但不敢开。
1.2 速度规划在机器人/自动驾驶中的角色
我习惯把速度规划比作交响乐的指挥。每个关节电机、每个轮子都是乐手,指挥得让它们同时起、同时停、节奏一致。
具体来说,速度规划解决三个问题:
- 什么时候加速?——起步阶段,不能太猛也不能太慢
- 什么时候匀速?——中间段,保持效率
- 什么时候减速?——终点前,平稳停下
在自动驾驶里,速度规划还要考虑更多:前方有障碍物怎么办?弯道要不要减速?红绿灯怎么响应?这些都得靠速度曲线来约束。
我的经验:做速度规划时,永远要留安全余量。我曾经在AGV项目里把加减速时间算得太极限,结果地面稍微有点油渍,车轮就打滑了。从那以后,我规划的速度曲线都会留10%-15%的余量。
1.3 常见速度曲线类型
做这行这么多年,常用的速度曲线就那几种。我给大家梳理一下:
1.3.1 梯形速度曲线
这是最基础、最直观的曲线。形状就像个梯形:先匀加速、再匀速、最后匀减速。
- 优点:计算简单,实现容易,适合对冲击要求不高的场合
- 缺点:加速度突变,启动和停止时有冲击
- 适用场景:传送带、简单搬运、低速AGV
我记得刚入行时,师傅教我的第一个速度规划就是梯形曲线。代码就几行,但跑起来确实有顿挫感。
// 梯形速度规划示例(伪代码)
float t_acc = 0.5; // 加速时间
float t_const = 2.0; // 匀速时间
float t_dec = 0.5; // 减速时间
float v_max = 1.0; // 最大速度
if (t < t_acc) {
v = v_max * (t / t_acc); // 加速段
} else if (t < t_acc + t_const) {
v = v_max; // 匀速段
} else {
v = v_max * (1 - (t - t_acc - t_const) / t_dec); // 减速段
}
1.3.2 S形速度曲线
梯形曲线有冲击?那就把尖角磨圆。S形曲线在加减速阶段用了正弦函数或多项式,让加速度连续变化。
- 优点:平滑无冲击,机械寿命长,定位精度高
- 缺点:计算量稍大,参数调起来麻烦
- 适用场景:精密装配、高速机器人、自动驾驶
我做过一个半导体封装项目,要求定位精度0.01mm。梯形曲线根本不行,每次停止都会过冲。换成S形曲线后,精度达标了,设备噪音也降了3分贝。
注意:S形曲线虽然好,但参数设置不当反而会出问题。我曾经把加加速度(Jerk)设得太小,结果加速时间过长,节拍完全跟不上。后来总结:S形曲线的Jerk值要跟系统惯量匹配。
1.3.3 多项式速度曲线
梯形和S形都是固定形状。如果系统有特殊要求,比如必须经过某个速度点、或者要避开共振频率,那就得上多项式曲线。
- 优点:灵活,可以定制任意形状
- 缺点:计算复杂,参数多,调试难度大
- 适用场景:特殊工艺、高动态响应、振动抑制
常用的多项式有三次、五次、七次。次数越高,曲线越平滑,但计算量也越大。我个人习惯用五次多项式,平衡了平滑度和计算效率。
1.4 三种曲线对比
为了方便大家选型,我整理了一张表:
| 特性 | 梯形曲线 | S形曲线 | 多项式曲线 |
|---|---|---|---|
| 计算复杂度 | 低 | 中 | 高 |
| 平滑度 | 差(有冲击) | 好 | 最好 |
| 参数数量 | 3个 | 5-7个 | 8个以上 |
| 适用速度 | 低速 | 中高速 | 全速域 |
| 调试难度 | 简单 | 中等 | 困难 |
| 典型应用 | 传送带、仓储 | 机器人、自动驾驶 | 精密加工、航天 |
1.5 知识体系总览
下面这张图是我自己画的,把速度规划的核心脉络理清楚了:
1.6 选型建议
说了这么多,到底该怎么选?我给大家几个实用建议:
- 新手入门:先从梯形曲线开始,跑通了再升级
- 精度要求高:直接上S形,别在梯形上浪费时间
- 特殊工况:比如要避开某个共振频率,用多项式定制
- 算力有限:梯形曲线最省资源,单片机也能跑
我的习惯:做原型验证时先用梯形曲线,快速验证功能。等系统稳定了,再换成S形曲线优化性能。这样既保证了开发效率,又保证了最终品质。
好了,这一章就到这里。速度规划是运动控制的基石,后面的轨迹规划、联动控制都建立在这个基础上。希望大家先把这三种曲线吃透,后面我们会一步步深入。