附录1 三维空间刚体运动
旋转矩阵
在机器人运动的过程当中,我们通常会设定一个惯性坐标系(或者叫世界坐标系),姑且认为这个坐标系是固定不动的。例如:XW,YW,ZW是固定不动的世界坐标系,XC,YC,ZC是机器人坐标系。存在一个向量P,在世界坐标系下的坐标是PW,在移动机器人坐标系下的坐标是PC,通常情况下,我们通过传感器已知移动机器人坐标系统下的坐标PC,来求P在世界坐标系下的坐标PW
为了求PW,我们必须知道机器人坐标系XC,YC,ZC相对与世界坐标XW,YW,ZW做了哪些变换。我们定义世界坐标系经过变换矩阵T之后得到机器人坐标系(这可以通过计算里程和IMU的数据进行测量出来)(这也就说明了为什么在机器人刚刚启动的时候odom和base_link坐标系必须是重合的,不然没有办法计算旋转矩阵),另外一般情况下,移动机器人运动是一个刚体运动,也就是说机器人的形状和大小不会因为坐标系不同而改变,这种变换叫做欧式变换。一个欧式变换可以由旋转和平移两个部分组成。首先我们考虑旋转问题,假设在世界坐标系下的单位正交基(ex,ey,ez),在移动机器人坐标系下的单位正交基(ex",ey",ez"),那么,根据向量P的模可知:
[ex,ey,ez]⋅PWT=[ex",ey",ez"]⋅PCT
因此,PCT=[ex,ey,ez]T⋅[ex",ey",ez"]⋅PWT,我们将[ex,ey,ez]T⋅[ex",ey",ez"]记做旋转矩阵R,因此上面的表达式可以简化为PCT=R⋅PWT。接下来是平移部分,假设平移部分是PC"T经过平移向量t后得到PCT,那么可以得到PCT=PC"T+t=R⋅PwT+t。所以通过旋转矩阵R和平移 向量t,我们可以描述从世界坐标系到移动机器人坐标系的坐标变换。但是这种表达方式存在一个问题,对于连续的位置变换,例如机器人坐标系是随着时间在不断变换的,上面这种表达方式并不是一个线性的表达方式,假设我们经历了两次变换R1,t1和R2,t2且满足:从a到b的变换b=R1a+t1,从b到c的变换c=R2b+t2.那么从a到c的变换是c=R2(R1a+t1)+t2.并不是我们希望的的形式c=Ra+t(然后我们采用齐次坐标的方式进行表达,详细的部分参考李群李代数).