픽 앤 플레이스 실현

아래 내용에서는 픽 앤 플레이스 프로세스와 그 구성 방법에 대해 설명합니다.

픽 앤 플레이스 프로세스

픽 앤 플레이스 프로세스는 다음 그림과 같습니다.

picking workflow
이 솔루션에서 로봇이 포지셔닝 테이블과 같은 고정된 위치에서 볼트를 피킹하여 올린 다음, Mech-Vision에서 출력된 픽 포인트를 어셈블리를 위한 대상 위치로 사용합니다.

통신 방안 설명

‘로봇이 카메라를 트리거하여 이미지를 캡처하고 픽 포인트를 획득하기’ 단계는 로봇과 비전 시스템은 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Vision를 통해 계획된 경로를 획득하기’입니다.

이 방법을 사용하려면 로봇 프로그램을 작성해야 합니다. 픽 앤 플레이스 프로세스 구성 내용을 참조하여 로봇 프로그램 작성을 완료하십시오.

픽 앤 플레이스 프로세스 구성

픽 앤 플레이스 프로세스 구성은 아래 단계별 순서대로 진행됩니다 .

picking workflow config

로봇 파라미터 구성 및 로봇 프로그램 작성

YASKAWA 표준 인터페이스 샘플 프로그램 MM_S1_Vis_Basic는 거의 이 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 이 예제 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S1_Vis_Basic에 관한 상세한 설명은 샘플 프로그램 설명 내용을 참조하십시오.

예제 프로그램을 기반으로 로봇 측에서 다음과 같은 작업을 수행하십시오.

  1. 티치 펜던트에 Home포인트(원점)을 설정합니다.

    로봇 TCP를 티칭된 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어지고 카메라 시야를 거리지 말아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 C00000에 기록합니다.

  2. IPC의 IP 주소를 지정합니다. MM_Init_Socket 명령어에 해당하는 IP 주소와 포트 번호를 IPC의 IP 주소와 포트 번호로 수정합니다.

    수정 전 수정 후(예시)
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
  3. DO 포트 신호를 설정하여 그리퍼를 엽니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.

    'open gripper
    DOUT OT#(14) ON
    DOUT OT#(15) OFF
  4. 티칭을 통해 고정된 픽 포인트를 설정합니다.

    로봇 TCP를 티칭된 픽 포인트 위치로 이동시킵니다. 이 위치는 또한 카메라 이미지 캡처 위치입니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 C00001에 기록합니다.

    수정 전 수정 후(예시)
    'move to image-capturing position
    MOVJ C00001 VJ=50.00 PL=0
    'move to fixed position of picking
    MOVJ C00001 VJ=20.00 PL=0
  5. DO 포트 신호를 설정하여 그리퍼를 닫아 고정된 위치에 있는 볼트를 피킹합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.

    'close gripper
    DOUT OT#(14) OFF
    DOUT OT#(15) ON
  6. 티칭을 통해 어셈블리 과정의 중간점을 설정합니다.

    수정 전 수정 후(예시)
    'move to intermediate waypoint of
    'picking
    MOVJ C00002 VJ=50.00
    'move to intermediate waypoint of
    'assembly
    MOVJ C00002 VJ=50.00
  7. 어셈블리 관련 명령어의 주석을 수정합니다.

    수정 전 수정 후(예시)
    'move to approach waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to picking waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to approach waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to assembly waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
  8. DO 포트 신호를 설정하여 그리퍼를 열어 볼트를 핀홀에 넣습니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.

    수정 전 수정 후(예시)
    'add object grasping logic here,
    'such as DOUT OT#(1) ON
    PAUSE
    'add object releasing logic here,
    'such as DOUT OT#(1) ON
    DOUT OT#(15) OFF
    DOUT OT#(14) ON
    PAUSE
  9. 예제 프로그램에서 배치 관련 코드를 삭제합니다.

    'move to intermediate waypoint of
    'placing
    MOVJ C00003 VJ=50.00
    'move to approach waypoint of
    'placing
    MOVL C00004 V=166.6 PL=0
    'move to placing waypoint
    MOVL C00005 V=50.0 PL=0
    'add object releasing logic here,
    'such as DOUT OT#(1) OFF
    PAUSE
    'move to departure waypoint of
    'placing
    MOVL C00006 V=166.6 PL=0
  10. 티치 펜던트에 Home포인트(원점)를 설정합니다.

    로봇을 티칭을 통해 설정된 Home포인트 위치로 이동하고 로봇 포즈를 변수 C00003에 기록합니다.

단일 스텝 실행으로 로봇의 어셈블리 효과를 테스트하기

다음과 같은 스텝을 수행하여 로봇의 어셈블리 효과를 테스트합니다.

  1. 티치 펜던트의 모드 키를 "PLAY"로 돌려 REPEAT 모드로 들어갑니다.

    run program 1
  2. 티치 펜던트의 SERVO ON READY 키를 누르고 파란색 Run 버튼을 누릅니다.

    run program 2
    run program 3
  3. 로봇은 자동으로 프로그램을 실행하여 대상 물체를 피킹하고 배치합니다.

    이때 로봇의 이동 경로를 주의 깊게 살펴보시기 바랍니다. 긴급 상황에서는 비상 정지 키를 누르십시오.

만약에 로봇은 성공적으로 대상 물체를 어셈블리 작업을 수행할 수 있다면 로봇 프로그램은 요구 사항을 충족할 수 있음을 나타냅니다.

루프 문을 추가하여 순환적인 어셈블리를 실현하기

로봇이 어셈블리 작업을 한 번 성공적으로 수행할 수 있음을 테스트한 후 프로그램에 순환 루프 문을 추가하여 로봇의 순환적인 어셈블리를 실현합니다.

다음과 같은 루프 문을 추가합니다.

LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0

   ...

   MOVJ C00003 VJ=50.00
END LOOP

참고: 수정된 예제 프로그램

최종적으로 수정된 예제 프로그램은 다음과 같습니다.

NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P070 P070
SUB P071 P071
'set 100mm to z of P070
SETE P070 (3) 100000
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
'open gripper
DOUT OT#(14) ON
DOUT OT#(15) OFF
LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00’move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00
END LOOP
END

이로써 "3D 비전 가이드 로봇으로 위치 지정 & 어셈블리" 솔루션이 성공적으로 배포되었습니다.

저희는 귀하의 개인 정보를 소중하게 생각합니다.

당사 웹사이트는 귀하에게 최상의 경험을 제공하기 위해 쿠키를 사용합니다. "모두 수락"을 클릭하시는 경우, 귀하는 사의 쿠키 사용에 동의하게 됩니다. "모두 거부"를 클릭하시는 경우, 귀하가 이 웹사이트를 방문할 때 추적되거나 기억되지 않도록 하기 위해 단일 쿠키가 사용됩니다.