video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_1043679268426973184
[img=415.3pt,212.65pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7tuSnSSqRe1n3c2vVF5FUQ3kMicBibXf3fL8S8gqz9n0c9Libn4GbCiaFy0UuGnKJ3fCQazL2XicJSgWA/640?wx_fmt=png[/img]
点击阅读原文,获取完整环形仓工作站源代码!!
1. 机器人仓储码垛有常见的直线跺型,也有如上图的环形跺型。环形跺型可以更好的利用6轴工业机器人自身的机械结构优势,完成产品的中转和分拣。
2 要完成如上下图的环形仓码垛,如何实现?
3. 环形仓码垛,通常机器人位于环形的中间,故各产品位置可以利用产品到中心的距离以及相应角度,计算sin和cos得到具体位置坐标
4. 假设如下图的抓取位置为基准位置,此处位置与环形中心相聚1500mm。利用机器人坐标系xyz对应方向,计算点位数组中各元素的位置,此处按如下图顺序1-9码垛。
[img=415.3pt,303.55pt]https://mmbiz.qpic.cn/mmbiz_png/RZ5RadbLaf7tuSnSSqRe1n3c2vVF5FUQBSNhDcaytLbYGCf1omI0JOagr6npNQbxOaz2PiawE54rtgZGSrQnwew/640?wx_fmt=png[/img]
count:=1; radius:=1500; FOR j FROM 1 TO 3 DO !假设共三层 FORi FROM -4 TO 4 DO !每层共9个,如图开始的位置1-9 pPlace_cal{count}:=pPlace0; pPlace_cal{count}.trans.x:=radius*cos(i*36); !计算坐标x pPlace_cal{count}.trans.y:=radius*sin(i*36); pPlace_cal{count}.trans.z:=pPlace0.trans.z+(j-1)*205; pPlace_cal{count}:=RelTool(pPlace_cal{count},0,0,0Rz:=-i*36);!修正点位姿态,此处假设机器人工具z垂直向下 count:=count+1; ENDFOR ENDFOR
5 由于机器人在环形仓中运动时,运动范围较大,通常为1轴旋转较大角度,若直接使用moveJ,则可能产生碰撞/姿态奇异等问题。
6. 故在从抓取位置去放置位置时,先移动到抓取位置,再基于该位置获取Jointtarget,让机器人只是先1轴旋转一定角度后,再去放置位置
jtmp:=CJointT(); !获取机器人抓取位置的JointTarget jtmp2:=CJointT(); IF count>9 THEN count:=count-9; IF count>9 count:=count-9; ENDIF jtmp.robax.rax_1:=jtmp.robax.rax_1+count*36-10; !将机器人的抓取位置1轴坐标计算,此后先只移动一轴 MoveAbsJ jtmpNoEOffs,v5000,fine,tVacuumWObj:=wobj0; ! 先只移动一轴 MoveJ offs(pPlace{i},0,0,200),v5000,z10,tVacuumWObj:=wobj0; !再移动到计算得到的放置位置
|