2. 运动学基础:位置、速度、加速度、加加速度(Jerk)与刚体运动学
各位好,我是老张。在运动控制这行摸爬滚打了十几年,今天咱们来聊聊最基础、但也最容易被忽视的东西——运动学基础。
你可能会想:“位置、速度、加速度,这不是高中物理吗?” 没错,但我要告诉你,在真正的运动控制系统中,这些概念的定义方式、它们之间的数学关系,以及那个常被忽略的“加加速度(Jerk)”,才是决定你设备能不能跑得稳、停得准的关键。
我个人习惯把运动学比作“运动的语言”。不懂这门语言,你写出来的轨迹程序就像在说胡话,电机要么抖得像筛糠,要么过冲撞限位。咱们今天就把这门语言的基础语法彻底捋清楚。
2.1 位置、速度、加速度:从离散到连续
先看最核心的三个量。在运动控制器里,它们不是抽象的物理量,而是实实在在的寄存器数值。
| 物理量 | 符号 | 单位 | 控制器中的含义 |
|---|---|---|---|
| 位置 | \( p \) 或 \( x \) | mm, deg, pulse | 编码器反馈的当前坐标 |
| 速度 | \( v \) | mm/s, rpm | 单位时间内的位置变化量 |
| 加速度 | \( a \) | mm/s² | 单位时间内的速度变化量 |
它们之间的数学关系,说白了就是微积分。但在数字控制器里,我们处理的是离散采样点。
- 位置是速度的积分:\( p(t) = p_0 + \int v(t) dt \)
- 速度是位置的微分:\( v(t) = \frac{dp}{dt} \)
- 加速度是速度的微分:\( a(t) = \frac{dv}{dt} = \frac{d^2p}{dt^2} \)
嗯,这里要注意。在代码里,我们通常用差分代替微分。比如计算当前速度:
// 离散域的速度计算(单位:counts/周期)
int32_t current_velocity = (current_position - last_position) / dt;
我在项目中遇到过一个问题:直接用位置差分算速度,噪声会被放大。尤其是低分辨率编码器,位置跳变几个脉冲,算出来的速度就剧烈抖动。后来我加了一阶低通滤波,才把速度信号稳住。
2.2 加加速度(Jerk):被忽视的“舒适度”指标
加加速度,英文叫 Jerk,是加速度的变化率。单位是 mm/s³。
你想想看,为什么有些设备启动时“哐”一下,有些则像丝绸一样顺滑?区别就在 Jerk 上。
- Jerk 大:加速度突变,产生冲击力,机械振动、噪音、甚至螺栓松动。
- Jerk 小:加速度平滑过渡,运动柔和,定位更准。
数学定义很简单:
\[ j(t) = \frac{da}{dt} = \frac{d^2v}{dt^2} = \frac{d^3p}{dt^3} \]
说白了,Jerk 就是位置的“三阶导数”。
我曾经调试一台高速贴片机,加速度已经设得很低了,但机器还是抖得厉害。查了半天,发现是 Jerk 没限制,加速度从 0 瞬间跳到最大值,相当于给了机械系统一个“冲击激励”。加上 S 型速度曲线(本质就是限制 Jerk)后,问题立刻解决。
2.3 四者关系:一张图看懂运动学链条
为了让你更直观地理解,我画了一张图。这张图展示了从位置到 Jerk 的完整微分/积分链条,以及它们在轨迹规划中的角色。
从这张图可以看得很清楚:微分方向是“求导”,积分方向是“规划”。我们做轨迹规划,本质上就是从 Jerk 开始,逐层积分得到位置指令。
2.4 刚体运动学简介:从点到刚体
前面讨论的都是“质点”运动。但在实际系统中,我们控制的是刚体——有尺寸、有姿态的物体。
刚体运动学比质点运动学多了一个维度:旋转。
| 运动类型 | 质点 | 刚体 |
|---|---|---|
| 位置描述 | 坐标 (x, y, z) | 位置 + 姿态 (x, y, z, Rx, Ry, Rz) |
| 速度描述 | 线速度 v | 线速度 v + 角速度 ω |
| 加速度描述 | 线加速度 a | 线加速度 a + 角加速度 α |
| Jerk 描述 | 线加加速度 j | 线加加速度 j + 角加加速度 ζ |
刚体运动学中,最核心的概念是 齐次变换矩阵。它用一个 4x4 的矩阵,同时描述了刚体的位置和姿态。
// 齐次变换矩阵示例(绕 Z 轴旋转 θ 角度,并平移 dx, dy, dz)
// | cosθ -sinθ 0 dx |
// | sinθ cosθ 0 dy |
// | 0 0 1 dz |
// | 0 0 0 1 |
我个人习惯把齐次变换矩阵看作“刚体的身份证”。你给它一个输入(比如关节角度),它就能告诉你末端执行器在空间中的精确位置和朝向。
嗯,这里要特别提醒一点:角速度和线速度不能直接类比。角速度的单位是 rad/s,线速度是 m/s,两者通过“旋转半径”联系起来。在轨迹规划时,如果你同时规划平动和转动,一定要考虑它们之间的耦合关系。我曾经见过一个六轴机器人程序,平动轨迹很平滑,但末端姿态在路径中间突然翻转——就是因为角速度规划没跟上线速度的变化。
2.5 本章小结:运动学是轨迹规划的“语法”
咱们这一章内容不少,我帮你捋一下核心要点:
- 位置、速度、加速度、加加速度 构成了运动学描述的完整链条,它们之间通过微分/积分相互转换。
- 加加速度(Jerk) 是衡量运动平滑度的关键指标,限制 Jerk 能有效减少机械振动。
- 刚体运动学 在质点运动学的基础上增加了旋转维度,齐次变换矩阵是描述刚体状态的标准工具。
- 在实际项目中,离散域的计算精度 和 平动与转动的耦合 是两个最常见的坑,需要特别留意。
这些概念看起来简单,但它们是后续所有轨迹规划算法(梯形、S型、多项式、样条)的基石。你想想看,如果连“位置的一阶导数是速度”这种关系都搞不清楚,后面怎么理解速度规划中的“时间最优”问题?