为提高生产节拍,“飞拍”概念被广泛应用,即机器人在经过拍照点时不停止拍照。
如上图,来料位置随机(随机位置产生教学见 随机物料产生与抓取),机器人去固定位置抓取。此时抓取的工件位置偏差,需要机器人在经过相机上方时触发拍照,并在*后放置时调整机器人姿态将产品放入指定位置。
整个过程(尤其是拍照过程),机器人不停止运动。
考虑到延时,机器人在经过固定拍照位前需触发拍照信号。
方法1:机器人经过相机前的Sensor并触发拍照
方法2:机器人经过相机前自身发出信号,即在到达某些位置前发送信号,运动过程不停止。
本文主要采用方法2,可以使用ABB机器人TriggerL指令,配合TriggInt,在指定位置前一定距离或者时间发出信号并在中断里等待拍照完成信号与接受数据并更新机器人TCP,过程机器人不停止运动。
PROC main()
reset do_attach;
tool1:=Tooldata_1;!Tooldata_1为标准TCP,即采用该TCP去固定位置抓取
count:=0;
Idelet intno1;
CONNECT intno1 WITH tr1;
TriggInt trigg1,0.5\Time,intno1;
!此处设计为固定点前0.5s触发中断,也可使用提早距离
WHILE count<5 DO
tool1:=Tooldata_1;
PulseDO do_new;
MoveL offs(Target_10,0,0,90),vmax,z100,Tooldata_1\WObj:=wobj0;
MoveL Target_10,v1000,fine,Tooldata_1\WObj:=wobj0;
set do_attach;
WaitTime 0.3;
MoveL offs(Target_10,0,0,90),v1000,z100,Tooldata_1\WObj:=wobj0;
TriggL Target_cam,v500,trigg1,z100,Tooldata_1\WObj:=wobj0;
!经过拍照点前0.5s触发中断,机器人继续运动
!中断事件内收到拍照结果并更新TCP
MoveL offs(Target_cam,0,50,0),v500,z100,Tooldata_1\WObj:=wobj0;
MoveL offs(pPlace,0,0,30),v500,z100,tool1\WObj:=wobj0;
!放置时,采用修正后的新TCP tool1
!运动过程转弯半径不采用fine,保证机器人不停止
….
Incr count;
ENDWHILE
ENDPROC
TRAP tr1
VAR pose pose1;
PulseDO\PLength:=0.1,do_cam;
!发出拍照信号
waitdi di_cam_wait,1;
!等待拍照完成信号
!此处也可修改为通过socket接受数据
pose1.trans.y:=-pos1.y;
pose1.rot:=OrientZYX(-pos1.z/1000*180/pi,0,0);
tool1.tframe :=posemult(tool1.tframe ,pose1);
!更新TCP,由于拍照结果相对于原TCP,故使用位姿的右乘
!注意拍照结果与原有TCP坐标系的关系
TPWrite "tool1 "\Pos:=tool1.tframe .trans;
TPWrite "tool1 rz"\num:=-pos1.z/1000*180/pi;
了解相关资讯请点击:ABB机器人配件
了解相关资讯请点击:ABB机器人配件
本文摘自:网络 日期:2020-03-02