1. 引言:人类直觉中的"匀速"

在工业机器人、动画和航天领域,我们对"匀速运动"的直觉包含两个独立的诉求:

  1. 平移要直:末端在世界坐标系中沿直线运动,速度恒定。
  2. 旋转要匀:姿态绕固定轴以恒定角速度旋转,不忽快忽慢。

SLERP(旋转)+ LERP(平移) 正是同时满足这两个诉求的标准方案。本文用严格的公式说明它为什么"符合直觉",并对比其他方案的差异。


2. SLERP + LERP 的完整公式

2.1 问题设定

给定初始位姿 T0=(R0,p0)T_0 = (R_0, p_0)T0​=(R0​,p0​) 和末位姿 T1=(R1,p1)T_1 = (R_1, p_1)T1​=(R1​,p1​),插值参数 t∈[0,1]t \in [0, 1]t∈[0,1]。

2.2 旋转部分:四元数 SLERP

将旋转矩阵转为单位四元数 q0,q1∈S3q_0, q_1 \in S^3q0​,q1​∈S3。定义相对旋转:

qrel=q0−1⊗q1q_{\text{rel}} = q_0^{-1} \otimes q_1qrel​=q0−1​⊗q1​
将其写成指数形式:

qrel=exp⁡(ωb2),ωb∈R3q_{\text{rel}} = \exp\left(\frac{\omega_b}{2}\right), \quad \omega_b \in \mathbb{R}^3qrel​=exp(2ωb​​),ωb​∈R3
其中 ωb\omega_bωb​ 是相对旋转的轴角向量(体坐标系下)。

SLERP 插值公式:

q(t)=q0⊗exp⁡(t⋅ωb2)\boxed{q(t) = q_0 \otimes \exp\left(t \cdot \frac{\omega_b}{2}\right)}q(t)=q0​⊗exp(t⋅2ωb​​)​
展开指数:

q(t)=q0⊗(cos⁡∥ωb∥t2+ω^bsin⁡∥ωb∥t2)q(t) = q_0 \otimes \left(\cos\frac{\|\omega_b\| t}{2} + \hat{\omega}_b \sin\frac{\|\omega_b\| t}{2}\right)q(t)=q0​⊗(cos2∥ωb​∥t​+ω^b​sin2∥ωb​∥t​)
其中 ω^b=ωb/∥ωb∥\hat{\omega}_b = \omega_b / \|\omega_b\|ω^b​=ωb​/∥ωb​∥ 是单位旋转轴。

2.3 平移部分:线性插值 LERP

p(t)=(1−t) p0+t p1\boxed{p(t) = (1-t)\,p_0 + t\,p_1}p(t)=(1−t)p0​+tp1​​

2.4 完整位姿

T(t)=[R(t)p(t)01]T(t) = \begin{bmatrix} R(t) & p(t) \\ 0 & 1 \end{bmatrix}T(t)=[R(t)0​p(t)1​]
其中 R(t)R(t)R(t) 由 q(t)q(t)q(t) 转换得到。


3. 为什么 p˙\dot{p}p˙​、ωb\omega_bωb​、ωs\omega_sωs​ 恒定?

3.1 末端点速度 p˙\dot{p}p˙​ 恒定

对 LERP 求导:

p˙(t)=ddt[(1−t)p0+tp1]=p1−p0=常数\dot{p}(t) = \frac{d}{dt}\left[(1-t)p_0 + tp_1\right] = p_1 - p_0 = \text{常数}p˙​(t)=dtd​[(1−t)p0​+tp1​]=p1​−p0​=常数
结论:p˙\dot{p}p˙​ 是常向量,末端在世界坐标系中沿直线匀速运动。

3.2 体角速度 ωb\omega_bωb​ 恒定

四元数运动学方程:

q˙=12q⊗ωb\dot{q} = \frac{1}{2} q \otimes \omega_bq˙​=21​q⊗ωb​
对 q(t)=q0⊗exp⁡(tωb/2)q(t) = q_0 \otimes \exp(t\omega_b/2)q(t)=q0​⊗exp(tωb​/2) 求导:

q˙(t)=q0⊗exp⁡(tωb2)⊗ωb2\dot{q}(t) = q_0 \otimes \exp\left(t\frac{\omega_b}{2}\right) \otimes \frac{\omega_b}{2}q˙​(t)=q0​⊗exp(t2ωb​​)⊗2ωb​​
于是:

q(t)−1q˙(t)=exp⁡(−tωb2)⊗q0−1⊗q0⊗exp⁡(tωb2)⊗ωb2=ωb2q(t)^{-1} \dot{q}(t) = \exp\left(-t\frac{\omega_b}{2}\right) \otimes q_0^{-1} \otimes q_0 \otimes \exp\left(t\frac{\omega_b}{2}\right) \otimes \frac{\omega_b}{2} = \frac{\omega_b}{2}q(t)−1q˙​(t)=exp(−t2ωb​​)⊗q0−1​⊗q0​⊗exp(t2ωb​​)⊗2ωb​​=2ωb​​
所以:

