您好,欢迎来到东莞市库崎智能科技有限公司官网!
公司动态
您现在的位置:首页新闻动态公司动态

关于UR的坐标系的一点分享

发布时间:2020-10-19

今天我们来说说UR机器人中的坐标系以及相关的脚本指令。机器人本质的运动都是基于这些坐标系,不仅是内部的轨迹规划和生成,机器人的应用中也是经常用到。我们本着直接和简短的原则,不去涉及机器人本体的轨迹规划和生成,仅仅结合脚本讲讲如何巧用这些坐标系,方便大家的工作,希望有点帮助。如果你是想了解RPY,欧拉角还是旋转矢量的定义及转换关系,那么我建议大家到就近的图书馆找本机器人运动学相关的书,甚至是导论也可以的,闲话不多说了。

优傲机器人

先来说说UR机器人中的坐标系基准,所谓基准就是大家都认可的大哥,以它为准,那么UR里面的坐标系基准就是叫base的坐标系,它位于UR3,UR5,UR10机器人的基座底部面中心,Z轴从这个中心朝上是正方向,Y轴则是从这个中心朝基座线缆出来的那个方向为正方向,X轴正方向则根据右手法则来确定;如果你不知道什么是基座底部面中心和线缆出来的方向,那么你应该赶紧买一台回去看看,一看保准就知道了。知道base是谁了,那么我们来看看其余的坐标系除了TCPx都有一个箭头指向base,这就对了,因为它们都认base为基准。所以这个箭头表示相对的关系。Tool和Plane1都是相对于base而言的。Tool是我们说的法兰坐标系,Plane1为我们自定义的平面特征。


那么TCPx又是什么鬼,它咋认Tool为大哥,不,为基准呢?那是因为你的终端工具(End-effector),比如夹爪还有焊枪都是安装在机器人法兰上的,一旦固定,他们的相对位置就固定了,而Tool是会随着机械臂的运动而变化的,所以方便起见定义TCP时是相对于Tool的。


在UR的脚本中,get_actual_tool_flange_pose()就是来获取tool位姿的,这个位姿就是相对于base而言的;我们在安装设置文件中定义的tcp位姿(如果不知道在哪里设置,建议到UR学院上预习也好还是温习也好,先看看)就是定义的TCPx相对于tool的位姿,注意这里的基准是tool坐标系,脚本get_actual_tcp_pose()获取的是TCPx(这里是当前激活的tcp)相对于base的位姿,它和get_actual_tool_flange_pose()的区别就是差了个TCPx相对于tool的位姿。至于它们的关系如何用脚本表示,见下指令。


pose_trans(p_from,p_from_to)的功效在于将两个有关系的坐标系串起来,举例来说p_from是get_actual_tool_flange_pose()的返回值,p_from_to是TCPx的位姿(相对于tool坐标系而言),那么pose_trans()返回的就是当前的TCPx在Base下的位姿,也就是跟get_actual_tcp_pose()返回值一样。这里需要注意的是pose_trans应用的前提是箭头都是顺着一个方向的。

优傲机器人

       pose_inv(p_from),它的工作就是将上图中的箭头反个向,比如说一个get_actual_tcp_pose()返回的是当前TCPx在base下的位姿,那么pose_inv(get_actual_tcp_pose())返回的就是base在当前TCPx下的位姿,如上图中的橙色箭头所示。


道家说一生二,二生三,三生万物。挪到我们这里也是,别看这几个指令简单,但是组合起来在我们实际应用中将非常有用。


应用场景一:返回当前TCP相对于指定平面特征Plane1的位姿。


      get_actual_tcp_pose()返回当前TCPx在base下的位姿,当然我们新建Plane1平面特征的时候也已经得到了Plane1相对于base的位姿,但是还不能直接用pose_trans()将二者串起来,因为他们在图中都指向base(如下图),都是相对base而言的。为了使用pose_trans(),我们可以先用pose_inv(Plane1)将其箭头反转(如下图橙色箭头),返回的位姿变为base相对于Plane1而言,然后再利用pose_trans()计算,完整的使用如下:


             pose_trans(pose_inv(Plane1),get_actual_tcp_pose())

优傲机器人


应用场景二:在当前位置基础上沿指定平面特征Plane1的Z轴方向移动100mm


这里我们使用应用场景一的结论,


令p1= pose_trans(pose_inv(Plane1), get_actual_tcp_pose())


即p1为当前tcp相对于plane1平面特征的位置。


然后令p2=p[p1[0],p1[1],p1[2]+0.1,p1[3],p1[4],p1[5]],即沿plane1的Z轴移动100mm,为什么里面的参数是0.1?不知道的回去上UR学院。


机器人的运动只能是相对base坐标系,所以在执行运动指令之前需将p2又换算到base坐标系下,换算方式就是:


Movel(pose_trans(Plane1,p2),a,v,t,r)。


完整的程序结构是:


p1= pose_trans(pose_inv(Plane1), get_actual_tcp_pose())


p2=p[p1[0],p1[1],p1[2]+0.1,p1[3],p1[4],p1[5]]


Movel(pose_trans(Plane1,p2),a,v,t,r)           #a,v,t,r自己定义


好了,分享就到这里,UR的指令较传统机器人来说真的少太多,从我的角度来看,我觉得是优势,因为与动不动几个G的文档的厂家相比,UR的脚本显得更简练,该有的就有,没有的你也可自己实现。祝大家搞机愉快!

东莞库崎智能科技有限公司作为UR协作机器人和mir机器人优选经销商,为您提供更多机器人自动化解决方案。详询:15814107663
公司销售商品: 优傲协作机器人 | MiR自主移动机器人,激光导航AGV小车 |台达SCARA机器人 四轴机器人 | robotiq夹爪 | robotiq真空吸盘|robotiq腕部相机|onrobot夹爪 | pickit 机器人3D视觉 |所罗门3D视觉|复合机器人(AGV+机械臂)|scara螺丝机|紫外线消毒机器人
应用场景:汽车制造行业 | 3C行业 | 电子电气 | 机械加工 | 液晶半导体 | 食品加工行业 | 医药行业 | 化工行业 | 教育行业 | 娱乐生活 | 其他行业
应用案例:包装码垛 | 拧螺丝 | 注塑成型 | 抛光打磨|实验室分析 | 涂胶,点胶,焊接 | 机床管理 | 拾取和放置 | 装配 | AGV | 质量检验 | 设备看护

地址:东莞市南城区白马村永利达科技园3楼  粤ICP备17066985号
电话:0769-22235080    传真:0755-23068836  
E-mail:wangluotuiguang@yixincnc.com
著作权 2017东莞市库崎智能科技有限公司 保留所有权利