旋转变换的指数形式

来源:互联网 发布:淘宝批发网 编辑:程序博客网 时间:2024/05/06 03:52

看一篇英文文献,里面用到了一个绕空间三个坐标轴旋转的矩阵,原文说using the exponential representation for rotations,并直接给出了下面的公式

Ri=e[θi]×,[θi]×=0θi3θi2θi30θi1θi2θi10(1)

初看直接傻了,完全摸不着头脑。在我印象中,旋转矩阵应该是这样的
R=cos(θ3)sin(θ3)0sin(θ3)cos(θ3)0001cos(θ2)0sin(θ2)010sin(θ2)0cos(θ2)1000cos(θ1)sin(θ1)0sin(θ1)cos(θ1)(2)

其中θ1,θ2,θ3分别是绕x,y,z轴旋转的角度。而这个和上面(1)式中的指数表示有什么关系呢?

三维旋转问题除了用旋转矩阵来表示,还可以用旋转向量来表示。我们知道,空间任何一个旋转变换(或是很多次旋转变换的组合),都可以简化为绕某一单位向量r=[rx,ry,rz]旋转θ角。假设这个旋转变换把一个向量V1变换到V2,则

V2=V1cos(θ)+(r×V1)sin(θ)+r(rV1)(1cos(θ)(3)

而叉乘又可以表示为矩阵乘法的形式
r×V1=r×V1,r×=0rzryrz0rxryrx0(4)

我们把r×称为叉乘矩阵。由(3)式即可把绕向量的旋转变换变成矩阵形式。实际中,经常把旋转角度作为旋转向量的长度(模),因此有旋转向量转换成旋转矩阵的公式
旋转向量转旋转矩阵公式(5)
即先从旋转向量提取出旋转角度的信息,再将旋转向量归一化,最后求出旋转矩阵。已知旋转矩阵,求旋转向量的公式如下
旋转矩阵转旋转向量公式
这个和本文主题关系不大,只是为了完整性提一下。以上两个公式,在OpenCV的文档里能找到,就是所谓的罗德里格斯公式(Roderigues Formula)。
而(5)式中的R矩阵,与矩阵的指数就有些关系了。
小木虫上有个帖子,介绍了矩阵的指数与旋转向量的关系
http://emuch.net/bbs/viewthread.php?tid=4536854
矩阵指数与旋转向量的关系(6)
(6)式中最后一项I-cos(t)应为1-cos(t)。
从(6)式中我们可以看出,矩阵的指数是由泰勒展开式定义的
http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%98%B5%E6%8C%87%E6%95%B0
维基百科里还提到它的一些性质,具体可以自己看。
(6)式中的w^就是w向量叉乘的矩阵表示。从上面这段英文我们可以知道,由于叉乘矩阵的特殊性质,即w^3=w^,矩阵的指数可以简化为矩阵和三角函数的线性组合的形式。
因此,如果将
w^=0θ30θ300000=010100000θ3

代入(6)式,我们有
ew^t=cos(θ3)sin(θ3)0sin(θ3)cos(θ3)0001(7)

啊哈,这就是我们常见的绕z轴旋转的旋转矩阵。
同理,(5)式中如果我们注意到
r2×=r2x1rxryrxrzrxryr2y1ryrzrxrzryrzr2z1(r)


rrT=r2xrxryrxrzrxryr2yryrzrxrzryrzr2z=r2×I(8)

将(8)式代回(5)式就能得到
R=I+r×sin(θ+r2×(1cos(θ))

对比(6)可以发现这就是er×θ,因此(5)式和(6)式是等价的,(6)式即把绕向量的旋转变换为了矩阵的指数的形式。
至于(1)式中那个θ的叉乘矩阵,我本来想把它分解一下
0θ3θ2θ30θ1θ2θ10=010100000θ3+001000100θ2+000001010θ1

然后应用(7)式的结论就有了(2)式我们常见的旋转矩阵的形式。但矩阵的指数只有满足矩阵可以交换时才能分解,即eX+Y=eXeY只有在XY=YX时才成立。因此上面这种做法是行不通的。因为这种拆解方式,θ1,θ2,θ3之间是没有顺序的,而(2)式的三个矩阵显然是有顺序的。

因此(1)式中的θ1,θ2,θ3并不是分别绕三维轴的夹角,而是一个旋转向量θ=(θ1,θ2,θ3)T,它定义的旋转变换,就是(1)式的这个矩阵指数形式。直接通过(5)式或者(6)式,可以把它换成一般的矩阵形式。由于矩阵的指数是通过泰勒级数定义的,因此用矩阵指数的形式来把旋转向量转换为旋转矩阵,计算起来比较容易。另外如果旋转向量θ=(θ1,θ2,θ3)T中含有变量,把它转换为(5)式那种形式,再想对变量求导就很不方便,而如果写成eθ×这种形式,根据定义很容易就能证明

ddθ1eθ×=eθ×ddθ1θ×

处理起来非常方便。

简言之,用矩阵指数来表示旋转向量的矩阵,计算、求导过程用计算机处理起来都很方便,我觉得这就是它常常被使用的原因。

1 0
原创粉丝点击