ωb(t)=2 q(t)−1q˙(t)=ωb=常数\boxed{\omega_b(t) = 2\,q(t)^{-1}\dot{q}(t) = \omega_b = \text{常数}}ωb​(t)=2q(t)−1q˙​(t)=ωb​=常数​

3.3 空间角速度 ωs\omega_sωs​ 恒定

空间角速度的定义:

ωs(t)=2 q˙(t) q(t)−1\omega_s(t) = 2\,\dot{q}(t)\,q(t)^{-1}ωs​(t)=2q˙​(t)q(t)−1
计算:

q˙(t)q(t)−1=q0⊗exp⁡(tωb2)⊗ωb2⊗exp⁡(−tωb2)⊗q0−1\dot{q}(t)q(t)^{-1} = q_0 \otimes \exp\left(t\frac{\omega_b}{2}\right) \otimes \frac{\omega_b}{2} \otimes \exp\left(-t\frac{\omega_b}{2}\right) \otimes q_0^{-1}q˙​(t)q(t)−1=q0​⊗exp(t2ωb​​)⊗2ωb​​⊗exp(−t2ωb​​)⊗q0−1​
因为 ωb\omega_bωb​ 与 exp⁡(tωb/2)\exp(t\omega_b/2)exp(tωb​/2) 可交换:

=q0⊗ωb2⊗q0−1= q_0 \otimes \frac{\omega_b}{2} \otimes q_0^{-1}=q0​⊗2ωb​​⊗q0−1​
所以:

ωs(t)=q0 ωb q0−1=R0 ωb=常数\boxed{\omega_s(t) = q_0\,\omega_b\,q_0^{-1} = R_0\,\omega_b = \text{常数}}ωs​(t)=q0​ωb​q0−1​=R0​ωb​=常数​
几何解释:ωb\omega_bωb​ 是旋转轴方向。绕轴旋转不改变轴本身,因此 ωs=R(t)ωb=R0ωb\omega_s = R(t)\omega_b = R_0\omega_bωs​=R(t)ωb​=R0​ωb​ 恒定。

3.4 恒定性总结

量是否恒定数学原因
p˙\dot{p}p˙​✅LERP 是线性函数
ωb\omega_bωb​✅指数映射保持生成元不变
ωs\omega_sωs​✅绕固定轴旋转不改变轴方向

4. 对比:若要求空间或体线速度恒定

4.1 空间线速度 vsv_svs​ 恒定 → ScLERP

空间旋量的线速度分量为:

vs=p˙−ωs×pv_s = \dot{p} - \omega_s \times pvs​=p˙​−ωs​×p
若要求 vsv_svs​ 恒定,则 p(t)p(t)p(t) 不能再是直线插值。真实的运动为螺旋运动:

T(t)=T0exp⁡(t ξ∧),ξ=(ω,v)T(t) = T_0 \exp(t\,\xi^\wedge), \quad \xi = (\omega, v)T(t)=T0​exp(tξ∧),ξ=(ω,v)
此时末端轨迹为螺旋线,不再走直线。

4.2 体线速度 vbv_bvb​ 恒定 → 同上

体线速度与空间线速度通过伴随变换关联:

vb=R(t)T(vs−ωs×p)=R(t)Tp˙v_b = R(t)^T (v_s - \omega_s \times p) = R(t)^T \dot{p}vb​=R(t)T(vs​−ωs​×p)=R(t)Tp˙​
若 vbv_bvb​ 恒定,则 p˙\dot{p}p˙​ 必须随 R(t)R(t)R(t) 旋转,末端同样走螺旋线。

4.3 对比表

方案p˙\dot{p}p˙​ωb\omega_bωb​ωs\omega_sωs​vsv_svs​vbv_bvb​末端轨迹
SLERP+LERP✅✅✅❌❌直线
ScLERP❌✅✅✅✅螺旋线

核心权衡:末端走直线(满足工艺)与旋量线速度恒定(满足数学优美)不可兼得。


5. 为什么 SLERP 用四元数而不是旋转矩阵?

5.1 旋转矩阵插值的困难

若直接对 R0R_0R0​ 和 R1R_1R1​ 做线性插值:

Rlin(t)=(1−t)R0+tR1R_{\text{lin}}(t) = (1-t)R_0 + tR_1Rlin​(t)=(1−t)R0​+tR1​
结果不是旋转矩阵,因为:

  • 正交性破坏:RlinTRlin≠IR_{\text{lin}}^T R_{\text{lin}} \neq IRlinT​Rlin​=I
  • 行列式不等于 1

必须做正交化(如 SVD),成本极高。

5.2 四元数 SLERP 的优势

