返回首页 hi, 欢迎来到机器人在线 请登录/ 免费注册 扫码关注

【干货】ABB机器人编程技巧11:创建有规律的机器人旋转Robtarget

时间:2018-08-31 来源:ABB机器人实战技巧 阅读:56420

1)如果有上图所示6个产品位置要吸取,如何最快速的创建点位?(纯示教?Naive,太体力活了。)


2)如下图,我们可以发现1号位置和0号位置姿态一样,1号相对于0号就是一个半径的偏移,2-6号位置相对于0号也都是一个半径的偏移,2-6号姿态均朝向圆心。由于图中为6个,即从2号开始,每个点姿态相对于1号旋转了60°


3)是不是可以只要示教0号点位置,同时已知半径(未知的话,自己量一下),就能自动算出其他6个点位置而不用示教了呢?答案当然是可以的!!!


4)由于涉及到坐标系偏移和旋转,所以要做好Tool和工件坐标系


5)创建工具gripper_dual,假设z方向100,工具的Z方向为工具延伸方向


6)如下图创建坐标系,圆心在中间,0号到1号方向为X,y如图。下图中的工件坐标系Z朝下(满足右手法则)。这样创建主要是为了计算方便。


7)在workwobject2坐标系,gripper_dual工具下,示教中间产品位置Target_center,此时工具的Z必须垂直于产品平面,即工具的Z朝下。(其实只是要用这个点的姿态和z,这个点的xy都是0,因为这个点在workobject2坐标系处于原点,即xy都是0)


8)设置圆心到第一个产品的距离(即半径radius),这里举例21.45mm


9)我们假设第一个位置叫Target1,则在workobject2坐标系下

Target1:=Target_center;!先让Target1位置和姿态都等于Target_center

Target1.trans.x:=radius*cos(60*0);!重新计算位置的x

Target1.trans.y:=radius*sin(60*0);!重新计算位置的y

Target1:=RelTool(Target1,0,0,0Rz:=0*60);!得到计算后的位置x和y后,tcp绕着工具的Z旋转60°。


10)通过上述例子,就得到了Target1位置,注意是在workobject2坐标系下。


11)再配合test等流程,就可以比较简单的完成6个位置的计算和移动,如下

PROC main()

radius:=21.45;

count1:=1;

WHILEcount1<7 DO

rHome;

cal;

routine1;

count1:=count1+1;

ENDWHILE

ENDPROC 

PROC routine1()

MoveJoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

MoveLTarget_temp,v500,z1,gripper_dualWObj:=Workobject_2;

WaitTime 1;

MoveLoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

ENDPROC

 PROC cal()

Target_temp:=Target_center;

TEST count1

 CASE 1:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=(count1-1)*60);

CASE 2:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=60);

 CASE 3:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=120);

CASE 4:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=180);

CASE 5:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-120);

CASE 6:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-60);

ENDTEST

ENDPROC

PROC rHome()

MoveJpHome,v500,z1,gripper_dualWObj:=wobj0;

ENDPROC


1)什么是码垛?

有规律的移动机器人进行抓取及放置


2)如何简便码垛程序

设置好工件坐标系,工具,对第一个码垛放置点进行示教,xyz方向的间距和个数可设


3)如何创建

创建m_pallet模块

建立两个routine

在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);



ABB机器人编程技巧1:ABB机器人Pdisp 轨迹偏移使用">【干货】ABB机器人编程技巧1:ABB机器人Pdisp 轨迹偏移使用

【干货】ABB机器人编程技巧2:单工位多次预约程序

【干货】ABB机器人编程技巧3:在robotstudio创建两台机器人的socket连接
【干货】ABB机器人编程技巧4:双工位预约程序
【干货】ABB机器人编程技巧5:与相机通讯的Socket收发数据处理与提取
【干货】ABB机器人编程技巧6:ABB机器人如何创建数组
【干货】ABB机器人编程技巧7:ABB机器人创建自定义数据类型
【干货】ABB机器人编程技巧8:ABB机器人数据存储类型区别
【干货】ABB机器人编程技巧9:创建带参数例行程序
【干货】ABB机器人编程技巧10:ABB机器人创建码垛程序
【干货】ABB机器人编程技巧12:Fine与z0的区别


ABB操作技巧 ABB机器人 技术干货

好的文章,需要您的鼓励

6

  • 最新资讯
  • 最新问答