打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ABB机器人欧拉角与四元数转化

转载请先后台留言,大家一起支持原创,推动机器人使用和发展

本公众号对各类ABB机器人应用,仿真,毕业设计提供技术支持,详细后台留言

本公众号诚挚希望与各机器人培训机构,机器人使用单元合作,提供技术支持,详细后台留言

1. 机器人空中点位表示方法通常是x,y,z,a,b,c,其中a,b,c表示该点的旋转姿态。

定义

分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、Pitch、Roll

2. 通过用于描述坐标系各轴相对于参考系统的方向的旋转矩阵,描述坐标系的姿态(诸如工具的姿态)(参见下图)。

旋转后的坐标系轴(x,y,z)为矢量,其可以用参考坐标系表示如下:

x = (x1, x2, x3)

y = (y1, y2, y3)

z = (z1, z2, z3)

这意味着参考坐标系中x矢量的x轴向分量将为x1,y轴向分量将为x2,以此类推。

这三个矢量可在一个矩阵(旋转矩阵)中组合,各矢量由此构成一栏:

四元数仅仅是一种描述此旋转矩阵的更为简洁的方式;根据旋转矩阵的各元素,计算四元数:

3. 综合以上,可以得到欧拉角--四元数的转化如下

4  可以得到四元数--欧拉角的转化如下

arctan和arcsin的结果是

,这并不能覆盖所有朝向(对于
的取值范围已经满足),因此需要用atan2来代替arctan

5. ABB机器人提供了欧拉角与四元数转化的相关函数,其中

object.rot := OrientZYX(anglez, angley, anglex) 函数为欧拉角-四元数函数,注意函数中的顺序为rz,ry,rx

anglex := EulerZYX(X, object.rot); 函数为四元数-欧拉角函数,此处举例提取绕X旋转角度,也可提取绕Y和绕Z旋转角度。

6. 在RAPID端可以自己编写函数,得到欧拉角与四元数转化函数,如下

FUNC orient eulerAnglesToQuaternion(num hdg,num pitch,num roll)       //返回四元数 VAR num cosRoll; VAR num sinRoll; VAR num cospitch; VAR num sinpitch; VAR num cosheading;        VAR num sinheading; VAR orient orient1; cosRoll:=Cos(roll*0.5); sinRoll:=Sin(roll*0.5);        cosPitch:=Cos(pitch*0.5); sinPitch:=Sin(pitch*0.5);        cosHeading:=Cos(hdg*0.5); sinHeading:=Sin(hdg*0.5);
orient1.q1:=cosRoll*cosPitch*cosHeading+sinRoll*sinPitch*sinHeading; orient1.q2:=sinRoll*cosPitch*cosHeading-cosRoll*sinPitch*sinHeading; orient1.q3:=cosRoll*sinPitch*cosHeading+sinRoll*cosPitch*sinHeading; orient1.q4:=cosRoll*cosPitch*sinHeading-sinRoll*sinPitch*cosHeading; RETURN orient1; ENDFUNC
FUNC num quaternionToEulerAngles(\switch X|switch Y|switch Z,orient orient1)          //返回欧拉角 VAR num q0 VAR num q1; VAR num q2; VAR num q3; q0:=orient1.q1; q1:=orient1.q2; q2:=orient1.q3; q3:=orient1.q4; IF present(x) return atan2(2*(q2*q3+q0*q1),q0*q0-q1*q1-q2*q2+q3*q3); IF present(y) return asin(2*(q0*q2-q1*q3)); IF present(z) RETURN atan2(2*(q1*q2+q0*q3),q0*q0+q1*q1-q2*q2-q3*q3);         //roll=atan2f(2. f*(q2q3+q0q1),q0q0-q1q1-q2q2+q3q3);         //pitch=asinf(2. f*(q0q2-q1q3));         //yaw=atan2f(2. f*(q1q2+q0q3),q0q0+q1q1-q2q2-q3q3); ENDFUNC

********************************

如何获取更多经典文章?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ABB机器人与视觉通信发送数据
ABB 欧拉角与四元素转换功能块
ABB机器人如何与视觉通讯?
ABB工业机器人-四元数求逆
ABB机器人搬运项目程序的分析
通信配置5:ABB机器人使用组输出发送ASCII码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服