2 .完成上图所示的圆形垃圾桶堆垛,如何实现?
3.环面是堆叠的。通常,机器人位于环面中间
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;
!再移动到计算得到的放置位置
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;
!再移动到计算得到的放置位置