KUKA 피킹 샘플 프로그램

여기에서는 간단한 식별과 움직임을 완성하는 로봇 샘플 프로그램을 소개합니다.

전제

  1. KUKA 표준 인터페이스 프로그램 복제 를 참조해 로봇 프로그램의 복제를 완료하고 Mech-Center와 연결을 하였습니다.

  2. KUKA 캘리브레이션 프로세스 을 참조해 외부 파라미터 캘리브레이션을 완성하였습니다.

  3. Mech-Vision 및 Mech-Viz 프로젝트가 구축되어 각각 소프트웨어에서 현재 프로젝트를 자동으로 로드하기 기능을 선택했습니다.

  4. Mech-Center의 구성 설정에서 Mech-Vision에서 자동으로 로드된 프로젝트 리스트를 동기화하고 프로젝트 순서를 조정했습니다.

  5. 로봇의 TCP가 정의되었습니다.

  6. 디버깅 중 충돌을 피하기 위해 로봇의 속도를 낮춥니다.

샘플 프로그램 설명

MM_Sample 클릭하여 로봇의 간단한 픽 앤 플레이스 샘플 프로그램을 다운로드하십시오.

사용 방법에 따라 두 가지로 나뉩니다.

Mech-Vision을 사용하여 인식하고 결과를 획득하기

