ABB机器人如果需要补偿旋转角,通常需要获取当前姿态数据,将四元素转换为欧拉角,然后将其进行加减处理,处理完成后需要将欧拉角转换回四元素赋值到新的点位坐标中进行使用。 
以下文章给大家分享一个简单的功能块程序,可以设置转换前的坐标点,RZ需要补偿的旋转角度,输出一个新的姿态数据。小伙伴们可以结合思路,自己编写一个可以随意补偿RX,RY,RZ角度的功能块程序。
PROC TransPose(\PERS robtarget A\PERS num Angle_RZ) !定义转换前的点位A,以及需要补偿RZ的角度值 VAR num OldRZ; !声明转换前的RZ值 VAR num OldRX; !声明转换前的RX值 VAR num OldRY; !声明转换前的RY值 VAR num NewRZ; !声明转换前的RZ值 VAR Pose B; !声明新姿态数据B OldRX:= EulerZYX(\X, A.rot); !提取转换前A点姿态数据RX值 OldRY:= EulerZYX(\Y, A.rot); !提取转换前A点姿态数据RY值 OldRZ:= EulerZYX(\Z, A.rot); !提取转换前A点姿态数据RZ值 NewRZ:=Angle_RZ+OldRZ; !将转换前的RZ值+希望补偿的值Angle_Z B.rot:=OrientZYX(NewRZ,OldRY,OldRX); !将新的欧拉角数值合成新的姿态数据B TransRZ.rot:=B.rot; !将更新的姿态数据B赋值给变量TransRZ.rot ENDPROC
|