欢迎光临散文网 会员登陆 & 注册

刚体运动中变换矩阵的逆的说明

2023-03-30 14:59 作者:-黄油鸡蛋卷-  | 我要投稿

外参矩阵是由一个点在某一坐标系下的坐标(x_1%2Cy_1%2Cz_1)%5ET转到另一个坐标系下的坐标(x_2%2Cy_2%2Cz_2)%5ET的转换矩阵,其构成如下:


%5Cbegin%7Bbmatrix%7D%0Ax_1%20%5C%5C%20y_1%20%5C%5C%20z_1%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0AR_2%20%26%20T_2%5C%5C%0A0%20%26%201%0A%5Cend%7Bbmatrix%7D_%7B4%20%5Ctimes%204%7D%0A%5Cbegin%7Bbmatrix%7D%0Ax_2%20%5C%5C%20y_2%20%5C%5C%20z_2%0A%5Cend%7Bbmatrix%7D


刚体坐标的转换就涉及旋转和平移两个部分组成,其中R代表旋转矩阵(3X3),T是平移矩阵(3X1),矩阵的第四行是为了配平移矩阵出现的,所以不用去管它。


对于坐标系1到坐标系2有这样的关系,那么同理,从坐标系2到坐标系1应该也会有相应的矩阵,也就是说等式两边同时左乘外参矩阵,即:


%5Cbegin%7Bbmatrix%7D%0Ax_1%20%5C%5C%20y_1%20%5C%5C%20z_1%0A%5Cend%7Bbmatrix%7D%0A%3D%0A%5Cbegin%7Bbmatrix%7D%0AR_2%20%26%20T_2%5C%5C%0A0%20%26%201%0A%5Cend%7Bbmatrix%7D_%7B4%20%5Ctimes%204%7D%0A%5Cbegin%7Bbmatrix%7D%0Ax_2%20%5C%5C%20y_2%20%5C%5C%20z_2%0A%5Cend%7Bbmatrix%7D


易知这两个外参矩阵是互为逆矩阵的,也即:


%5Cbegin%7Bbmatrix%7D%0AR_1%20%26%20T_1%5C%5C%0A0%20%26%201%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0AR_2%20%26%20T_2%5C%5C%0A0%20%26%201%0A%5Cend%7Bbmatrix%7D%20%3D%20%0A%5Cbegin%7Bbmatrix%7D%0AR_1R_2%20%26%20R_1T_2%2BT1%5C%5C%0A0%20%26%201%0A%5Cend%7Bbmatrix%7D%20%3D%20E


对于旋转矩阵来说,旋转矩阵的逆等于其转置R_1R_1%5ET%3DE


所以通过上面的矩阵关系,我们就可以求出R2, T2:


%5Cbegin%7Bcases%7D%0AR_2%20%3D%20R_1%5ET%20%5C%5C%0AT_2%20%3D%20-R_1%5ETT_1%0A%5Cend%7Bcases%7D


也就是说,当我们转换两个坐标系的外参矩阵的时候,旋转矩阵变成了原来的旋转矩阵的转置矩阵,这一点很好理解,但是用来平移的矩阵却变成了T_2%20%3D%20-R_1%5ETT_1 ,这里很多人就会疑惑了,为什么不是和旋转类似,我左移五步,倒过来我不应该是右移五步吗?



现在我们就从源头上来解释一下坐标转换之间的关系,解释完之后平移矩阵为什么会变成这样就很好理解了:

首先我们对于向量而言,向量的表示可以由基和坐标组成,我们任取空间中的两组正交基以及其对应的坐标,就会有:


