样例程序21:MM_S21_Vis_As_Uframe
程序简介
功能说明 |
机器人触发Mech-Vision工程运行以获取视觉结果,结果作为坐标系,执行抓取和放置动作流程。 |
||
文件路径 |
Mech-Vision和Mech-Viz软件安装目录下
|
||
所需工程 |
Mech-Vision工程 |
||
使用前提 |
|
| 此样例程序仅是示例程序。用户需根据实际情况在此基础上进行修改,请勿直接使用该程序。 |
程序解读
以下为MM_S21_Vis_As_Uframe样例程序的代码及相关解释说明。
| 与MM_S1_Vis_Basic样例相比,本样例仅新增了通过循环获取所有规划路径并进行抓取与放置的功能(加粗部分的代码)。因此,下文不再重复解释与MM_S1_Vis_Basic样例相同部分的代码(详情请参考MM_S1_Vis_Basic样例说明)。 |
MODULE MM_S21_Vis_As_Uframe
!----------------------------------------------------------
! FUNCTION: trigger Mech-Vision project and get vision result
! Mech-Mind, 2026-1-28
!----------------------------------------------------------
!define local num variables
LOCAL VAR num pose_num:=0;
LOCAL VAR num status:=0;
LOCAL VAR num label:=0;
LOCAL VAR num toolid:=0;
!define local joint&pose variables
LOCAL CONST jointtarget home:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget snap_jps:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget camera_capture:=[[1462.50,0.00,1905.00],[2.93133E-9,0,1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget pick_waypoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget pickpoint:=[[500,100,300],[0.00226227,-0.99991,-0.00439596,0.0124994],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget drop_waypoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget drop:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
!define LOCAL tooldata variables
LOCAL PERS tooldata gripper1:=[TRUE,[[0,0,0],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
!define LOCAL wobjdata variables
TASK PERS wobjdata MM_Wobj:=[FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
PROC Sample_21()
!set the acceleration parameters
AccSet 50,50;
!set the velocity parameters
VelSet 50,1000;
!move to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1\WObj:=MM_Wobj;
!initialize communication parameters (initialization is required only once)
MM_Init_Socket "127.0.0.1",50000,300;
!move to image-capturing position
MoveL camera_capture,v1000,fine,gripper1;
!open socket connection
MM_Open_Socket status;
IF status=3099 THEN
TPWrite "MM: Communication Error";
STOP;
ENDIF
!trigger NO.1 Mech-Vision project
MM_Start_Vis 1,0,2,snap_jps,status;
IF status<>1102 THEN
!add error handling logic here according to different error codes
TPWrite "MM: Status Error";
STOP;
ENDIF
!get vision result from NO.1 Mech-Vision project
stop;
MM_Get_VisData 1,pose_num,status;
!check whether vision result has been got from Mech-Vision successfully
IF status<>1100 THEN
!add error handling logic here according to different error codes
!e.g.: status=1003 means no point cloud in ROI
!e.g.: status=1002 means no vision result
Stop;
ENDIF
!close socket connection
MM_Close_Socket;
!save first vision point data to local variables
MM_Get_Pose 1,pickpoint,label,toolid;
!Convert the visual points to the workpiece coordinates
MM_Wobj.oframe.trans:=pickpoint.trans;
MM_Wobj.oframe.rot:=pickpoint.rot;
!move to intermediate waypoint of picking
MoveJ pick_waypoint,v1000,z50,gripper1;
!move to approach waypoint of picking
MoveL RelTool(pickpoint,0,0,-100), v1000, fine, gripper1\WObj:=MM_Wobj;
!move to picking waypoint
MoveL pickpoint, v300, fine, gripper1\WObj:=MM_Wobj;
!add object grasping logic here, such as "setdo DO_1, 1;"
Stop;
!move to departure waypoint of picking
MoveL RelTool(pickpoint,0,0,-100), v1000, fine, gripper1\WObj:=MM_Wobj;
!move to intermediate waypoint of placing
MoveJ drop_waypoint,v1000,z50,gripper1;
!move to approach waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move to placing waypoint
MoveL drop,v300,fine,gripper1;
!add object releasing logic here, such as "setdo DO_1, 0;"
Stop;
!move to departure waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move back to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1;
ENDPROC
ENDMODULE
上述样例程序代码对应的流程如下图所示。
下表为新增功能的逻辑解读。用户单击指令名称的超链接便可查看该指令的详细说明。
| 流程 | 代码及说明 |
|---|---|
将工具位姿转存为坐标系原点 |
MM_Wobj可以将获取的工具位姿解析为坐标转存至指定变量,trans为平移量,rot为旋转量。 |
进行抓取和放置 |
上述代码表示,机器人先移动到抓取过渡点,接着运动到抓取逼近点(在抓取点 Z 轴负方向偏移 100mm),再低速精准移动到抓取点;在抓取点处可添加夹爪闭合逻辑,暂停后回到抓取撤离点(即抓取逼近点);随后机器人移动到放置过渡点,再运动到放置逼近点(在放置点 Z 轴负方向偏移 100mm),低速精准移动到放置点;在放置点处可添加夹爪松开逻辑,暂停后回到放置撤离点(即放置逼近点),最后机器人关节绝对运动回到初始零点位置,完成单次抓取-放置的完整动作流程。 |