Transform总结

针对

\[P'=T_{2}T_{1}P \]

其中\(P\)表示一点,针对上式,有两中解释方法:一个是坐标系动,一个是点动.
(1)将上式从左向右看,可以在\(T_{2}\)左边乘以I,则先是平移旋转坐标系I,然后平移旋转坐标系\(IT_{2}\),得到坐标系\(IT_{3}T_{2}\).然后在该坐标系中(基于该坐标系)绘制出P点,再从原始坐标系观测P点即可得到新的\(P'\)的坐标;
(2)将上式从右向左看,整个过程中坐标系不平移,不旋转,先将P点旋转平移\(T_{1}\),再旋转平移\(T_{2}\),最后得到的点的坐标跟(1)一样.
请注意(1)和(2)中旋转平移的顺序,这在我们手动绘图描点的时候显得尤为重要.一个完整的Transform包括平移和旋转,$T=translation \times Rotation $,因此针对一个点先平移后旋转和先旋转后平移是不一样的.在上式中:

\[T_{2}T_{1} = Translation2 Rotation2 Translation1 Rotation1 \]

矩阵不满足交换律,但是满足结合律,因此无论从左开始算还是从右开始算,结果是一样的.

在(1)中,我们的计算顺序是从左向右,因此先平移再旋转,而在(2)中,计算顺序是从右向左,先结合的是Rotation1,然后是Translation1,因此先旋转再平移.
上图中两种方式都会到达相同的一点.总结如下:
(1)是在每次变换的上一个坐标系下移动;(2)是在最初的坐标系下移动,整个过程都是点在移动,坐标系永远不变.

在求解机器人移动过程的姿态中,

\[T'=TU \]

我们本能会将其认识为第二种方式,即将机器人看作一个点,整个过程中点在移动,但其实机器人每次的移动都是针对于上一次的坐标系,因此看作第一种方式更好理解,虽然最终可以殊途而归.将机器人的姿态看作一个Transfrom, 将其按照(1)右乘平移旋转矩阵U,最终会得到机器人相对于初始的坐标系的姿态(或者新坐标系相对原始坐标系的姿态)\(T'\).将上式U的右边乘以一个列向量[0,0,1],最终结果也是一个列向量.此时便可以以第二种方式理解,从右向左看作点的移动,最终得到的列向量跟第一种方式求得矩阵的最后一个列向量一样,但是显然它只能得到位置坐标,丢失了旋转角度信息.

posted @ 2017-04-23 20:58  jinzhongxiao  阅读(202)  评论(0编辑  收藏  举报