1. 机器人仓储码垛有常见的直线跺型,也有如下图的环形跺型。环形跺型可以更好的利用6轴工业机器人自身的机械结构优势,完成产品的中转和分拣。
2 要完成如上下图的环形仓码垛,如何实现?
3. 环形仓码垛,通常机器人位于环形的中间,故各产品位置可以利用产品到中心的距离以及相应角度,计算sin和cos得到具体位置坐标
4. 假设如下图的抓取位置为基准位置,此处位置与环形中心相聚1500mm。利用机器人坐标系xyz对应方向,计算点位数组中各元素的位置,此处按如下图顺序1-9码垛。
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;
!再移动到计算得到的放置位置