更多内容请点击上方 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观看或者扫描以下二维码
|