旋转矩阵(一):旋转矩阵能让什么东西旋转?

1.网上讲旋转矩阵的有很多,但是公式上还是有一些出入的,例如绕x轴转theta角的时候,有的人说旋转矩阵是

旋转矩阵(一):旋转矩阵能让什么东西旋转?_第1张图片

有的人说旋转矩阵是

旋转矩阵(一):旋转矩阵能让什么东西旋转?_第2张图片

我们可以看到这是一个转置的关系,其实是因为旋转矩阵是正交矩阵,转置等于逆,也就是说上边这两种公式对应的旋转正好是相反的,其实造成这种分歧是因为对“旋转对象”的定义不同。

第一种说法是XYZ坐标系经过旋转变为X'Y'Z',如果一个向量P在XYZ中坐标为(x1,y1,z1),P在X'Y'Z'中的坐标为(x2,y2,z2),那么可以用这个旋转矩阵R得到:(x2,y2,z2) = R *(x1,y1,z1)

第二种说法的意思是:XYZ坐标系中有一个向量P,其坐标为(x1,y1,z1),把向量P绕x轴转theta角以后,P的坐标为(x2,y2,z2) ,那么(x2,y2,z2) = R *(x1,y1,z1),这两个坐标都是在XYZ坐标系下的坐标。

关于第二种说法有许多大神都讲的很明白了,这里附上维基百科的链接:

https://en.wikipedia.org/wiki/Rotation_matrix

下面谈谈自己对第一种说法的理解:

这种旋转是坐标系在转,而向量P是固定不动的,要求的是P在转后坐标系X'Y'Z'中的坐标。

首先我们把XYZ坐标系的基用X'Y'Z'坐标系的基表示:

j = cos (theta) * j' - sin (theta) * k'

k = sin (theta) * j' + cos (theta) * k'

之后我们把向量P在XYZ坐标系中的表达式写出来

P = [ i , j, k ] * [ x1, y1, z1 ]          式中i,j,k是基向量,x1, y1, z1是坐标,矩阵乘法形式                                  式(1)

之后我们把[ i , j, k ] 用[ i’ , j‘, k’ ]表示:  [ i , j, k ] = [ i’ , j‘, k’ ] * R    此处的R就是第一种说法中的旋转矩阵。

之后我们把这个变换带入式(1)

P = [ i’ , j‘, k’ ] * R * [ x1, y1, z1 ]                                                                                                                       式(2)

之后我们把向量P在X'Y'Z'坐标系中的表达式写出来

P = [ i' , j', k' ] * [ x2, y2, z2 ]                                                                                                                              式(3)

由式(2)式(3)得 [ x2, y2, z2 ] = R * [ x1, y1, z1 ] 

也就是可以得到向量P在X'Y'Z'坐标系中的坐标了。

机器人的使用中我们常常需要把一个坐标系里的某个坐标转到其他坐标系里,这时就需要用到上边这个原理。

 

 

 

 

你可能感兴趣的:(机器人基础知识)