样例程序2:MM_S2_Viz_Basic

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

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

程序简介

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

功能说明

机器人触发Mech-Viz工程运行,然后获取路径规划结果,进而执行抓取和放置操作。

文件路径

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

所需工程

Mech-Vision工程和Mech-Viz工程

使用前提

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

  2. 已完成自动标定

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

程序解读

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

    — This is a LUA program.
    require("MM_Module")
    IP_Address = "192.168.1.8"
    Server_Port = 50000
    Time_Out = 60
    --initialize communication parameters (initialization is required only once)
    MM_Init_Socket(IP_Address,Server_Port,Time_Out)
    --close socket connection
    MM_Close_Socket()
    --open socket connection
    MM_Open_Socket()
    --trigger  Mech-Viz project
    TOP_Status = MM_Start_Viz(2)
    print("Vision system status code:",TOP_Status)
    --check whether the Mech-Vision project has been triggered successfully
    if TOP_Status ~= 2103 then
        print("Abnormal vision system status!!!",TOP_Status)
        Pause()
    end
    --Set branch
    TOP_Status = MM_Set_Branch(1,1)
    print("Vision system status code:",TOP_Status)
    --check whether the branch has been set successfully
    if TOP_Status ~= 2105 then
        print("Failed to set the branch!!!",TOP_Status)
        Pause()
    end
    --get planned path
    TOP_Status,TOP_Last_Data,TOP_Pos_Num,TOP_VisPosNum=MM_Get_VizData(1)
    print("Planned path:",TOP_Status,TOP_Last_Data,TOP_Pos_Num)
    --check whether planned path has been got from Mech-Viz successfully
    if TOP_Status ~= 2100 then
        print("Failed to get the planned data!!!",TOP_Status)
        Pause()
    end
    --save waypoints of the planned path to local variables one by one
    MM_Get_JPR(1,10,20,30)
    MM_Get_JPR(2,11,21,31)
    MM_Get_JPR(3,12,22,32)
    --move to picking waypoint
    MovJ(JPR[10],{cnt = -1})
    --Mov grabbing point
    MovJ(JPR[11],{cnt = -1})
    --add object grasping logic here, such as "setdo DO_1, 1;"
    Pause()
    --move to departure waypoint of picking
    MovJ(JPR[12],{cnt = -1})

上述样例程序代码对应的流程如下图所示。

sample2

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

流程 代码及说明

导入MM_Module头文件

    -- This is a LUA program.
    require("MM_Module")

初始化和建立通信

    IP_Address = "192.168.1.8"
    Server_Port = 50000
    Time_Out = 60
    --initialize communication parameters (initialization is required only once)
    MM_Init_Socket(IP_Address,Server_Port,Time_Out)
    --close socket connection
    MM_Close_Socket()
    --open socket connection
    MM_Open_Socket()
  • MM_Init_Socket:初始化通信的指令。

    初始化通信指令输入参数:

    • '50000':工控机的端口号。

    • '192.168.1.8':工控机的IP地址。

    • 60:通信超时等待时间为60秒。

  • MM_Close_Socket:关闭通信的指令。

  • MM_Open_Socket:连接通信的指令。

先关闭通信再重新连接确保没有连接中的工程。

启动Viz,返回状态码

    --trigger  Mech-Viz project
    TOP_Status = MM_Start_Viz(2)
  • MM_Start_Viz:启动Mech-Viz的指令。

  • 2:设置拍照位姿类型2

打印状态码并验证

    print("Vision system status code:",TOP_Status)
    --check whether the Mech-Vision project has been triggered successfully
    if TOP_Status ~= 2103 then
        print("Abnormal vision system status!!!",TOP_Status)
        Pause()
    end

设置Mech-Viz消息分支出口

    --Set branch
    TOP_Status = MM_Set_Branch(1,1)
  • MM_Set_Branch:设置Mech-Viz消息分支出口的指令。

  • 第一个1:消息分支的步骤编号。

  • 第二个1:Mech-Viz工程将沿“消息分支”步骤的出口0继续执行。此处需注意,如果该参数设置为N,则出口为N-1。

打印状态码并验证

    print("Vision system status code:",TOP_Status)
    --check whether the branch has been set successfully
    if TOP_Status ~= 2105 then
    print("Failed to set the branch!!!",TOP_Status)
    Pause()
    end

获取规划路径

    --get planned path{
    TOP_Status,TOP_Last_Data,TOP_Pos_Num,TOP_VisPosNum=MM_Get_VizData(1)}
  • MM_Get_VizData:获取Mech-Viz规划路径的指令。

  • 1: 以关节角的形式获取路径点。

整条指令表示将第一个视觉点的工具位姿、标签和末端工具编号分别转存至指定寄存器。

打印状态码并验证

    print("Planned path:",TOP_Status,TOP_Last_Data,TOP_Pos_Num)
    --check whether planned path has been got from Mech-Viz successfully
    if TOP_Status ~= 2100 then
    print("Failed to get the planned data!!!",TOP_Status)
    Pause()
    end

转存规划路径

    --save waypoints of the planned path to local variables one by one
    MM_Get_JPR(1,10,20,30)
    MM_Get_JPR(2,11,21,31)
    MM_Get_JPR(3,12,22,32)
  • MM_Get_JPR:转存规划路径的指令。 以第一条为例

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

  • 10:将第一个路径点的关节角将保存至位置寄存器JPR[10]

  • 20:将第一个路径点的标签将保存至数值寄存器HR[20]

  • 30:将第一个路径点的移动速度被保存至数值寄存器HR[30]

移动至第一个规划点

  --move to picking waypoint
  MovL(PR[10],{cnt = -1})

移动到抓取点

    --Mov grabbing point
    MovJ(JPR[11],{cnt = -1})

机器人从抓取接近点移动到抓取点。

设置DO执行放置

    --add object grasping logic here, such as "setdo DO_1, 1;"
    Pause()

机器人移动到抓取点后,通过设置DO指令(例如“setdo DO_1, 1”),控制末端工具进行抓取。用户需根据实际场景增加设置DO的操作。

Pause表示停止程序的执行。用户如果已添加设置DO的语句,此处可以删除Pause语句。

移动到放置离开点

    --move to departure waypoint of picking
    MovJ(JPR[12],{cnt = -1})

机器人移动到抓取点上方的某处,即到达抓取离开点。

增加抓取离开点可防止机器人在移动过程中与场景物体(例如料筐)发生碰撞。用户可根据实际场景修改此处的Z轴负方向偏移量(JPR[n]值),保证离开过程无碰撞。

该页面是否有帮助?

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

我们重视您的隐私

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