旋转矩阵的无穷小变换
首先,从旋转矩阵入手,设旋转角度为 $\delta \alpha$ 时,旋转矩阵的变化量为:
$$
\delta \boldsymbol{r} = \boldsymbol{n} \times \boldsymbol{r} , \delta \alpha
$$
旋转矩阵的变化量可以表示为:
$$
\boldsymbol{R}(\boldsymbol{n}, \delta \alpha) = \boldsymbol{I} + \delta \alpha \begin{bmatrix} 0 & -n_z & n_y \ n_z & 0 & -n_x \ -n_y & n_x & 0 \end{bmatrix}
$$
其中,$\boldsymbol{I}$ 是单位矩阵,$\boldsymbol{\Omega} = \begin{bmatrix} 0 & -n_z & n_y \ n_z & 0 & -n_x \ -n_y & n_x & 0 \end{bmatrix}$ 是反对称矩阵。
旋转矩阵的指数映射
旋转矩阵的最终表达式可以通过无穷小旋转的指数映射来表示。对于有限旋转角度 $\alpha$,可以将其分解为无穷次无穷小旋转的连续作用:
$$
\boldsymbol{R}(\boldsymbol{n}, \alpha) = \lim_{N \to \infty} \left( \boldsymbol{I} + \frac{\alpha}{N} \boldsymbol{\Omega} \right)^N = e^{\alpha \boldsymbol{\Omega}}
$$
通过指数映射,可以得到旋转矩阵 $\boldsymbol{R}(\boldsymbol{n}, \alpha)$。
计算矩阵指数
通过矩阵的幂级数展开:
$$
e^{\alpha \boldsymbol{\Omega}} = \sum_{k=0}^{\infty} \frac{(\alpha \boldsymbol{\Omega})^k}{k!}
$$
由于 $\boldsymbol{\Omega}$ 是一个反对称矩阵,并且满足 $\boldsymbol{\Omega}^3 = -\boldsymbol{\Omega}$,可以通过分解 $\boldsymbol{\Omega}$ 的幂次来简化计算
$$
\boldsymbol{\Omega}^{2k} = (-1)^{k-1} \boldsymbol{\Omega}^2, \quad \boldsymbol{\Omega}^{2k+1} = (-1)^k \boldsymbol{\Omega}
$$
矩阵指数展开式可以写为:
$$
e^{\alpha \boldsymbol{\Omega}} = \boldsymbol{I} + \boldsymbol{\Omega} \sin \alpha + \boldsymbol{\Omega}^2 (1 - \cos \alpha)
$$
结合 $\boldsymbol{\Omega}^2$ 的表达式
由于 $\boldsymbol{\Omega}^2 = \boldsymbol{n} \boldsymbol{n}^T - \boldsymbol{I}$,将其代入矩阵指数的展开式中,得到:
$$
e^{\alpha \boldsymbol{\Omega}} = \boldsymbol{I} + (\boldsymbol{n} \boldsymbol{n}^T - \boldsymbol{I}) (1 - \cos \alpha) + \boldsymbol{\Omega} \sin \alpha
$$
得到最终的 Rodrigues 旋转公式:
$$
\boldsymbol{R}(\boldsymbol{n}, \alpha) = \boldsymbol{I} \cos \alpha + (1 - \cos \alpha) \boldsymbol{n} \boldsymbol{n}^T + \sin \alpha \begin{bmatrix} 0 & -n_z & n_y \ n_z & 0 & -n_x \ -n_y & n_x & 0 \end{bmatrix}
$$