%5Cvec%7Ba%7D%20%3D%20(e_1%2Ce_2%2Ce_3)%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%20%5C%5C%0Ay_1%20%5C%5C%0Az_1%0A%5Cend%7Bpmatrix%7D%20%3D%0A(e%5E%7B'%7D_1%2Ce%5E%7B'%7D_2%2Ce%5E%7B'%7D_3)%0A%5Cbegin%7Bpmatrix%7D%0Ax_2%20%5C%5C%0Ay_2%20%5C%5C%0Az_2%0A%5Cend%7Bpmatrix%7D


我们对于上面的等式,两边同时左乘 (e_1%5E%7B'T%7D%2Ce_2%5E%7B'T%7D%2Ce_3%5E%7B'T%7D)%5ET,会得到


%5Cbegin%7Bpmatrix%7D%0Ax_2%20%5C%5C%0Ay_2%20%5C%5C%0Az_2%0A%5Cend%7Bpmatrix%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Ae_1%5E%7B'T%7De_1%20%26%20e_1%5E%7B'T%7De_2%20%26%20e_1%5E%7B'T%7De_3%20%5C%5C%0Ae_2%5E%7B'T%7De_1%20%26%20e_2%5E%7B'T%7De_2%20%26%20e_2%5E%7B'T%7De_3%20%5C%5C%0Ae_3%5E%7B'T%7De_1%20%26%20e_3%5E%7B'T%7De_2%20%26%20e_3%5E%7B'T%7De_3%20%5C%5C%0A%5Cend%7Bpmatrix%7D%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%20%5C%5C%0Ay_1%20%5C%5C%0Az_1%0A%5Cend%7Bpmatrix%7D%0A


里面的大矩阵,就是我们的旋转矩阵了,也就是%24R_1%24, 但是我们要注意的是,这里的 (x_1%2Cy_1%2Cz_1)%5ET 和(x_2%2Cy_2%2Cz_2)%5ET 都是向量的坐标。

向量有个特点,你把他平移到各处,他的坐标还是原来的坐标,是不会因为向量的位置变化而变化的

为了解释起来方便,我建立了一个二维的示意图如下所示,我们人为的让所求的向量a的起始点与坐标系 (i,j)的原点重合,这样向量a的坐标就和向量顶点所在的那个点的坐标,在坐标系(i%2Cj) 中的坐标相同,都是%EF%BC%88x_1%2Cy_1%2Cz_1%EF%BC%89%5ET

我们假设向量a在(i%5E%7B'%7D%2Cj%5E%7B'%7D)%20中的坐标(注意是向量的坐标!)为%EF%BC%88x_2%2Cy_2%2Cz_2%EF%BC%89%5ET , 那么我们就会有:


%5Cbegin%7Bpmatrix%7D%0Ax_2%20%5C%5C%0Ay_2%20%5C%5C%0Az_2%0A%5Cend%7Bpmatrix%7D%20%3D%20%0A%5Cbegin%7Bpmatrix%7D%0Ae_1%5E%7B'T%7De_1%20%26%20e_1%5E%7B'T%7De_2%20%26%20e_1%5E%7B'T%7De_3%20%5C%5C%0Ae_2%5E%7B'T%7De_1%20%26%20e_2%5E%7B'T%7De_2%20%26%20e_2%5E%7B'T%7De_3%20%5C%5C%0Ae_3%5E%7B'T%7De_1%20%26%20e_3%5E%7B'T%7De_2%20%26%20e_3%5E%7B'T%7De_3%20%5C%5C%0A%5Cend%7Bpmatrix%7D%0A%5Cbegin%7Bpmatrix%7D%0Ax_1%20%5C%5C%0Ay_1%20%5C%5C%0Az_1%0A%5Cend%7Bpmatrix%7D%0A


但是我们要求的是点相对于坐标系(i%5E%7B'%7D%2Cj%5E%7B'%7D)%20的坐标,而不是向量相对于坐标系的坐标,也就是:


%5Cvec%7Ba%7D%0A%3D%5Cbegin%7Bpmatrix%7D%0Ax_2%20%5C%5C%0Ay_2%20%5C%5C%0Az_2%0A%5Cend%7Bpmatrix%7D%20%0A%3D%0A%5Cbegin%7Bpmatrix%7D%0AX_2%20%5C%5C%0AY_2%20%5C%5C%0AY_2%0A%5Cend%7Bpmatrix%7D%20-%0A%5Cbegin%7Bpmatrix%7D%0AX_%7BOi%2Cj%7D%20%5C%5C%0AY_%7BOi%2Cj%7D%20%5C%5C%0AZ_%7BOi%2Cj%7D%0A%5Cend%7Bpmatrix%7D


我们要求的就是:


%5Cbegin%7Bpmatrix%7D%0AX_2%20%5C%5C%0AY_2%20%5C%5C%0AY_2%0A%5Cend%7Bpmatrix%7D%20%0A%3D%5Cbegin%7Bpmatrix%7D%0Ax_2%20%5C%5C%0Ay_2%20%5C%5C%0Az_2%0A%5Cend%7Bpmatrix%7D%20%2B%0A%5Cbegin%7Bpmatrix%7D%0AX_%7BOi%2Cj%7D%20%5C%5C%0AY_%7BOi%2Cj%7D%20%5C%5C%0AZ_%7BOi%2Cj%7D%0A%5Cend%7Bpmatrix%7D%0A


所以这里我们就能看出,我们的平移矩阵T_1就是 (i%2Cj)坐标系的原点在%EF%BC%88i%5E%7B'%7D%2Cj%5E%7B'%7D%EF%BC%89坐标系中的坐标;

那么相应的,如果我们将两个坐标系反过来,求这个外参矩阵的逆矩阵之后,平移矩阵就会变成


%5Cbegin%7Bpmatrix%7D%0AX_%7BOi'%2Cj'%7D%20%5C%5C%0AY_%7BOi'%2Cj'%7D%20%5C%5C%0AZ_%7BOi'%2Cj'%7D%0A%5Cend%7Bpmatrix%7D



这样的话其实就是说:


%5Cbegin%7Bpmatrix%7D%0AX_%7BOi%2Cj%7D%20%5C%5C%0AY_%7BOi%2Cj%7D%20%5C%5C%0AZ_%7BOi%2Cj%7D%0A%5Cend%7Bpmatrix%7D%20%3DT_1%20%5C%5C%0A%5Cbegin%7Bpmatrix%7D%0AX_%7BOi'%2Cj'%7D%20%5C%5C%0AY_%7BOi'%2Cj'%7D%20%5C%5C%0AZ_%7BOi'%2Cj'%7D%0A%5Cend%7Bpmatrix%7D%20%3D%20T_2%20%3D%20-R_1%5ETT_1%0A

为什么是这个值呢,我们来根据上面的理论来计算一下:

现在我们把向量a这样画:

那么向量a在%EF%BC%88i'%2Cj'%EF%BC%89中的坐标就是T_1%20%3D%20%5Cbegin%7Bpmatrix%7D%20X_%7BOi%2Cj%7D%20%5C%5C%20Y_%7BOi%2Cj%7D%20%5C%5C%20Z_%7BOi%2Cj%7D%20%5Cend%7Bpmatrix%7D,

根据向量坐标的旋转关系,向量a在%EF%BC%88i%2Cj%EF%BC%89中的坐标就等于

%5Cvec%20a%20%3D%20R_2T_1


再者,如果我们取向量b如图所示:

那么向量b在%EF%BC%88i%2Cj%EF%BC%89中的坐标就是T_2%20%3D%20%5Cbegin%7Bpmatrix%7D%20X_%7BOi'%2Cj'%7D%20%5C%5C%20Y_%7BOi'%2Cj'%7D%20%5C%5C%20Z_%7BOi'%2Cj'%7D%20%5Cend%7Bpmatrix%7D, 而且a和b是互为反向量。

也就是说:

%5Cvec%20b%3D%20T_2%20%3D%20-%20%5Cvec%20a%3D%20-R_2T_1%20%3D%20-R_1%5ETT_1



刚体运动中变换矩阵的逆的说明的评论 (共 条)

分享到微博请遵守国家法律