样例程序7:MM_S7_Viz_SwitchTCP

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

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

程序简介

功能说明

机器人触发Mech-Viz工程运行,并获取路径规划结果,然后根据抓取点的末端工具编号切换相应的末端工具,进而执行抓取和放置操作。

文件路径

Mech-Vision和Mech-Viz软件安装目录下Communication Component/Robot_Interface/KUKA/sample/MM_S7_Viz_SwitchTCP

所需工程

Mech-Vision工程和Mech-Viz工程

使用前提

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

  2. 已完成自动标定

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

程序解读

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

与MM_S2_Viz_Basic样例相比,本样例主要新增了根据末端工具编号切换工具的功能(加粗部分的代码)。因此,下文不再重复解释与MM_S2_Viz_Basic样例相同部分的代码(详情请参考MM_S2_Viz_Basic样例说明)。
DEF  MM_S7_Viz_SwitchTCP ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, switch TCP according to the label
; Mech-Mind, 2023-12-25
;---------------------------------------------------
   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,0)
   ;move to robot home position
PTP HOME Vel=100 % DEFAULT
   ;initialize communication parameters (initialization is required only once)
   MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
   ;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0]
   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(2,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=2038 means no point cloud in ROI
      halt
   ENDIF
   ;save waypoints of the planned path to local variables one by one
   MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
   ;switch TCP according to the received toolid
   ;reset tool signals according to received toolid
   switch toolid[vis_pos_num]
      CASE 1
         TOOL_DATA[1]=tool_1
         ;reset tool signal
      CASE 2
         TOOL_DATA[1]=tool_2
         ;reset tool signal
      DEFAULT
         ;add handling logic here if the toolid is invalid
         ;reset tool signal
         halt
   endswitch
   ;follow the planned path to pick
   ;move to approach waypoint of picking
LIN pick_point1 Vel=1 m/s CPDAT7 Tool[1] Base[0]
   ;move to picking waypoint
LIN pick_point2 Vel=0.3 m/s CPDAT8 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;open tool signal
      CASE 2
         halt
         ;open tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of picking
LIN pick_point3 Vel=1 m/s CPDAT9 Tool[1] Base[0]
   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[0] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[0] Base[0]
   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;reset tool signal
      CASE 2
         halt
         ;reset tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

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

sample7

下表为新增代码的逻辑解读。

流程 代码及说明

获取规划路径

;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(2,pos_num,vis_pos_num,status)
  • MM_Get_VizData:获取Mech-Viz规划路径的指令。

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

  • pose_num:该变量保存视觉系统返回的路径点个数。

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

  • status:该变量保存指令执行的状态码。

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

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

转存规划路径

;save waypoints of the planned path to local variables one by one
MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])
MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
  • MM_Get_Pose:转存规划路径的指令。

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

  • Xpick_point1:该变量将保存第一个路径点的工具位姿。

  • label[1]:该变量将保存第一个路径点对应的标签。

  • toolid[1]:该变量将保存第一个路径点对应的末端工具编号。

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

  • 用户需结合实际Mech-Viz工程转存规划路径。本样例假设Mech-Viz规划的路径包含三个路径点,其中第一个路径点为抓取接近点(Xpick_point1),第二个路径点为抓取点(Xpick_point2),第三个路径点为抓取离开点(Xpick_point3)。另外,由于vis_pose_num表示抓取点在路径中的位置编号,因此,toolid[vis_pos_num]等同于toolid[2],两者都可表示机器人移动至抓取点(Xpick_point2)时所使用的末端工具编号。

  • 本样例后续将根据toolid[vis_pos_num]值切换末端工具,因此用户搭建的Mech-Viz工程需包含“切换工具”步骤,且已正确配置“切换工具”的步骤参数。

    • “切换工具”步骤需连接在“检查视觉结果”步骤的有结果出口之后。

    • “切换工具”步骤的工作模式参数需设置为自动切换为合适的工具

根据末端工具编号切换末端工具

;switch TCP according to the received toolid
;reset tool signals according to received toolid
switch toolid[vis_pos_num]
   CASE 1
      TOOL_DATA[1]=tool_1
      ;reset tool signal
   CASE 2
      TOOL_DATA[1]=tool_2
      ;reset tool signal
   DEFAULT
      ;add handling logic here if the toolid is invalid
      ;reset tool signal
      halt
endswitch

toolid[vis_pos_num]表示抓取点的末端工具编号值。用户可根据toolid[vis_pos_num]变量值,决定机器人移动到对应位姿(抓取点)时所使用的末端工具,即根据末端工具编号切换末端工具。上述代码的逻辑说明如下所示。

  • 当抓取点的末端工具编号为1时,机器人将使用tool_1工具坐标系。

  • 当抓取点的末端工具编号为2时,机器人将使用tool_2工具坐标系。

  • 当抓取点的末端工具编号为其他值时,机器人将停止运行。此处用户可根据实际情况,添加其他处理逻辑。

当机器人移动至抓取点时,用户可根据末端工具编号打开相应工具对应的DO信号,例如样例中如下代码。

;add object grasping logic here, such as "$OUT[1]=TRUE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;open tool signal
   CASE 2
      halt
      ;open tool signal
   DEFAULT
      halt
endswitch

当机器人移动至放置点时,用户可根据末端工具编号关闭并重置相应工具对应的DO信号,例如样例中如下代码。

;add object releasing logic here, such as "$OUT[1]=FALSE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;reset tool signal
   CASE 2
      halt
      ;reset tool signal
   DEFAULT
      halt
endswitch

该页面是否有帮助?

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

我们重视您的隐私

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