变换矩阵

变换矩阵

    • 点和向量
    • 向量的内积
    • 向量的外积
    • 坐标系的变换
    • 齐次坐标
    • 变换矩阵求逆

点和向量

向量是一个线性空间的元素,是从原点或某点指向空间另一点处的一个箭头。例如,三维空间中的某个向量的坐标可以用 R3 当中的三个数来表示。同时也可以得到某个点的坐标,设一个线性空间的基(e1,e2,e3),这时我们可以得到这个向量在这个基的坐标:
a = [ e   1   , e   2   , e   3   ] [ a   1   a   2   a   3   ] = a   1   e   1   + a   2   e   2   + a   3   e   3   a= \begin{bmatrix} e~1~ ,e~2~ ,e~3~ \\ \end{bmatrix} \begin{bmatrix} a~1~ \\ a~2~ \\ a~3~ \\ \end{bmatrix}=a~1~ e~1~+a~2~ e~2~+a~3~ e~3~ a=[e 1 e 2 e 3 ]a 1 a 2 a 3 =a 1 e 1 +a 2 e 2 +a 3 e 3 
所以可以知道坐标的实际取值,一是和向量本身有关系,而是和坐标系的基有关系。坐标系一般由三个正交的坐标轴组成。
变换矩阵_第1张图片

向量的内积

向量的内积主要是描述向量之间的投影关系,例如a · b = aT b = |a||b|cos⟨a,b⟩,如果此处b为单位向量,可以看出a · bab方向的投影
变换矩阵_第2张图片

向量的外积

向量的外积的方向垂直于两个向量,并且大小为 |a||b|sin⟨a,b⟩,然后方向用右手法则确定
变换矩阵_第3张图片变换矩阵_第4张图片

坐标系的变换

当一个机器人在实际的运动过程中,其自身当前的坐标系(移动坐标系)相对于原来的坐标(一般定义一个世界坐标系)是在不断变换的(平移或者旋转)。同样在相机中某个向量为p,坐标为pc,但在世界坐标系下看,坐标为pw 。所以实现以上的转换我们需要一个转换矩阵T
变换矩阵_第5张图片这里使用欧式变换,对于世界坐标系我们设其基为(e 1 ,e2 ,e 3 ),然后对于相机的坐标系的基为(e’1 ,e’2 ,e’3),然后向量a在两个坐标系的坐标为**[a1,a2,a3]T,[a’1, a’2,a’3]T**,因为向量是不会改变的所以:
变换矩阵_第6张图片之后整理下可以得到:
变换矩阵_第7张图片其中矩阵R就是旋转矩阵,但在实际情况下我们还需要一个平移矩阵 T得到 a’=Ra+T
单独看对于x轴的旋转时,坐标系的变化为:
x′=x
y′=ycosθ−zsinθ
z′=ysinθ+zcosθ
所以可以整理为矩阵:
R   x   = [ 1 , 0 , 0 0 , c o s θ , − s i n θ 0 , s i n θ , c o s θ ] R~x~ = \begin{bmatrix} 1 ,0 ,0 \\ 0 ,cosθ ,-sinθ \\ 0 ,sinθ ,cosθ \\ \end{bmatrix} R x =1000cosθsinθ0sinθcosθ
同理可以整理得到对y轴和对z轴的旋转矩阵:
R   y   = [ c o s θ , 0 , s i n θ 0 , 1 , 0 − s i n θ , 0 , c o s θ ] R~y~ = \begin{bmatrix} cosθ ,0 ,sinθ \\ 0 ,1,0 \\ -sinθ ,0,cosθ \\ \end{bmatrix} R y =cosθ0sinθ010sinθ0cosθ
R   z   = [ c o s θ , − s i n θ , 0 s i n θ , c o s θ , 0 0 , 0 , 1 ] R~z~ = \begin{bmatrix} cosθ ,-sinθ ,0\\ sinθ ,cosθ ,0 \\ 0 ,0,1\\ \end{bmatrix} R z =cosθsinθ0sinθcosθ0001
R = R   x   ⋅ R   y   ⋅ R   z   R=R~x~·R~y~·R~z~ R=R x R y R z 

齐次坐标

在不使用齐次化的时候,对于坐标之间的变化
在这里插入图片描述但是对于a到c时就比较复杂了:
在这里插入图片描述所以这里我们对其进行齐次化:
变换矩阵_第8张图片这样就方便了我们对于坐标的变化过程:
在这里插入图片描述

变换矩阵求逆

我们这里能够很容易得到旋转矩阵的逆,因为旋转矩阵为正交矩阵所以 R1=R’1=RT
但是平移矩阵却不同 不是单单的t1=-t’1,因为t1是像对于前一个坐标系下的平移矩阵,而t2是相对于当前坐标系下的平移矩阵。所以应该是t1=-R’1·t’1

T ′ = [ R T , − R T t ′   1   0 , 1 ] T' = \begin{bmatrix} R^T,-R^T t'~1~ \\ 0 ,1 \\ \end{bmatrix} T=[RTRTt 1 01]

你可能感兴趣的:(变换矩阵)