机器人的位姿描述与坐标变换是进行工业机器人运动学和动力学分析的基础。本节简要介绍上述内容,明确位姿描述和坐标变换的关系,用到的基本数学知识就是——矩阵。
1.位姿表示
位姿代表位置和姿态。任何一个刚体在空间坐标系(OXYZ)中可以用位置和姿态来精确、唯一表示其位置状态。
位置:x、y、z坐标
姿态:刚体与OX轴的夹角rx、与OY轴的夹角ry、与OZ轴的夹角rz
假设基坐标系为OXYZ,刚体坐标系为O`X`Y`Z`。对于机器人而言,空间中的任何一个点都必须要用上述六个参数明确指定,即(x,y,z,rx,ry,rz),即便(x,y,z)都一样,(rx,ry,rz)不同代表机器人以不同的姿态去到达同一个点。
刚体的位置可以用一个3×1的矩阵来表示,即刚体坐标系中心O`在基坐标系中的位置,即
刚体的姿态可以用一个3×3的矩阵来表示,即刚体坐标系在基坐标系中的姿态,即
其中,第一列表示刚体坐标系的O`X`轴在基坐标系的三个轴方向上的分量,称为单位主矢量。同理,第二列和第三列分别是刚体坐标系的O`Y`轴和O`Z`轴在基坐标系的三个轴方向上的分量。
举个例子,在下图中,刚体M沿坐标系O中平移了(0,20,15),绕Z轴旋转了90度,因此刚体M在坐标系O的位姿可描述为:
,
根据上面的例子,很容易得到,刚体坐标系绕X轴(Y轴、Z轴)旋转角度θ后的姿态矩阵为:
2.齐次坐标与齐次矩阵
2.1 齐次坐标
其中,x=a/w, y=b/w, z=c/w 。
- 点的齐次坐标
对于某一个点(10,20,30),它的齐次坐标可以表示为
- 坐标轴的齐次坐标
2.2 齐次矩阵
机器人学中,用齐次矩阵(4×4)来统一描述刚体的位置和姿态,如下图。通过矩阵的正逆变换和矩阵相乘操作,实现位姿的变换。
其中,前面的3×3矩阵代表刚体的姿态,后面的3×1矩阵代表刚体的位置。
2.3 齐次变换
有了上述基础,接下来可以用齐次变换来描述刚体在空间中的位姿变换了。齐次矩阵不仅可以描述刚体在空间中的位姿,还可以描述位姿变换过程,比如“绕某某坐标系的X轴旋转43°,并且绕Y轴旋转-89°”。齐次变换分为平移变换、旋转变换以及前两者的结合。
2.3.1 平移变换
平移变换较为简单,比如坐标系j相对坐标系i的x、y、z分别平移10,-20,30,用齐次矩阵表示如下:
其中,矩阵位置可以交换,因为这是三个相互独立的变量,交换后不影响结果。
2.3.2 旋转变换
例1:坐标系j相对坐标系i的X轴旋转90°,齐次矩阵描述如下:
例2:坐标系j相对坐标系i的X轴旋转90°,并绕坐标系i的Y轴旋转90°,由例1得到“坐标系j相对坐标系i的X轴旋转90°”的变换描述,也容易得到“绕坐标系i的Y轴旋转90°”的变换描述。但是这两个矩阵能否像平移变换一样随意交换次序呢?答案是否定的,矩阵左乘和矩阵右乘的意义是不一样的:
- 变换算子左乘:表示该变换是相对固定坐标系变换
- 变换算子右乘:表示该变换是相对动的坐标系(新坐标系)变换。
需要解释的是,我们把上述的平移变换和旋转变换称为变换算子。
根据上述原则,则例2中,两个变换都是绕坐标系i的变换,是绕固定坐标系的变换,变换算子应该左乘。假设刚体j原位姿的齐次矩阵描述为P,那么经历“坐标系j相对坐标系i的X轴旋转90°”后的描述为:
即,变换算子左乘。接下来第二个变换是“绕坐标系i的Y轴旋转90°”,也应该左乘:
例3:坐标系j相对坐标系i的X轴旋转90°,并绕坐标系j的Y轴旋转90°。
这一题与例2的区别在于第二个变换改成了“绕坐标系j的Y轴旋转90°”。首先第一个变换没啥变换,与例2的第一个变换一样,绕固定坐标系旋转,左乘。第二个变换应该是:
2.3.3 平移+旋转变换
这里平移变换算子可以直接加到旋转变换算子里(试试就知道了,平移与旋转是相对独立的)。这里既然讲到平移与旋转的综合变换,不如说下“已知刚体i的空间位姿参数为(x,y,z,rx,ry,rz),如何用齐次矩阵来描述?”这就好比刚体坐标系j与固定坐标系i最开始完全重合,然后刚体j沿坐标系i的X、Y、Z方向分别移动距离x,y和z,并且绕坐标系i的X轴、Y轴、Z轴分别旋转rx、ry和rz。
讲到这里,机器人的位姿描述与坐标变换也就基本结束了。上述知识是进行机器人运动学分析、动力学分析、机器人离线编程软件开发等的基础。尤其在机器人逆运动学分析和仿真过程、工业现场手眼标定等场合,齐次矩阵的变换尤其重要。有了上述基础,再去看Jungle之前的两篇文章:
欢迎关注知乎专栏:Jungle是一个用Qt的工业Robot
公众号【Jungle笔记】后台回复“机器人文档”,可以获得本文PDF。