ABB机器人飞拍探讨

[复制链接]
查看53297 | 回复0 | 2024-10-16 09:09:07 | 显示全部楼层 |阅读模式


video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_1229436862633312258

通常机器人在利用相机进行拍照定位处理时,机器人为静止。

为提高生产节拍,“飞拍”概念被广泛应用,即机器人在经过拍照点时不停止拍照。

如上图,来料位置随机(随机位置产生教学见 随机物料产生与抓取),机器人去固定位置抓取。此时抓取的工件位置偏差,需要机器人在经过相机上方时触发拍照,并在最后放置时调整机器人姿态将产品放入指定位置。

整个过程(尤其是拍照过程),机器人不停止运动。

考虑到延时,机器人在经过固定拍照位前需触发拍照信号。

方法1:机器人经过相机前的Sensor并触发拍照





方法2:机器人经过相机前自身发出信号,即在到达某些位置前发送信号,运动过程不停止。

本文主要采用方法2,可以使用ABB机器人TriggerL指令,配合TriggInt,在指定位置前一定距离或者时间发出信号并在中断里等待拍照完成信号与接受数据并更新机器人TCP,过程机器人不停止运动。



代码如下:

PROCmain()resetdo_attach;tool1:=Tooldata_1;!Tooldata_1为标准TCP,即采用该TCP去固定位置抓取count:=0;IDeleteintno1;CONNECTintno1 WITH tr1;TriggInttrigg1,0.5\Time,intno1;        !此处设计为固定点前0.5s触发中断,也可使用提早距离
WHILEcount<5 DOtool1:=Tooldata_1;PulseDOdo_new;MoveLoffs(Target_10,0,0,90),vmax,z100,Tooldata_1\WObj:=wobj0;MoveLTarget_10,v1000,fine,Tooldata_1\WObj:=wobj0;setdo_attach;WaitTime0.3;MoveLoffs(Target_10,0,0,90),v1000,z100,Tooldata_1\WObj:=wobj0;TriggLTarget_cam,v500,trigg1,z100,Tooldata_1\WObj:=wobj0;           !经过拍照点前0.5s触发中断,机器人继续运动           !中断事件内收到拍照结果并更新TCPMoveLoffs(Target_cam,0,50,0),v500,z100,Tooldata_1\WObj:=wobj0;MoveLoffs(pPlace,0,0,30),v500,z100,tool1\WObj:=wobj0;            !放置时,采用修正后的新TCP tool1            !运动过程转弯半径不采用fine,保证机器人不停止….Incrcount;ENDWHILEENDPROC
TRAPtr1VARpose pose1;PulseDO\PLength:=0.1,do_cam;        !发出拍照信号waitdidi_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;ENDTRAP


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则