维度四元数 SLERP旋转矩阵插值
存储4 个浮点数9 个浮点数
插值公式闭式解析需要矩阵对数/指数
归一化除以模长SVD 或 Gram-Schmidt
每步运算~16 次乘法~27 次乘法 + 正交化
奇异性无无
角速度均匀性✅ 天然保证需额外计算

5.3 数学本质

四元数 SLERP 的核心是:

q(t)=q0⊗exp⁡(tωb2)q(t) = q_0 \otimes \exp\left(t\frac{\omega_b}{2}\right)q(t)=q0​⊗exp(t2ωb​​)
这是 S3S^3S3 超球面上的测地线,天然对应等角速度旋转。而矩阵插值无法直接表达这种指数结构。


6. 如果直接对 RRR 或 RPY 插值,角速度均匀吗?

6.1 对旋转矩阵直接插值

若对 R0R_0R0​ 和 R1R_1R1​ 的每个元素做线性插值:

Rnaive(t)=(1−t)R0+tR1R_{\text{naive}}(t) = (1-t)R_0 + tR_1Rnaive​(t)=(1−t)R0​+tR1​
结果:

  • 不是旋转矩阵(正交性破坏)。
  • 即使事后正交化,得到的角速度不均匀。
  • 因为正交化过程是非线性的,会引入额外的角速度变化。

结论:角速度不均匀 ❌。

6.2 对欧拉角(RPY)插值

若将 R0,R1R_0, R_1R0​,R1​ 转为欧拉角 (ϕ0,θ0,ψ0)(\phi_0, \theta_0, \psi_0)(ϕ0​,θ0​,ψ0​) 和 (ϕ1,θ1,ψ1)(\phi_1, \theta_1, \psi_1)(ϕ1​,θ1​,ψ1​),然后线性插值:

ϕ(t)=(1−t)ϕ0+tϕ1,类似地 θ(t),ψ(t)\phi(t) = (1-t)\phi_0 + t\phi_1, \quad \text{类似地 } \theta(t), \psi(t)ϕ(t)=(1−t)ϕ0​+tϕ1​,类似地 θ(t),ψ(t)
问题:

  1. 万向节锁:当 θ=±π/2\theta = \pm\pi/2θ=±π/2 时,ϕ\phiϕ 和 ψ\psiψ 耦合,插值结果不可预测。
  2. 角速度不均匀:三个欧拉角的线性变化不对应刚体的恒定角速度旋转。因为欧拉角速度与体角速度的关系为:

ωb=E(ϕ,θ,ψ)[ϕ˙θ˙ψ˙]\omega_b = E(\phi, \theta, \psi) \begin{bmatrix} \dot{\phi} \\ \dot{\theta} \\ \dot{\psi} \end{bmatrix}ωb​=E(ϕ,θ,ψ)​ϕ˙​θ˙ψ˙​​​
其中 EEE 是与角度相关的矩阵。即使 ϕ˙,θ˙,ψ˙\dot{\phi}, \dot{\theta}, \dot{\psi}ϕ˙​,θ˙,ψ˙​ 是常数,ωb\omega_bωb​ 也会随姿态变化。

  1. 路径非测地线:欧拉角空间的直线在 SO(3)SO(3)SO(3) 流形上不是测地线。

结论:角速度不均匀 ❌。

6.3 对比总结

插值方式角速度均匀?无奇异性?结果合法?
四元数 SLERP✅✅✅
旋转矩阵线性插值❌✅❌(需正交化)
欧拉角线性插值❌❌(万向锁)⚠️(一般情况合法)

7. 总结

SLERP+LERP 之所以符合人类认知的"匀速",是因为它同时保证了三个量的恒定:

p˙=常数,ωb=常数,ωs=常数\boxed{\dot{p} = \text{常数}, \quad \omega_b = \text{常数}, \quad \omega_s = \text{常数}}p˙​=常数,ωb​=常数,ωs​=常数​

  • p˙\dot{p}p˙​ 恒定 → 末端走直线(视觉直观)。
  • ωb\omega_bωb​ 恒定 → 绕体坐标系固定轴匀速旋转(体感直观)。
  • ωs\omega_sωs​ 恒定 → 绕世界坐标系固定轴匀速旋转(空间直观)。

代价:两个旋量线速度 vs,vbv_s, v_bvs​,vb​ 不恒定。若追求旋量层面的均匀,则必须用 ScLERP,但末端将走螺旋线而非直线。

工程选择:工业机器人优先满足"末端走直线"(工艺需求),因此 SLERP+LERP 成为标准方案。它牺牲了 SE(3)SE(3)SE(3) 流形上的测地线最优性,换来了物理空间中的路径可控性。

四元数的不可替代性:SLERP 必须用四元数实现,因为只有四元数(和旋转矩阵)能表示姿态,而四元数提供了最简洁、高效、无奇异的指数映射结构。欧拉角插值虽然直观,但角速度不均匀且存在万向锁;旋转矩阵插值需要昂贵的正交化,且角速度同样不均匀。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