齐次变换矩阵的逆矩阵的求解

问题描述

已知坐标系 A A A 相对于坐标系 B B B 的齐次变换矩阵为 T A B T_{A}^{B} TAB,有时在求解问题时需要依据 T A B T_{A}^{B} TAB 求取坐标系 B B B 相对于坐标系 A A A 的齐次变换矩阵 T B A T_{B}^{A} TBA ,这个问题可以简单的描述为齐次变换矩阵求逆问题.

问题求解

假设齐次变换矩阵 T A B \mathbf{T}_{A}^{B} TAB 的旋转部分为 R A B = [ u x v x w x u y v y w y u z v z w z ] \mathbf{R}_{A}^{B}=\begin{bmatrix} u_{x} & v_{x} & w_{x} \\ u_{y} & v{y} & w_{y} \\ u_{z} & v_{z} & w_{z} \end{bmatrix} RAB=uxuyuzvxvyvzwxwywz ,平移部分为 t A B = [ t x t y t z ] T \mathbf{t}_{A}^{B} = \begin{bmatrix}t_{x} & t_{y} & t_{z}\end{bmatrix}^{T} tAB=[txtytz]T,则:
T A B = [ R A B t A B 0 1 ] = [ u x v x w x t x u y v y w y t y u z v z w z t z 0 0 0 1 ] \mathbf{T}_{A}^{B} = \begin{bmatrix} \mathbf{R}_{A}^{B} & \mathbf{t}_{A}^{B} \\ \mathbf{0} & 1\end{bmatrix}=\begin{bmatrix} u_{x} & v_{x} & w_{x} & t_{x} \\ u_{y} & v{y} & w_{y} & t_{y}\\ u_{z} & v_{z} & w_{z} & t_{z}\\ 0 & 0 & 0 & 1 \end{bmatrix} TAB=[RAB0tAB1]=uxuyuz0vxvyvz0wxwywz0txtytz1
由于旋转矩阵是对称正定的(性质),所以有:
( R A B ) − 1 = ( R A B ) T (\mathbf{R}_{A}^{B})^{-1} = (\mathbf{R}_{A}^{B})^{T} (RAB)1=(RAB)T
于是可得:
T B A = ( T A B ) − 1 = ( [ R A B t A B 0 1 ] ) − 1 = ( [ u x v x w x t x u y v y w y t y u z v z w z t z 0 0 0 1 ] ) − 1 = ( [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] ∗ [ u x v x w x 0 u y v y w y 0 u z v z w z 0 0 0 0 1 ] ) − 1 = ( [ u x v x w x 0 u y v y w y 0 u z v z w z 0 0 0 0 1 ] ) − 1 ∗ ( [ 1 0 0 t x 0 1 0 t y 0 0 1 t z 0 0 0 1 ] ) − 1 = ( [ u x u y u z 0 v x v y v z 0 w x w y w z 0 0 0 0 1 ] ) ∗ ( [ 1 0 0 − t x 0 1 0 − t y 0 0 1 − t z 0 0 0 1 ] ) = [ ( R A B ) T 0 0 1 ] ∗ [ I − t A B 0 1 ] = [ ( R A B ) T − ( R A B ) T t A B 0 1 ] \begin{aligned} \mathbf{T}_{B}^{A} &= (\mathbf{T}_{A}^{B})^{-1} = (\begin{bmatrix} \mathbf{R}_{A}^{B} & \mathbf{t}_{A}^{B} \\ \mathbf{0} & 1\end{bmatrix})^{-1}\\ &= (\begin{bmatrix} u_{x} & v_{x} & w_{x} & t_{x} \\ u_{y} & v{y} & w_{y} & t_{y}\\ u_{z} & v_{z} & w_{z} & t_{z}\\ 0 & 0 & 0 & 1 \end{bmatrix})^{-1} \\ &= (\begin{bmatrix} 1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y}\\ 0 & 0 & 1 & t_{z}\\ 0 & 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix} u_{x} & v_{x} & w_{x} & 0 \\ u_{y} & v_{y} & w_{y} & 0\\ u_{z} & v_{z} & w_{z} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix})^{-1}\\ &=(\begin{bmatrix} u_{x} & v_{x} & w_{x} & 0 \\ u_{y} & v_{y} & w_{y} & 0\\ u_{z} & v_{z} & w_{z} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix})^{-1}*(\begin{bmatrix} 1 & 0 & 0 & t_{x} \\ 0 & 1 & 0 & t_{y}\\ 0 & 0 & 1 & t_{z}\\ 0 & 0 & 0 & 1 \end{bmatrix})^{-1}\\ &= (\begin{bmatrix} u_{x} & u_{y} & u_{z} & 0 \\ v_{x} & v_{y} & v_{z} & 0\\ w_{x} & w_{y} & w_{z} & 0\\ 0 & 0 & 0 & 1 \end{bmatrix})*(\begin{bmatrix} 1 & 0 & 0 & -t_{x} \\ 0 & 1 & 0 & -t_{y}\\ 0 & 0 & 1 & -t_{z}\\ 0 & 0 & 0 & 1 \end{bmatrix}) \\ &= \begin{bmatrix} (\mathbf{R}_{A}^{B})^{T} & 0 \\ \mathbf{0} & 1\end{bmatrix}*\begin{bmatrix} \mathbf{I} & -\mathbf{t}_{A}^{B} \\ \mathbf{0} & 1\end{bmatrix}\\ &= \begin{bmatrix} (\mathbf{R}_{A}^{B})^{T} & -(\mathbf{R}_{A}^{B})^{T}\mathbf{t}_{A}^{B} \\ \mathbf{0} & 1\end{bmatrix} \end{aligned} TBA=(TAB)1=([RAB0tAB1])1=(uxuyuz0vxvyvz0wxwywz0txtytz1)1=(100001000010txtytz1uxuyuz0vxvyvz0wxwywz00001)1=(uxuyuz0vxvyvz0wxwywz00001)1(100001000010txtytz1)1=(uxvxwx0uyvywy0uzvzwz00001)(100001000010txtytz1)=[(RAB)T001][I0tAB1]=[(RAB)T0(RAB)TtAB1]

结论

T B A = [ ( R A B ) T − ( R A B ) T t A B 0 1 ] \mathbf{T}_{B}^{A} = \begin{bmatrix} (\mathbf{R}_{A}^{B})^{T} & -(\mathbf{R}_{A}^{B})^{T}\mathbf{t}_{A}^{B} \\ \mathbf{0} & 1\end{bmatrix} TBA=[(RAB)T0(RAB)TtAB1]

你可能感兴趣的:(Eigen)