对于空间中两个任意姿态的坐标系,总可以在空间里找到某个轴,使其中一个坐标系绕该轴旋转一个角度就能与另一个坐标系姿态重合。以先前使用过的一个旋转
>> R = rpy2r(0.1, 0.2, 0.3)
我们可以确定如下的一个角度和一个向量:
>> [theta, v] = tr2angvec(R)
theta =
0.3816
v =
0.3379 0.4807 0.8092
其中,theta
是旋转的角度大小,v
是旋转轴的向量。
这些信息实际上包含在 R R R 的特征值和特征向量中。使用 MATLAB 的内部函数eig
可以求矩阵的特征值和特征向量:
>> [v, lambda] = eig(R)
v =
0.6655 + 0.0000i 0.6655 + 0.0000i 0.3379 + 0.0000i
-0.1220 - 0.6079i -0.1220 + 0.6079i 0.4807 + 0.0000i
-0.2054 + 0.3612i -0.2054 - 0.3612i 0.8092 + 0.0000i
lambda =
0.9281 + 0.3724i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.9281 - 0.3724i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 1.0000 + 0.0000i
矩阵lambda
中的对角线元素即返回的特征值,其相应的特征向量位于矩阵v
中对应的列向量。
一个正交旋转矩阵总有一个实特征值 λ = 1 \lambda=1 λ=1,以及一对共轭复特征值 λ = cos θ ± i sin θ \lambda=\cos\theta\pm i\sin\theta λ=