1)如果有上图所示的六个产品仓位需要吸纳,如何最快速的创建仓位?(纯教学?幼稚,太手动了。)
2)如下图所示,我们可以发现1号位置与0号位置相同,1号位置是距离0号位置的半径偏移,2-6号位置也是距离0号位置的半径偏移,2-6号位置都是朝向圆心。由于图中有六个,即从2号开始,每个点的姿态相对于1号旋转60度。
3)是否只要教了0点的位置,半径已知(如果未知,自己测)就可以不用教自动算出其他六个点的位置?答案当然是肯定的!!!
4)因为涉及到坐标系偏差和旋转,所以要准备好刀具和工件坐标系。
5)创建一个刀具gripper_dual,假设Z方向为100,刀具的Z方向为刀具延伸方向。
6)如下图创建一个坐标系,圆心在中间,从0到1的方向是如图所示的X和Y。下图工件坐标系Z向下(满足右手定则)。这个创作主要是为了计算方便。
7)在工件2坐标系中和夹爪_双重刀具下,示教中间产品位置Target_center。此时,刀具的z必须垂直于产品平面,即刀具的z朝下。(其实只要用这个点的姿态和z,这个点的xy为0,因为这个点在workobject2坐标系中是在原点,也就是xy为0。)
8)设置圆心到第一个产品的距离(即半径),例如21.45 mm。
9)我们假设第一个位置叫做Target1,它在workobject2坐标系中。
Target 1:= Target _ center;!先让Target1的位置和姿态等于Target_center。
target 1 . trans . x:= radius * cos(60 * 0);!重新计算位置的x
target 1 . trans . y:= radius * sin(60 * 0);!重新计算位置的y轴
Target1:=RelTool(Target1,0,0,0 rz:= 0 * 60);!获得计算的位置x和y后,tcp围绕工具的z旋转60°。
10)通过上面的例子,获得了目标1的位置,注意它在工件2坐标系中。
11)在测试过程中,可以相对简单地完成六个位置的计算和移动,如下所示
PROC main()
半径:= 21.45;
count 1:= 1;
WHILEcount17 DO
rHome
cal
路线1;
count 1:= count 1+1;
结束时间
结束过程
过程例程1()
MoveJoffs(Target_temp,0,0,-30),v500,z1,gripper _ dualWObj:= work object _ 2;
MoveLTarget_temp,v500,z1,gripper _ dualWObj:= work object _ 2;
等待时间1;
MoveLoffs(Target_temp,0,0,-30),v500,z1,gripper _ dualWObj:= work object _ 2;
结束过程
过程校准()
目标_温度:=目标_中心;
测试计数1
案例1:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=(count 1-1)* 60);
案例二:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 60);
案例三:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 120);
案例4:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 180);
案例5:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=-120);
案例6:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=-60);
结束测试
结束过程
过程主页()
MoveJpHome,v500,z1,gripper _ dualWObj:= wobj 0;
结束过程
1)是什么?码垛?
定期移动机器人抓取并放置。
2)如何简化?码垛程序
设置工件坐标系,刀具,为第一码垛放置教学用点,可以设置xyz方向的间距和数量。
3)如何创造
创建m _托盘模块
创建两个例程
在init程序中,设置xyz方向的数量和每个方向的间距。
在p_main程序中,创建机器人移动到pHome点、pPick位置(抓取位置)和第一个pPlace_ini。
通过三层for循环,继续进行码垛。示例程序首先是X方向,然后是Y方向,然后是Z方向。
其中,偏移量如下:
pPlace:=offs(pPlace_ini,(i-1)*dis_x,(j-1)*dis_y,(k-1)* dis _ z);
横丝机器人编程技巧1: abb机器人Pdisp轨迹迁移使用“[干货] ABB”机器人编程技巧1: abb机器人Pdisp轨迹偏移使用
【干货】ABB机器人编程技巧2:单站多预约程序
【干货】ABB机器人编程技巧3:在robotstudio中创建两个。机器人套接字连接基于
【干货】ABB机器人编程技巧4:双站预订程序
【干货】ABB机器人编程技巧五:处理提取与摄像头Socket通信的数据。
【干货】ABB机器人编程技巧6: abb机器人如何创建数组
【干货】ABB机器人编程技巧7: abb机器人创建自定义数据类型
【干货】ABB机器人编程技巧8: abb机器人数据存储类型差异
【干货】ABB机器人编程技巧9:创建带参数的例程
【干货】ABB机器人编程技巧10: abb机器人建立码垛程序
【干货】ABB机器人编程技巧12:12:Fine和z0的区别