ABB 抓取样例程序

本节将介绍用于完成简单识别并移动的机器人样例程序。

前提

  1. 已参照 ABB 标准接口通信配置 完成标准接口通信配置。

  2. 已参照 ABB 标定操作流程 完成外参标定。

  3. Mech-Vision 和 Mech-Viz 工程已搭建,并已勾选 自动加载

  4. 已定义机器人工具中心点。

  5. 调低机器人运行速度,以避免调试过程中发生碰撞。

样例程序介绍

机器人简单抓取和放置的样例程序位于Mech-Vision和Mech-Viz软件安装目录下 Mech-Center/Robot_Interface/ABB/sample 文件夹内。

使用 Mech-Vision 进行视觉识别并获取结果

PROC Sample_1()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Vision
    ! 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,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run vision project
    MM_Start_Vis 1,0,2,snap_jps;
    WaitTime 1;
    MM_Get_VisData 1,PoseNum,Status;
    IF Status<>1100 THEN
        Stop;
    ENDIF
    MM_Get_Pose 1,pickpoint,label,speed;
    MM_Close_Socket;
    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

程序逻辑解读

  1. 移动机器人至 Home 点。

  2. 移动到相机拍照位置。

  3. 调用 MM_Init_Socket 对通信进行初始化设置。

  4. 调用 MM_Open_Socket 建立 TCP/IP 连接。

  5. 如需设置 Mech-Vision 工程配方,可以在这里添加 MM_Switch_Model 设置工程配方。

  6. MM_Start_Vis 触发 Mech-Vision 工程运行。

  7. 等待1秒。Eye To Hand 模式下,若在 MM_Start_Vis 和 MM_Get_VisData 之间有移动步骤(MoveL 或 MoveJ),则不需要在此设置等待;Eye In Hand模式下则必须等待一秒,在相机拍照完成之前保持相机静止。

  8. 获取 Mech-Vision 工程计算出的位姿。

  9. 判断获取位姿的状态码是否正常,若状态码返回异常,用户需要进行处理,例如停止机器人。

  10. 将获取的 TCP 位姿数据转存到指定变量中。

  11. 调用 MM_Close_Socket 断开 TCP/IP 连接。

  12. 移动到抓取点。

  13. 移动到抓取点和放置点之间的安全区域。

  14. 移动到固定的放置点。

用户自定义部分

  • 定义工具中心点 TCP

    Gripp1TCP: 用户可通过修改 tooldata 中 Gripp1TCP 的值来调整 TCP。

  • 示教 Home 点

    MoveAbsJ Home, 用户需将 Home 点位姿记录在 Home 位姿中。

  • 示教拍照点

    MoveL camera_capture, 用户需将拍照点位姿记录在 camera_capture 位姿中。

  • 示教过渡点

    MoveL waypoint1, 用户可添加一个或几个中间点,使机器人从抓取点移动至放置点过程中,无碰撞。

  • 示教放置点

    MoveL drop,用户需将放置点位姿记录在 drop 位姿变量中。

  • 定义抓取前后,放置前后的接近距离

    • 接近抓取点

      MoveL 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 Sample_2()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Viz
    ! 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,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run Viz project
    MM_Start_Viz 1,snap_jps;
    WaitTime 0.1;
    !set branch exitport
    MM_Set_Branch 1,1;
    !get planned path
    MM_Get_VizData 2, 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},label{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
    MM_Close_Socket;
    !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 进行视觉引导抓取,然后放置到固定的放置点。

  1. 移动机器人至 Home 点。

  2. 移动到相机拍照位置。

  3. 调用 MM_Init_Socket 对通信进行初始化设置。

  4. 调用 MM_Open_Socket 建立 TCP/IP 连接。

  5. 如需设置 Mech-Vision 工程配方,可以在这里调用 MM_Switch_Model 。

  6. 触发 Mech-Viz 工程运行。

  7. 获取 Mech-Viz 工程规划的移动路径。

  8. 判断状态码是否正常,若状态码返回异常,用户需要进行处理,例如暂停机器人。

  9. 使用循环将获取的位姿保存到变量。

  10. 使用循环使机器人沿 Mech-Viz 规划的路径移动,完成抓取。

  11. 调用 MM_Close_Socket 断开 TCP/IP 连接。

  12. 移动到抓取点和放置点之间的中间区域。

  13. 移动到放置点进行放置。

用户自定义部分

  • 定义工具中心点 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,用户需要修改偏移量,保证离开过程无碰撞。

使用 Mech-Vision “路径规划”步骤获取规划路径

PROC Sample_3()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Vision Path Planning Step
    ! 2023-1-10
    !**********************************************************
    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,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run vision project
    MM_Start_Vis 1,0,2,snap_jps;
    WaitTime 1;
    !get planned path from Mech-Vision Path Planning Step
    MM_Get_VisPath 1,2,PoseNum,VisPosNum,Status;
    IF Status<>1103 THEN
        Stop;
    ENDIF
    FOR i FROM 1 TO PoseNum DO
        count:=i;
        MM_Get_Pose count,P{count},label{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
    MM_Close_Socket;
    !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

程序逻辑解读

  1. 移动机器人至 Home 点。

  2. 移动到相机拍照位置。

  3. 调用 MM_Init_Socket 对通信进行初始化设置。

  4. 调用 MM_Open_Socket 建立 TCP/IP 连接。

  5. 如需设置 Mech-Vision 工程配方,可以通过 MM_Switch_Model 设置工程配方。

  6. MM_Start_Vis 触发 Mech-Vision 工程运行。

  7. MM_Get_VisPath 获取 Mech-Vision “路径规划”步骤输出的移动路径。

  8. 判断获取路径的状态码是否正常,若状态码返回异常,用户需要进行处理,例如停止机器人。

  9. 使用循环将获取的路径点位姿保存到变量中。

  10. 使用循环使机器人沿规划路径移动,完成抓取。

  11. 调用 MM_Close_Socket 断开 TCP/IP 连接。

  12. 移动到抓取点和放置点之间的安全区域。

  13. 移动到固定的放置点。

用户自定义部分

  • 定义工具中心点 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,用户需要修改偏移量,保证离开过程无碰撞。

我们重视您的隐私

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