样例程序3:MM_S3_Vis_Path

您正在查看预发布版本(V2.2.0)的文档。如果您想查阅其他版本的文档,可以点击页面右上角“切换版本”按钮进行切换。

■ 如果您不确定当前使用的产品是哪个版本,请随时联系梅卡曼德技术支持

程序简介

功能说明

机器人触发Mech-Vision工程运行,然后获取规划路径,进而执行抓取操作。

文件路径

Mech-Vision和Mech-Viz软件安装目录下Communication Component/Robot_Interface/EFORT/MM_S3_Vis_Path

所需工程

Mech-Vision工程

使用前提

  1. 已完成标准接口通信配置

  2. 已完成自动标定

此样例程序仅是示例程序。用户需根据实际情况在此基础上进行修改,请勿直接使用该程序。

程序解读

以下为MM_S3_Vis_Path样例程序的代码及相关解释说明。

 1. MJOINT(POINTC(264.2282,-217.9533,359.1164,-83.989165,1.303953,176.0864,CFG1,0,0,1), v100perc, fine, tool0);
 2. MM_Init_Socket(1);
 3. CALL: MM_Open_Socket();
 4. CALL: MM_Status := MM_Switch_Model(1, 1);
 5. CALL: MM_Status := MM_Start_Vis(1, 0, 1, MM_J);
 6. CALL: MM_Status, MM_LastData, MM_POS_NUM, MM_VisPosNum := MM_Get_VisPath(1, 2);
 7. IF MM_Status <> 1103 THEN
 8.     STOPPROG;
 9. END_IF;
10. CALL: MM_Pose[1], MM_Label[1], MM_Tool[1] := MM_Get_Pose(1);
11. CALL: MM_Pose[2], MM_Label[2], MM_Tool[2] := MM_Get_Pose(2);
12. CALL: MM_Pose[3], MM_Label[3], MM_Tool[3] := MM_Get_Pose(3);
13. CALL: MM_Pose[4], MM_Label[4], MM_Tool[4] := MM_Get_Pose(4);
14. CALL: MM_Pose[5], MM_Label[5], MM_Tool[5] := MM_Get_Pose(5);
15. MJOINT(MM_Pose[1], v500, fine, tool0);
16. MJOINT(MM_Pose[2], v500, fine, tool0);
17. MJOINT(MM_Pose[3], v500, fine, tool0);
18. MJOINT(MM_Pose[4], v500, fine, tool0);
19. MJOINT(MM_Pose[5], v500, fine, tool0);
20. CALL: MM_Close_Socket();

下表为上述程序的逻辑解读。用户单击指令名称的超链接便可查看该指令的详细说明。

流程 代码及说明

移动到拍照点

MJOINT(POINTC(264.2282,-217.9533,359.1164,-83.989165,1.303953,176.0864,CFG1,0,0,1), v100perc, fine, tool0);
  • MJOINT:机器人的关节移动指令,表示机器人关节沿指定路径移动至目标位置。

  • POINTC:指定机器人移动的目标位置,即相机拍照点。拍照点指相机采集图像时机器人所在的位置。在此位置,机器人手臂应不遮挡相机视野。

  • v100perc:指定机器人移动的速度上限。

  • fine:指定机器人移动的转弯半径。

  • tool0:机器人在移动时所使用的末端工具。

因此,整条指令表示机器人以关节移动方式准确移动至拍照点。

初始化通信参数

MM_Init_Socket(1)

机器人通过MM_Init_Socket指令设置与工控机通信的套接字号。

用户需根据实际情况修改此处的套接字号。

建立通信

CALL: MM_Open_Socket();

机器人通过MM_Open_Socket指令与视觉系统之间建立TCP协议通信连接。

切换Mech-Vision参数配方

CALL: MM_Status := MM_Switch_Model(1, 1);
  • MM_Switch_Model:切换Mech-Vision参数配方的指令。

  • 第一个1:Mech-Vision工程编号。

  • 第二个1:Mech-Vision工程中参数配方的编号。

  • MM_Status:保存指令执行的状态码。