&ACCESS RVO
&REL 5
DEF MM_SAMPLE01 ( )
  ;FUNCTION:Eye to Hand simple pick and place with Mech-Vision
  ;mechmind, 2022-5-31
  INT Job
  INT Pos_Num
  INT Last_Data
  INT MM_Status
  E6POS MM_pick
  E6POS MM_waypoint
  E6POS MM_camera_capture
  E6POS MM_drop
  INT MM_Label
  INT MM_Speed
  ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
  ;ENDFOLD

  BAS(#TOOL,1)
  LIN MM_camera_capture
  ;Set ip address of IPC
  MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
  wait sec 0.1
  ;Set vision recipe
  MM_Switch_Model(1,1)
  ;Run vision project
  MM_Start_Vis(1,1,2)
  wait sec 1
  MM_Get_VisData(1,Pos_Num,MM_Status)
  IF MM_Status<> 1100 THEN
    halt
  ENDIF
  MM_Get_Pose(1,MM_pick,MM_Label,MM_Speed )
MM_pick.z=MM_pick.z+100
LIN MM_pick
MM_pick.z=MM_pick.z-100
  LIN MM_pick
  ;Add object grasping logic here.
  LIN_REL {z -100}#TOOL
 LIN MM_waypoint
MM_drop.z=MM_drop.z+100
LIN MM_drop
MM_drop.z=MM_drop.z-100
  LIN MM_drop
  ;Add object releasing logic here.
  LIN_REL {z -100}#TOOL
    ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
  ;ENDFOLD
END

프로그램 논리 해석

  1. 로봇을 Home 포인트로 이동합니다.

  2. 카메라 사진 캡처 위치로 이동합니다.

  3. MM_Init_Socket 을 호출하여 통신에 대해 초기화 설정을 합니다.

  4. Mech-Vision 프로젝트 레시피를 설정하려면 여기에 MM_Switch_Model을 추가하여 레시피를 설정할 수 있습니다.

  5. MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.

  6. 1초를 기다립니다. Eye To Hand 모드에서 MM_Start_Vis와 MM_Get_VisData 사이에 이동 기능이 있으면 여기서 기다릴 필요가 없습니다. Eye In Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 움직이지 않고 1초 동안 기다려야 합니다.

  7. Mech-Vision 프로젝트에서 계산된 포즈를 획득합니다.

  8. 획득된 포즈의 상태 코드가 정상인지 판단하고, 상태 코드가 비정상인 경우 사용자는 로봇을 정지시키는 등의 조치를 취해야 합니다.

  9. 픽 포인트로 이동합니다.

  10. 픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.

  11. 고정된 배치 포인트로 이동합니다.

사용자 정의 부분

  • TCP를 정의하기

    BAS(#TOOL,1) TCP 좌표계1을 사용하여 로봇 TCP를 설정합니다. 사용자는 호출된 좌표계를 TCP 값이 실제로 저장되는 좌표계로 수정해야 합니다.

  • 티칭 머신을 통해 사진 캡처 위치를 설정하기

    LIN MM_camera_capture,사용자는 camera_capture 포즈에서 사진 캡처 포즈를 기록해야 합니다.

  • 티칭 머신을 통해 전이점을 설정하기

    LIN MM_waypoint,로봇이 픽 포인트에서 배치 포인트로 이동할 때 충돌이 발생하지 않도록 하기 위해 하나 또는 여러 개의 중간 지점을 추가할 수 있습니다.

  • 티칭 머신을 통해 배치 포인트를 설정하기

    LIN MM_drop, 사용자는 MM_drop 포즈 변수에 배치 포인트의 포즈를 기록해야 합니다.

  • 피킹 전후, 배치 전후의 접근 거리를 정의하기

    • 픽 포인트로 접근하기

      MM_pick.z=MM_pick.z+100
      LIN MM_pick
      픽 포인트 위 100mm 위치로 이동합니다. 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.
    • 픽 포인트를 떠나기

      LIN_REL {z -100}#TOOL
      픽 포인트에서 툴 Z축 부방향에 따라 100mm 이동합니다.그리퍼가 픽 포인트를 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.
    • 배치 포인트로 접근하기

      MM_drop.z=MM_drop.z+100
      LIN MM_drop
      배치 포인트 위 100mm 위치로 이동합니다. 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.
    • 배치 포인트를 떠나기

      LIN_REL {z -100}#TOOL
      배치 포인트에서 툴 Z축 부방향에 따라 100mm 이동합니다. 그리퍼가 픽 포인트를 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.
    • 그리퍼 동작을 정의하기

      픽 포인트와 배치 포인트로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 논리를 추가해야 합니다.

  • 로봇의 Home 포인트를 정의하기

    사용자가 로봇의 Home 포인트를 미리 설정해야 합니다.

Mech-Viz를 사용하여 경로를 계획하기

&ACCESS RVO
&REL 2
DEF MM_SAMPLE02 ( )
INT Job
  INT Pos_Num
  INT VisPos_Num
  INT Last_Data
  INT MM_Status
  DECL E6POS MM_movepoint[20]
  E6POS MM_waypoint
  E6POS MM_camera_capture
  E6POS MM_drop
  DECL INT MM_Label[20]
  INT MM_Speed[20]
  INT count
  ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
  ;ENDFOLD

  BAS(#TOOL,1)
  LIN MM_camera_capture
  ;Set ip address of IPC
  MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
  wait sec 0.1
  ;Set vision recipe
  ;MM_Switch_Model(1,1)
  ;Run Viz project
  MM_Start_Viz(1)
  wait sec 0.1
  ;set branch exitport
  ;MM_Set_Branch(1,1)
  ;get planned path
  MM_Get_VizData(2,Last_Data,Pos_Num,VisPos_Num,MM_Status)
  IF MM_Status<> 2100 THEN
    halt
  ENDIF
  FOR count=1 TO Pos_Num
  MM_Get_Pose(count,MM_movepoint[count],MM_Label[count],MM_Speed[count])
  ENDFOR
  ;follow the planned path to pick
  FOR count=1 TO Pos_Num
  LIN MM_movepoint[count]
  IF count==VisPos_Num THEN
   ;add object grasping logic here
  ENDIF
  ENDFOR
  ;go to drop location
  LIN MM_waypoint
MM_drop.z=MM_drop.z+100
  LIN MM_drop
MM_drop.z=MM_drop.z-100
  LIN MM_drop
  ;Add object releasing logic here.
  LIN_REL  {z -100}#TOOL
    ;FOLD PTP HOME Vel=100 % DEFAULT;%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
$BWDSTART=FALSE
PDAT_ACT=PDEFAULT
FDAT_ACT=FHOME
BAS(#PTP_PARAMS,100)
$H_POS=XHOME
PTP XHOME
  ;ENDFOLD
END

프로그램 논리 해석

이 샘플은 Mech-Viz를 사용하여 비전 가이드로 피킹하고 고정된 배치 지점에 배치합니다.

  1. 로봇을 Home 포인트로 이동합니다.

  2. 이미지 캡처 포즈로 이동합니다.

  3. MM_Init_Socket 을 호출하여 통신에 대해 초기화 설정을 합니다.

  4. Mech-Vision 프로젝트 레시피를 설정하려면 여기에 MM_Switch_Model을 추가하여 레시피를 설정할 수 있습니다.

  5. Mech-Viz 프로젝트를 실행하도록 트리거합니다.

  6. Mech-Viz 프로젝트에서 계획한 이동 경로를 획득합니다.

  7. 상태 코드가 정상인지 확인하고 상태 코드가 비정상인 경우 사용자는 로봇을 일시 중지하는 등의 조치를 취해야 합니다.

  8. for 루프를 사용하여 획득한 포즈를 변수에 저장합니다.

  9. for 루프를 사용하여 Mech-Viz가 계획한 경로를 따라 로봇을 이동하고 피킹을 완료하고 픽 포인트를 떠납니다.

  10. 픽 포인트와 배치 포인트 사이의 중간 영역으로 이동합니다.

  11. 배치 포인트로 이동하고 배치합니다.

사용자 정의 부분

  • TCP를 정의하기

    BAS(#TOOL,1) TCP 좌표계1을 사용하여 로봇 TCP를 설정합니다. 사용자는 호출된 좌표계를 TCP 값이 실제로 저장되는 좌표계로 수정해야 합니다.

  • 티칭 머신을 통해 사진 캡처 위치를 설정하기

    LIN MM_camera_capture,사용자는 camera_capture 포즈에서 사진 캡처 포즈를 기록해야 합니다.

  • 티칭 머신을 통해 전이점을 설정하기

    LIN MM_waypoint,로봇이 픽 포인트에서 배치 포인트로 이동할 때 충돌이 발생하지 않도록 하기 위해 하나 또는 여러 개의 중간 지점을 추가할 수 있습니다.

  • 티칭 머신을 통해 배치 포인트를 설정하기

    LIN MM_drop, 사용자는 MM_drop 포즈 변수에 배치 포인트의 포즈를 기록해야 합니다.

  • 그리퍼 동작을 정의하기

    픽 포인트와 배치 포인트로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 논리를 추가해야 합니다.

  • 로봇의 Home 포인트를 정의하기

    사용자가 로봇의 Home 포인트를 미리 설정해야 합니다.