ABB机器人坐标系关系(理解此文,吃透所有工业机器人坐标系转换应用)
Coordinate systems
机器人给出的结果都是tool在不同坐标系下的姿态(workobject,base,world)
描述虽然简单,确是机器人工作的核心所在!
也是各种变换应用能实现的关键所在!
工具中心点坐标系
工具中心点坐标系(也称为TCP)是工具的中心点。您可以为一个机器人定义不同的
TCP。所有的机器人在机器人的工具安装点处都有一个被称为tool0的预定义TCP。当程序运行时,机器人将该TCP移动至编程的位置。
RobotStudio大地坐标系
RobotStudio大地坐标系用于表示整个工作站或机器人单元。这是层级的顶部,所有其他坐标系均与其相关(当使用RobotStudio时)。
基座(BF)
基础坐标系被称为“基座(BF)”。在RobotStudio和现实当中,工作站中的每个机器人都拥有一个始终位于其底部的基础坐标系。
工件坐标系
工件坐标系通常表示实际工件。它由两个坐标系组成:用户框架和对象框架,其中,后者是前者的子框架。对机器人进行编程时,所有目标点(位置)都与工作对象的对象框架相关。如果未指定其它工作对象,目标点将与默认的Wobj0关联,wobj0始终与机器人的基座保持一致。(正确的说法是和Motion-Robot-baseframe的结果保持一致,如果baseframe中的值是默认的话,这话才成立)
无懈可击的表述:
如果未指定其它工作对象,目标点将与默认的Wobj0关联,wobj0始终与机器人的worldframe保持一致
下图可见target在world下和在workobject下姿态一致,而和base下不同
图1
baseframe修改位姿(world frame to base frame)
图2
经典应用案例分析:
机器人baseframe相对worldframe偏移
机器人给出的结果都是tool在world坐标系下的姿态!
图3
Base_Frame_Fixed(ABB机器人本体坐标系(基坐标系))
ABB 机器人的**本体坐标系(Base Coordinates)**是机器人运动控制的基础参考系,以下是其标准定义:
属性 说明 名称 Base Frame(基座坐标系) / 本体坐标系 原点位置 机器人底座的安装面中心点(通常位于机器人底座法兰盘中心) 坐标系类型 笛卡尔直角坐标系 遵循规则 右手定则(Right-hand Rule)
- X轴 :指向机器人手臂伸展的正前方(通常是机器人第1轴旋转平面的切线方向)
- Y轴 :与X轴垂直,指向机器人手臂的左侧(由右手定则确定)
- Z轴 :垂直向上,与机器人安装面垂直
Base_Frame_RZ-90
1.机器人根据worldframe的方向顺时针旋转90,即RZ=-90°,修改相应的四元数,也可以不修改(标定之后会给完整结果-图2)
工件坐标系组成:
robhold
robothold
数据类型:bool
规定实际程序任务中的机械臂是否正夹持着工件:
•TRUE:机械臂正夹持着工件,即使用一个固定工具。
•FALSE:机械臂未夹持着工件,即机械臂正夹持着工具。
ufprog
userframeprogrammed
数据类型:bool
规定是否使用固定的用户坐标系:
•TRUE:固定的用户坐标系。
•FALSE:可移动的用户坐标系,即使用协调外轴。同时以半协调或同步协调模式
用于MultiMove系统。
ufmec
userframemechanicalunit
数据类型:string
用于协调机械臂移动的机械单元。仅在可移动的用户坐标系中进行规定(ufprog为
FALSE)。
规定系统参数中所定义的机械单元名称,例如,orbit_a。
uframe
userframe
数据类型:pose
3.102wobjdata-工件数据
RobotWare-OS
续前页
用户坐标系,即当前工作面或固定装置的位置(Worldframe to User Frame)(参见下图):
•坐标系原点的位置(x、y和z),以mm计。
•坐标系的旋转,表示为一个四元数(q1、q2、q3和q4)。
如果机械臂正夹持着工具,则在世界坐标系中定义用户坐标系(如果使用固定工具,则在腕坐标系中定义)。
对于可移动的用户坐标系(ufprog为FALSE),由本系统对用户坐标系进行持续定义。
objectframe
数据类型:pose
目标坐标系,即当前工件的位置(UserFrame to ObjectFrame)(参见下图):
•坐标系原点的位置(x、y和z),以mm计。
•坐标系的旋转,表示为一个四元数(q1、q2、q3和q4)。
在用户坐标系中定义目标坐标系。
leica激光跟踪仪标定之后的结果:
定义工件:
PERS wobjdata Workobject_Car:=[FALSE,TRUE,“”,[[2796.58,13.96,1292.93],[0.00338761,-0.00335802,-0.000517516,-0.999988]],[[9.35,4.45,19.71],[0.999986,0.00252849,0.00428965,-0.00152925]]];
WorldFrame to Car_Reference
Car_Reference:[2796.58,13.96,1292.93],[0.00338761,-0.00335802,-0.000517516,-0.999988]
Car_Reference to Car_Shift
Car_Shift:[9.35,4.45,19.71],[0.999986,0.00252849,0.00428965,-0.00152925]
计算公式:
1.将Target在机器人本体坐标的姿态转到世界坐标下的姿态
T W B T_{W}^{B} TWB:WorldFrame to robot base(Base_Frame_Fixed)
T B t o o l 0 T_{B}^{tool0} TBtool0:robot base to tool0
T W t o o l 0 = T W B ∗ T B t o o l 0 T_{W}^{tool0}=T_{W}^{B}*T_{B}^{tool0} TWtool0=TWB∗TBtool0
2.将Target在机器人世界坐标下的姿态转到本体坐标下的姿态
T B W T_{B}^{W} TBW:robot base(Base_Frame_Fixed) to WorldFrame
T W t o o l 0 T_{W}^{tool0} TWtool0:WorldFrame to tool0
T B t o o l 0 = T B W ∗ T W t o o l 0 T_{B}^{tool0}=T_{B}^{W}*T_{W}^{tool0} TBtool0=TBW∗TWtool0
3.将Target在机器人世界坐标下的姿态转到工件坐标系下的姿态
T W C a r − r e f e r e n c e T_{W}^{Car-reference} TWCar−reference:车身参考位置在世界坐标下的姿态(Uframe)
T C a r − r e f e r n c e C a r − S h i f t T_{Car-refernce}^{Car-Shift} TCar−refernceCar−Shift:车身偏移位置后在车身参考位置下的姿态(Oframe)
T W C a r − s h i f t = T W C a r − r e f e r e n c e ∗ T C a r − r e f e r n c e C a r − S h i f t T_{W}^{Car-shift}=T_{W}^{Car-reference}*T_{Car-refernce}^{Car-Shift} TWCar−shift=TWCar−reference∗TCar−refernceCar−Shift
T C a r − s h i f t t o o l 0 = ( T W C a r − s h i f t ) − 1 ∗ T W t o o l 0 T_{Car-shift}^{tool0}=(T_{W}^{Car-shift})^-1*T_{W}^{tool0} TCar−shifttool0=(TWCar−shift)−1∗TWtool0(反之亦然!)
其中将Target在机器人本体坐标下的姿态转到工件坐标系下的姿态推到不再展开

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)