因此,整条指令表示将Mech-Vision工程1的参数配方切换成编号为1的参数配方。

触发运行Mech-Vision工程

CALL: MM_Status := MM_Start_Vis(1, 0, 1, MM_J);
  • MM_Start_Vis:触发运行Mech-Vision工程的指令。

  • 1:Mech-Vision工程编号。

  • 0:期望Mech-Vision工程返回所有路径点。

  • 1:将机器人的当前关节角和法兰位姿传入Mech-Vision工程。

  • MM_J:用户自定义的关节角数据,此样例中该关节角数据无实际用处,但必须设定该关节角数据。

  • MM_Status:保存指令执行的状态码。

因此,整条指令表示机器人触发视觉系统运行编号为1的Mech-Vision工程,且期望Mech-Vision工程返回所有路径点。

获取规划路径

CALL: MM_Status, MM_LastData, MM_POS_NUM, MM_VisPosNum := MM_Get_VisPath(1, 2);
  • MM_Get_VisPath:获取Mech-Vision规划路径的指令。

  • 1:指定Mech-Vision工程编号。

  • 2:指定获取路径点的位姿形式为工具位姿。

  • MM_Status: 保存指令执行的状态码。

  • MM_LastData:表明是否已获取所有路径点。

  • MM_POS_NUM:保存视觉系统返回的路径点个数。

  • MM_VisPosNum:保存视觉移动路径点(抓取点)在路径中的位置编号。

因此,整条指令表示机器人获取Mech-Vision工程1返回的规划路径。

由于返回的规划路径保存在机器人内存中,此时用户无法直接获取到规划路径,必须通过后续“转存规划路径”才可访问。
IF MM_Status <> 1103 THEN
    STOPPROG;
END_IF;

当状态码MM_Status为1103时,则机器人成功获取到规划路径;否则视觉系统发生异常。用户可根据具体异常状态码做相应的处理。

转存规划路径

CALL: MM_Pose[1], MM_Label[1], MM_Tool[1] := MM_Get_Pose(1);
CALL: MM_Pose[2], MM_Label[2], MM_Tool[2] := MM_Get_Pose(2);
CALL: MM_Pose[3], MM_Label[3], MM_Tool[3] := MM_Get_Pose(3);
CALL: MM_Pose[4], MM_Label[4], MM_Tool[4] := MM_Get_Pose(4);
CALL: MM_Pose[5], MM_Label[5], MM_Tool[5] := MM_Get_Pose(5);
  • MM_Get_Pose:转存规划路径的指令。

  • 1:将转存第一个路径点。

  • MM_Pose[1]:保存第一个路径点的工具位姿。

  • MM_Label[1]:保存第一个路径点对应的标签。

  • MM_Tool[1]:保存第一个路径点对应的末端工具编号。

因此,“CALL:MM_Pose[1],MM_Label[1],MM_Tool[1]:=MM_Get_Pose(1); ”整条指令表示将第一个路径点的工具位姿、标签和末端工具编号分别转存至指定变量。

本样例假设Mech-Vision规划的路径包含五个路径点。用户需结合实际Mech-Vision工程转存规划路径。

移动至规划的各路径点

MJOINT(MM_Pose[1], v500, fine, tool0);
MJOINT(MM_Pose[2], v500, fine, tool0);
MJOINT(MM_Pose[3], v500, fine, tool0);
MJOINT(MM_Pose[4], v500, fine, tool0);
MJOINT(MM_Pose[5], v500, fine, tool0);

机器人以关节移动方式依次移动到各个路径点。

关闭通信

CALL: MM_Close_Socket();

机器人通过MM_Close_Socket指令断开与视觉系统之间的TCP协议通信连接。

该页面是否有帮助?

可以通过以下方式反馈意见:

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。