介绍在Manipula里使用的几种不同的坐标系。
右手坐标系: 以下列出的坐标系都是右手坐标系。
前置概念:工作站、控制器
世界坐标系
世界坐标系唯一地定义了整个工作站的坐标原点。其他所有的坐标系都直接或者间接的相对于世界坐标系定义。世界坐标系是由Manipula内置的,无需用户定义,用户也不能改变它的位置。世界坐标系是仅存在于工作站中的概念,控制器和任务对世界坐标系是没有感知的。
机器人基坐标系
机器人基坐标系是机器人自身的本地坐标系,由机器人制造商定义。一般的,它的原点固定的位于机器人底座的中心,Z轴垂直于机器人底座平面,指向机器人机械结构方向;X轴指向机器人前方,Y轴指向机器人左手边。
任务坐标系
对于控制器来说,它有一个概念上的坐标系,称为任务坐标系,位于世界坐标系中的某处。
当机器人被导入工作站时,任务坐标系位于机器人的底座中心,与机器人基坐标系重合。当机器人被移动时,用户可以选择跟随机器人移动任务坐标系,或者保持任务坐标系的位置不变。任务坐标系的作用是让机器人数据的定义摆脱对世界坐标系里的绝对位置的依赖。当移动机器人本体时,只需要相应移动任务坐标系,所有的机器人数据都可以不用修改。
控制器中会保存机器人基坐标系在任务坐标系中的相对位姿(基准位姿,base pose)。当执行任务时,一切坐标计算都在任务坐标系中完成,控制器会将任务中的坐标换算成基坐标系中的坐标。在一般情况下,如果不特意让任务坐标系和机器人基坐标系分离,可以认为这两个坐标系是同一个坐标系。
在编程的时候基坐标系不会被直接用到,所有的程序数据都直接或间接地相对于任务坐标系定义。控制器在执程序的时候,根据基准位姿,将程序中出现的坐标转换到基坐标系中,进行后续计算。
不直接使用机器人的基坐标系定义程序数据的原因是,机器人本体在执行任务时有可能是移动的。此外,在多个机器人配合编程时,也希望使用统一的任务坐标系,而不是每个机器人都使用自己的基坐标系。
工件坐标系
工件坐标系描述一个工件在任务坐标系中的位姿,所以工件坐标系是相对于任务坐标系来定义的。(有一种情况是相对于机器人的腕部坐标系来定义,详情参考数据类型手册。这里介绍的概念是指一般的情况。)
任务中所有的目标点都是相对于某个工件坐标系来定义的。这样做的好处是,当工件与机器人的相对位置发生改变时,只需要修改工件坐标系的定义就可以得到正确的目标点位置,而不需要修改每个目标点的定义。
由于工件坐标系是相对于任务坐标系定义的,所以编程时出现的所有坐标数据最终都相对于任务坐标系来定义。
工具坐标系
工具坐标系描述机器人的工具中心点(tool center point,TCP)相对于机器人腕部(也就是法兰)的位姿。
机器人腕部相对于基坐标系的位姿由控制器根据机器人的尺寸和各个关节的角度计算出来,腕部坐标系位于法兰的中心,Z轴垂直于法兰盘向外。机器人位于初始位姿时,腕部坐标系X轴平行于法兰盘向下,Y轴平行于法兰盘向左。
工具坐标系的作用是让控制器知道当前使用的工具的尺寸和方向,以便计算关节角度使TCP到达目标点。
欧拉角和四元数
本软件提供两种方式来输入坐标方向:欧拉角和四元数。当选择欧拉角作为输入方式时,所有旋转均基于固定的坐标系进行,且遵循XYZ的旋转顺序,即依次围绕固定坐标系中的X轴、Y轴、Z轴旋转,而非依次围绕对象本体坐标系的X轴、Y轴、Z轴旋转。对应的旋转矩阵为:.
总结
虽然工作站有一个唯一的世界坐标系,但是每个控制器都有自己的任务坐标系。
任务坐标系用于给机器人任务编程时使用。也就是说,一个任务中的所有数据都是相对于这个任务所属的控制器的任务坐标系来定义的,与世界坐标系无关。
机器人控制器在配置文件中保存着机器人的基坐标系在任务坐标系中的相对位姿,也就是说,机器人的任务坐标系可以和它的基坐标系不重合。这样就可以在运行任务程序时将程序数据转换到机器人的基坐标系里了。
任务坐标系的存在是为了方便机器人程序数据的定义,使数据与机器人的绝对位置无关,而只表示和机器人的相对位置。当机器人移动位置时,只需要将任务坐标系和任务数据一起跟着移动,则所有的数据都不需要修改。