在工业机器人的应用里,遇到需要工业机器人抓住工件进行相机拍照定位时,通常都是工业机器人静止在镜头前,进行拍照,但为了节约生产时间,工业机器人可以实现镜头前不停止的“飞拍”。
实现工业机器人“飞拍”,就是节约拍照数据交互的时间,这就需要提前给出拍照信号,抵消拍照的延时。下面就举ABB工业机器人为例,探究一下实现“飞拍”的两种方法。
方法1:工业人机器人经过相机前的传感器时触发拍照。
这种方法需要增加一个传感器,通过调节传感器到相机的位置,控制拍照信号的释放。这种方法对传感器要求高,对输入输出速度有****要求。同时这种方法的优势在于调试过程相对简单。
方法二:工业机器人经过相机前自身发出信号,即在到达某些位置前发送信号,运动过程不停止。
可以使用ABB工业机器人TriggerL指令,配合TriggInt,在指定位置前****距离或者时间发出信号并在中断里等待拍照完成信号与接受数据并更新工业机器人TCP,过程工业机器人不停止运动。
下面给出ABB工业机器人在此情况下的基本编程代码。
PROC main()
reset do_attach;
tool1:=Tooldata_1;
!Tooldata_1为标准TCP,即采用该TCP去固定位置抓取
count:=0;
IDelete 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;
ENDTRAP
以上就是ABB工业机器人在“飞拍”时用到的方法。
睿易智能——工业机器人集成应用方案提供者
