机器人学:Rodrigues 公式
文章目录
0 引言
Rodrigues
公式:描述三维空间旋转的数学工具,用旋转轴和旋转角(轴角)来计算旋转后的向量或构造旋转矩阵,避免欧拉角的万向锁问题。
在机器人控制中,我们经常需要计算:
- 机械臂关节旋转后,末端执行器的位置(比如机器人拿杯子时手腕怎么转)。
- 无人机/机器人的姿态变化(比如四旋翼从水平变成倾斜飞行)。
Rodrigues
公式的作用:告诉你“某个物体绕一根轴转一定角度后,它的新位置 / 朝向”。
1 定义
Rodrigues
公式的两种等价形式:
- 向量形式
给定:旋转轴为单位向量 ω ^ \hat{\bm{\omega}} ω^,旋转角为 θ \theta θ,即计算绕单位向量 ω ^ \hat{\bm{\omega}} ω^ 旋转 θ \theta θ 后的向量 r ′ \bm{r}' r′:
r ′ = r cos θ + ( 1 − cos θ ) ( ω ^ ⋅ r ) ω ^ + sin θ ( ω ^ × r ) \bm{r}' = \bm{r} \cos \theta + (1- \cos \theta)(\hat{\bm{\omega}} \cdot \bm{r})\hat{\bm{\omega}} + \sin \theta (\hat{\bm{\omega}} \times \bm{r}) r′=rcosθ+(1−cosθ)(ω^⋅r)ω^+sinθ(ω^×r)
2. 矩阵形式
通常可用旋转矩阵 R \bm{R} R 表示: r ′ = R ⋅ r \bm{r}' = \bm{R}\cdot\bm{r} r′=R⋅r
其中, R = e [ ω ^ ] θ = I + [ ω ^ ] + ( 1 − c o s θ ) [ ω ^ ] 2 \bm{R} =e^{[\hat{\bm{\omega}}]\theta}=\bm{I}+[\hat{\bm{\omega}}] + (1-cos\theta)[\hat{\bm{\omega}}]^2 R=e[ω^]θ=I+[ω^]+(1−cosθ)[ω^]2
( [ ω ^ ] [\hat{\bm{\omega}}] [ω^] 是单位向量 ω ^ \hat{\bm{\omega}} ω^ 对应的反对称矩阵)
2 推导
2.1 代数方法
需要证明: R = e [ ω ^ ] θ = I + [ ω ^ ] s i n θ + [ ω ^ ] 2 ( 1 − c o s θ ) \begin{align*} \bm{R} =e^{[\hat{\bm{\omega}}]\theta}=\bm{I}+[\hat{\bm{\omega}}]sin\theta + [\hat{\bm{\omega}}]^2(1-cos\theta)\end{align*} R=e[ω^]θ=I+[ω^]sinθ+[ω^]2(1−cosθ)
前提 1:泰特公式
f ( x ) f(x) f(x) 在 x = 0 x=0 x=0处的泰特展开:
f ( x ) = ∑ i = 0 ∞ f ( i ) ( 0 ) i ! x i = f ( 0 ) + f ′ ( 0 ) 1 ! x + f ′ ′ ( 0 ) 2 ! x 2 + f ′ ′ ′ ( 0 ) 3 ! x 3 + f ( 4 ) ( 0 ) 4 ! x 4 + . . . \begin{align*} f(x) & =\sum^{\infty}_{i=0}{\frac{f^{(i)}(0)}{i!}x^i}\\ &= f(0)+\frac{f'(0)}{1!}x+ \frac{f''(0)}{2!}x^2+ \frac{f'''(0)}{3!}x^3+ \frac{f^{(4)}(0)}{4!}x^4+... \end{align*} f(x)=i=0∑∞i!f(i)(0)xi=f(0)+1!