PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 7780|回复: 0

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

[复制链接]
发表于 2024-8-18 10:58:45 | 显示全部楼层 |阅读模式
更多内容请点击上方 ABB机器人实战技巧 关注

也可点击公众号下方 往期经典 浏览更多内容

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

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

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

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

[img=341.3pt,194.05pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fQ9A6pksf3rkwm5zKDFb9Y4u70NXOPAbcicmrd2fkn0El8PKImycPVyA/640?wx_fmt=png[/img]

定义
[img=36.95pt,12.15pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fdQvMEwfcuN2WjJImUvs3U79xuLYX6pfyfYxXzNd73fLxiaol8Pg7MSQ/640?wx_fmt=png[/img]
分别为绕Z轴、Y轴、X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw、Pitch、Roll。

[img=288.0pt,179.05pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3f6iarEZXjtUbMP4GV8vE4ReH3gQ6EdUQibZ1QZFw9EcQOjbNVWB4YaR0Q/640?wx_fmt=png[/img]

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

[img=207.54678pt,90.35275pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fSnibbGordSz6hiaM3hoF8H5RXRm8jicSWm4tpnTlO5YKPgSfibbm7tS4dQ/640?wx_fmt=png[/img]

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

x = (x1, x2, x3)

y = (y1, y2, y3)

z = (z1, z2, z3)

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

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

[img=91.5pt,87.75pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fcGYSveBqibHRkibInzP8I0CKABonqMWhPIpsicT7b3YKGXNx5Ev4DJZuQ/640?wx_fmt=png[/img]

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

[img=415.3pt,140.25pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3ftdUFP0A7zKqHlWtAa1aMvrrOtxotUPMcnjB4ejb0LfmgECR6KvpI0g/640?wx_fmt=png[/img]

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

[img=386.2pt,84.15pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fMovNhX3uQ93pf8LqUtP3DoWgT3ibxwpCklHiaDHBumIOf55nNmK5Qb4g/640?wx_fmt=png[/img]

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

[img=182.8pt,99.1pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fWwRic8Fibia4NXU9pFfeFOxu3CXHV4q7QDKLKyibDLnBSpciboxEVaMZVtw/640?wx_fmt=png[/img]

arctan和arcsin的结果是
[img=42.1pt,29.9pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fhuNNY6tsRPKMZV6lk1P543cibgslg3La9J9b4OKM4v5UvXBkO5rx8qQ/640?wx_fmt=png[/img]
,这并不能覆盖所有朝向(对于
[img=12.15pt,13.55pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fwL0lz0vndppicibicJiamCQ8fq3ic0DXxEkJzh4fc27dRp76xMYSt9ia8W0g/640?wx_fmt=png[/img]

[img=42.1pt,29.9pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3fhuNNY6tsRPKMZV6lk1P543cibgslg3La9J9b4OKM4v5UvXBkO5rx8qQ/640?wx_fmt=png[/img]
的取值范围已经满足),因此需要用atan2来代替arctan

[img=230.95pt,72.0pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7cCPiaNejmYBn2GHMPkUl3f2j53O9icG2hlX3bcEgXVAxrzUyia9zqVibxZFbhhVTxLroYCJIn18aUQw/640?wx_fmt=png[/img]

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

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

如何获取更多经典文章?

关注公众号 ABB机器人实战技巧,点击页面底部的往期经典和配置,查看更多经典内容

点击阅读原文,学习robotstudio仿真,获取完整教学视频

更多内容

★基于pcsdk传输文件到HOME及加载

★RMQ通讯-与PC通讯

★使用定时中断向PLC发送机器人位置

★信号的准确提早触发

★变位机校准

★ABB机器人零位校准的那些秘密

★创建UDP通讯

★旋转姿态的左乘与右乘

★通过socket控制机器人启停

★机器人画哆啦A梦

★六一节,机器人画柯南

★searchL仿真工作站

★pathoffset轨迹实时修正功能

★撤销处理程序

★使用组输出发送ASCII码

机器人PROFINET同时做CONTROLLER和DEVICE

★语音控制ABB机器人

★手机访问web控制机器人

★YUMI 伺服手仿真制作

★自定义伺服焊枪

★制作输送链抓取搬运码垛工作站

★随机物料产生与抓取

★四轴机器人定义TCP

★更换工具后重算tcp

★自定义外部轴-变位机

★示教四点完成码垛

★multimove之双机器人与变位机

Robotware6.08碰撞预测启用与关闭

SMB板针脚解释

四六关节耦合限制

求两点间距离

新I/O DSQC1030配置

ABB机器人配置伺服焊枪

机器人碰撞后如何移动

转角路径故障不提示设置

外部PLC选择机器人程序

一键回HOME程序

机器人各轴上下限位修改

Wobjdata数据解释

输送链跟踪与视觉的联系

急停与自动停止接线

更多大牛讲解视频,可以前往https://www.aiimooc.com 搜索ABB观看或者扫描以下二维码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-9-21 08:44 , Processed in 0.046850 second(s), 25 queries .

快速回复 返回顶部 返回列表