픽 앤 플레이스 실현
아래 내용에서는 픽 앤 플레이스 프로세스와 그 구성 방법에 대해 설명합니다.
픽 앤 플레이스 프로세스
픽 앤 플레이스 프로세스는 다음 그림과 같습니다.
이 솔루션에서 로봇이 포지셔닝 테이블과 같은 고정된 위치에서 볼트를 피킹하여 올린 다음, Mech-Vision에서 출력된 픽 포인트를 어셈블리를 위한 대상 위치로 사용합니다. |
통신 방안 설명
‘로봇이 카메라를 트리거하여 이미지를 캡처하고 픽 포인트를 획득하기’ 단계는 로봇과 비전 시스템은 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Vision를 통해 계획된 경로를 획득하기’입니다.
이 방법을 사용하려면 로봇 프로그램을 작성해야 합니다. 픽 앤 플레이스 프로세스 구성 내용을 참조하여 로봇 프로그램 작성을 완료하십시오.
픽 앤 플레이스 프로세스 구성
픽 앤 플레이스 프로세스 구성은 아래 단계별 순서대로 진행됩니다 .
로봇 파라미터 구성 및 로봇 프로그램 작성
YASKAWA 표준 인터페이스 샘플 프로그램 MM_S1_Vis_Basic는 거의 이 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 이 예제 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S1_Vis_Basic에 관한 상세한 설명은 샘플 프로그램 설명 내용을 참조하십시오.
예제 프로그램을 기반으로 로봇 측에서 다음과 같은 작업을 수행하십시오.
-
티치 펜던트에 Home포인트(원점)을 설정합니다.
로봇 TCP를 티칭된 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어지고 카메라 시야를 거리지 말아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 C00000에 기록합니다.
-
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"
-
DO 포트 신호를 설정하여 그리퍼를 엽니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
'open gripper DOUT OT#(14) ON DOUT OT#(15) OFF
-
티칭을 통해 고정된 픽 포인트를 설정합니다.
로봇 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
-
DO 포트 신호를 설정하여 그리퍼를 닫아 고정된 위치에 있는 볼트를 피킹합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
'close gripper DOUT OT#(14) OFF DOUT OT#(15) ON
-
티칭을 통해 어셈블리 과정의 중간점을 설정합니다.
수정 전 수정 후(예시) 'move to intermediate waypoint of 'picking MOVJ C00002 VJ=50.00
'move to intermediate waypoint of 'assembly MOVJ C00002 VJ=50.00
-
어셈블리 관련 명령어의 주석을 수정합니다.
수정 전 수정 후(예시) '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
-
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
-
예제 프로그램에서 배치 관련 코드를 삭제합니다.
'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
-
티치 펜던트에 Home포인트(원점)를 설정합니다.
로봇을 티칭을 통해 설정된 Home포인트 위치로 이동하고 로봇 포즈를 변수 C00003에 기록합니다.
단일 스텝 실행으로 로봇의 어셈블리 효과를 테스트하기
다음과 같은 스텝을 수행하여 로봇의 어셈블리 효과를 테스트합니다.
-
티치 펜던트의 모드 키를 "PLAY"로 돌려 REPEAT 모드로 들어갑니다.
-
티치 펜던트의 SERVO ON READY 키를 누르고 파란색 Run 버튼을 누릅니다.
-
로봇은 자동으로 프로그램을 실행하여 대상 물체를 피킹하고 배치합니다.
이때 로봇의 이동 경로를 주의 깊게 살펴보시기 바랍니다. 긴급 상황에서는 비상 정지 키를 누르십시오.
만약에 로봇은 성공적으로 대상 물체를 어셈블리 작업을 수행할 수 있다면 로봇 프로그램은 요구 사항을 충족할 수 있음을 나타냅니다.
루프 문을 추가하여 순환적인 어셈블리를 실현하기
로봇이 어셈블리 작업을 한 번 성공적으로 수행할 수 있음을 테스트한 후 프로그램에 순환 루프 문을 추가하여 로봇의 순환적인 어셈블리를 실현합니다.
다음과 같은 루프 문을 추가합니다.
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 비전 가이드 로봇으로 위치 지정 & 어셈블리" 솔루션이 성공적으로 배포되었습니다.