ABB 抓取样例程序¶
本节将介绍用于完成简单识别并移动的机器人样例程序。
前提¶
已参照 ABB 标准接口程序烧录 完成机器人程序烧录,并与 Mech-Center 建立连接。
已参照 ABB 标定操作流程 完成外参标定。
Mech-Vision 和 Mech-Viz 工程已搭建,并已勾选 自动加载 。
在 Mech-Center 的部署设置中,同步 Mech-Vision 自动加载的工程列表,并调整工程顺序。
已定义机器人工具中心点。
调低机器人运行速度,以避免调试过程中发生碰撞。
样例程序介绍¶
机器人简单抓取和放置的样例程序位于 Mech-Center 安装目录下 XXXX/Mech-Center-xxx/Robot_Interface/ABB/sample
文件夹内。
按照使用方式分为两类:
使用 Mech-Vision 进行视觉识别并获取结果¶
PROC Vision_Sample_1()
!**********************************************************
FUNCTION:Eye to Hand simple pick and place with Mech-Vision
! mechmind, 2022-5-1
!**********************************************************
AccSet 100, 100;
VelSet 100, 5000;
MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;!move robot home position
MoveL camera_capture,v500,fine,Gripp1TCP;
PoseNum:=0;
!Set ip address of IPC
MM_Init_Socket "127.0.0.1",50000,60;
WaitTime 0.1;
!Set vision recipe
MM_Switch_Model 1,1;
!Run vision project
MM_Start_Vis 1,1,2;
WaitTime 1;
MM_Get_VisData 1,LastData,PoseNum,Status;
IF Status<>1100 THEN
Stop;
ENDIF
MM_Get_Pose 1,pickpoint,label,speed1;
MoveL RelTool(pickpoint,0,0,-100),v1000,fine,Gripp1TCP;
MoveL pickpoint,v300,fine,Gripp1TCP;
Stop;
!Add object grasping logic here.
MoveL Offs(pickpoint,0,0,100), v1000, fine, Gripp1TCP;
MoveL waypoint1,v1000,z50,Gripp1TCP;
MoveL RelTool(drop,0,0,-100),v1000,fine,Gripp1TCP;
MoveL drop,v300,fine,Gripp1TCP;
Stop;
!Add object releasing logic here.
MoveL Offs(drop,0,0,100), v1000, fine, Gripp1TCP;
MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;
RETURN ;
ENDPROC
程序逻辑解读¶
移动机器人至 Home 点。
移动到相机拍照位置。
调用 MM_Init_Socket 对通信进行初始化设置。
如需设置 Mech-Vision 工程配方,可以在这里添加 MM_Switch_Model 设置工程配方。
MM_Start_Vis 触发 Mech-Vision 工程运行。
等待1秒。Eye To Hand 模式下,若在 MM_Start_Vis 和 MM_Get_VisData 之间有移动步骤(MoveL 或 MoveJ),则不需要在此设置等待;Eye In Hand模式下则必须等待一秒,在相机拍照完成之前保持相机静止。
获取 Mech-Vision 工程计算出的位姿。
判断获取位姿的状态码是否正常,若状态码返回异常,用户需要进行处理,例如停止机器人。
移动到抓取点。
移动到抓取点和放置点之间的安全区域。
移动到固定的放置点。
用户自定义部分¶
定义工具中心点 TCP
Gripp1TCP: 用户可通过修改 tooldata 中 Gripp1TCP 的值来调整 TCP。
示教 Home 点
MoveAbsJ Home, 用户需将 Home 点位姿记录在 Home 位姿中。
示教拍照点
MoveL camera_capture, 用户需将拍照点位姿记录在 camera_capture 位姿中。
示教过渡点
MoveL waypoint1, 用户可添加一个或几个中间点,使机器人从抓取点移动至放置点过程中,无碰撞。
示教放置点
MoveL drop,用户需将放置点位姿记录在 drop 位姿变量中。
定义抓取前后,放置前后的接近距离
接近抓取点
MoveJ RelTool(pickpoint,0,0,-100)抓取点沿工具 Z 轴负方向移动 100mm,用户需要修改偏移量,保证接近过程无碰撞。离开抓取点
MoveL Offs(pickpoint,0,0,100)从抓取点沿物体坐标 Z 轴正方向移动 100mm,用户需要修改偏移量,保证离开过程无碰撞。接近放置点
MoveL RelTool(drop,0,0,-100)放置点沿工具 Z 轴负方向移动 100mm,用户需要修改偏移量,保证接近过程无碰撞。离开放置点
MoveL Offs(drop,0,0,100)从放置点沿物体坐标 Z 轴正方向移动 100mm,用户需要修改偏移量,保证离开过程无碰撞。定义夹具动作
在移动到抓取点和放置点时,需添加夹具控制逻辑用来开关夹具。
使用 Mech-Viz 规划路径¶
PROC vision_sample_2()
!**********************************************************
! FUNCTION:Eye to Hand simple pick and place with Mech-Viz
! mechmind, 2022-5-1
!**********************************************************
AccSet 100, 100;
VelSet 100, 5000;
MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;!move robot home position
MoveL camera_capture,v500,fine,Gripp1TCP;
PoseNum:=0;
!Set ip address of IPC
MM_Init_Socket "127.0.0.1",50000,60;
WaitTime 0.1;
!Set vision recipe
MM_Switch_Model 1,1;
!Run Viz project
MM_Start_Viz 1;
WaitTime 0.1;
!set branch exitport
MM_Set_Branch 1,1;
!get planned path
MM_Get_VizData 2, LastData, PoseNum, VisPosNum, MM_Status;
IF MM_Status<>2100 THEN
Stop;
ENDIF
FOR i FROM 1 TO PoseNum DO
count:=i;
MM_Get_Pose count,P{count},label1{count},speed{count};
ENDFOR
!follow the planned path to pick
FOR j FROM 1 TO PoseNum DO
count:=j;
MoveL p{count},v1000,fine,Gripp1TCP;
IF count=VisPosNum THEN
Stop;
!add object grasping logic here
ENDIF
ENDFOR
!go to drop location
MoveL RelTool(drop,0,0,-100),v1000,z50,Gripp1TCP;
MoveL drop,v500,fine,Gripp1TCP;!drop point
stop;
!add object releasing logic here
MoveL Offs(drop,0,0,100), v1000, fine, Gripp1TCP;
MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;
RETURN ;
ENDPROC
程序逻辑解读¶
此样例使用 Mech-Viz 进行视觉引导抓取,然后放置到固定的放置点。
移动机器人至 Home 点。
移动到相机拍照位置。
调用 MM_Init_Socket 对通信进行初始化设置。
如需设置 Mech-Vision 工程配方,可以在这里调用 MM_Switch_Model 。
触发 Mech-Viz 工程运行。
获取 Mech-Viz 工程规划的移动路径。
判断状态码是否正常,若状态码返回异常,用户需要进行处理,例如暂停机器人。
使用循环将获取的位姿保存到变量。
使用循环使机器人沿 Mech-Viz 规划的路径移动,完成抓取并离开抓取点。
移动到抓取点和放置点之间的中间区域。
移动到放置点进行放置。
用户自定义部分¶
定义工具中心点 TCP
Gripp1TCP: 用户可通过修改 tooldata 中 Gripp1TCP 的值来调整 TCP。
示教 Home 点
MoveAbsJ Home, 用户需将 Home 点位姿记录在 Home 位姿中。
示教拍照点
MoveL camera_capture, 用户需将拍照点位姿记录在 camera_capture 位姿中。
示教过渡点
MoveL waypoint1, 用户可添加一个或几个中间点,使机器人从抓取点移动至放置点过程中,无碰撞。
示教放置点
MoveL drop,用户需将放置点位姿记录在 drop 位姿变量中。
定义夹具动作
在移动到抓取点和放置点时,需添加夹具控制逻辑用来开关夹具。
定义放置前后的接近距离
接近放置点
MoveL RelTool(drop,0,0,-100) 放置点沿工具 Z 轴负方向移动 100mm,用户需要修改偏移量,保证接近过程无碰撞。
离开放置点
MoveL Offs(drop,0,0,100) 从放置点沿物体坐标Z轴正方向移动 100mm,用户需要修改偏移量,保证离开过程无碰撞。