4、运动学模型:位置、速度、加速度关系、梯形速度曲线规划、S形速度曲线规划
各位好,我是老张。今天咱们聊聊运动学模型。说实话,这是整个运动控制系统的地基。地基没打好,上面盖的楼再漂亮也得塌。我在做数字孪生项目时,见过太多因为运动学模型没搞对,导致仿真和实际设备对不上的案例。
4.1 位置、速度、加速度的三角关系
先说说最基础的东西。位置、速度、加速度,这三者是什么关系?说白了就是微积分的关系。
- 位置:物体在空间中的坐标,单位是米(mm)
- 速度:位置对时间的一阶导数,单位是 m/s
- 加速度:速度对时间的一阶导数,单位是 m/s²
反过来看:加速度积分得到速度,速度积分得到位置。这个逻辑在数字孪生里特别重要。你想想看,我们在仿真中控制的是加速度,但最终要看到的是位置变化。中间隔了一层速度。
核心公式:
v(t) = v₀ + ∫a(t)dt
s(t) = s₀ + ∫v(t)dt
我在项目中遇到过一个问题:仿真时加速度给得很大,但位置变化却很小。查了半天才发现,是积分步长设置太大了,导致数值积分精度不够。嗯,这里要注意,仿真步长一般不要超过控制周期的 1/10。
4.2 梯形速度曲线规划
梯形速度曲线,这是最常用的速度规划方式。为什么叫梯形?你画出速度-时间图,形状就像个梯形。
它的逻辑很简单:先匀加速,再匀速,最后匀减速。三个阶段。
我个人习惯:在调试初期先用梯形曲线。因为它参数少,容易调。等系统稳定了,再考虑更复杂的曲线。
梯形曲线的关键参数有三个:
- 最大速度 Vmax:电机能跑多快
- 加速度 a:电机加速有多猛
- 总位移 S:要走多远
计算过程是这样的:
// 梯形速度曲线规划
// 输入:总位移 S,最大速度 Vmax,加速度 a
// 输出:加速时间 ta,匀速时间 tv,减速时间 td
ta = Vmax / a // 加速时间
td = Vmax / a // 减速时间(通常等于加速时间)
S_acc = 0.5 * a * ta² // 加速段位移
S_dec = 0.5 * a * td² // 减速段位移
if (S_acc + S_dec >= S) {
// 三角形曲线(没达到最大速度)
ta = sqrt(S / a)
td = ta
tv = 0
} else {
// 标准梯形
tv = (S - S_acc - S_dec) / Vmax
}
我曾经犯过一个错误:梯形曲线在加速和减速切换时,加速度会突变。这在物理上是不可能实现的。电机驱动器会报错,或者产生冲击。所以后来我改用了 S 形曲线。
4.3 S形速度曲线规划
S形曲线,说白了就是给加速度也加了平滑处理。梯形曲线的加速度是方波,S形曲线的加速度是梯形波。
S形曲线有七个阶段:
- 加加速:加速度从0增加到最大
- 匀加速:加速度保持最大
- 减加速:加速度从最大降到0
- 匀速:速度保持最大
- 加减速:加速度从0降到负最大
- 匀减速:加速度保持负最大
- 减减速:加速度从负最大升到0
注意:S形曲线的计算量比梯形大得多。在嵌入式系统里,如果 CPU 性能不够,建议离线计算好轨迹点,运行时直接查表。
为什么叫 S 形?因为速度曲线看起来像字母 S 的平滑版本。它消除了梯形曲线中的加速度突变,让运动更柔和。
我记得有一次调试一个高精度定位平台,用梯形曲线时末端总是有微小的抖动。换成 S 形曲线后,抖动消失了。原因就是加速度的连续变化减少了机械共振。
4.4 两种曲线的对比
| 特性 | 梯形曲线 | S形曲线 |
|---|---|---|
| 计算复杂度 | 低 | 高 |
| 加速度连续性 | 不连续(有突变) | 连续 |
| 运动平滑度 | 一般 | 优秀 |
| 执行时间 | 短 | 稍长 |
| 适用场景 | 快速定位、低精度 | 高精度、高平稳性 |
你想想看,如果你的设备只是做简单的搬运,梯形曲线完全够用。但如果是芯片贴装、精密测量这类场景,S形曲线是必须的。
4.5 知识体系结构图
下面这张图展示了运动学模型的核心逻辑。我习惯用这种图来梳理思路,也分享给你们。
4.6 避坑指南
最后分享几个我踩过的坑:
我曾经在梯形曲线规划时,忘记考虑加减速时间是否足够。结果电机还没加速到目标速度就开始减速了,变成了三角形曲线。运动时间比预期长了很多。
注意:S形曲线的加加速度(Jerk)不能设置太大。加加速度是加速度的变化率,单位是 m/s³。如果加加速度太大,虽然加速度连续了,但冲击依然存在。我一般把加加速度设为最大加速度的 10 倍左右。
好了,运动学模型这部分就聊到这儿。梯形曲线和 S 形曲线是基础中的基础,搞懂了它们,后面的轨迹规划、插补算法才能顺利展开。