피킹 및 배치를 실현

이 튜토리얼에서는 로봇 프로그램을 작성하고 간단한 로봇 피킹 및 배치 프로세스를 구축하는 방법을 소개하겠습니다.

이 부분에서 로봇 프로그램을 통해 다음 기능을 실현해야 합니다.

  • 프로그램이 실행될 때마다 Mech-Vision 프로젝트가 트리거되고 한 번 실행됩니다.

  • Mech-Vision 프로젝트 실행될 때마다 하나의 비전 포인트(TCP 포즈)을 반환됩니다.

  • 로봇이 반환한 비전 결과 및 프로그래밍된 피킹 및 배치 경로를 기반으로 한 작업물의 피킹 및 배치 작업을 실현합니다.

비디오 튜토리얼: 디버깅 및 실행

통신 설명

이 부분에서는 Yaskawa 로봇과 Mech-Mind Robotics 비전 시스템 간의 통신의 기본 원리를 간략하게 소개합니다.

Yaskawa 로봇과 Mech-Mind Robotics 비전 시스템은 TCP 소켓 프로토콜(데이터 형식은 ASCII 문자열)을 기반으로 하는 표준 인터페이스를 통해 통신합니다. 여기서 로봇은 TCP 클라이언트이고 비전 시스템은 TCP 서버입니다. 로봇과 비전 시스템 간의 통신 과정은 아래 그림과 같습니다.

tcp communication diagram

프로그래밍 설명

이 부분에서는 Yaskawa 로봇 피킹/배치 프로그램을 작성하기 위해 알아야 할 기본 사항을 소개합니다.

로봇 피킹/배치 프로그램을 작성하는 목적은 로봇과 비전 시스템 간의 표준 인터페이스 통신을 달성하고 로봇이 비전 가이드에 따라 피킹/배치 작업을 수행하는 것입니다. 프로그램에는 TCP 연결 설정/해제, 데이터 전송, 로봇 이동, DO 제어 등 일련의 기능이 포함됩니다. 피킹/배치 프로그램을 작성할 때 Yaskawa 로봇 명령어와 표준 인터페이스 명령어라는 두 가지 유형의 명령어를 사용해야 합니다.

Yaskawa 로봇 명령어

Yaskawa 로봇 명령어는 Yaskawa INFORM 로봇 프로그래밍 언어가 지원하는 명령어를 말하며 입력/출력 명령어, 제어 명령어, 계산 명령어, 이동 명령어, 시프트 명령어, 추가 명령어 등을 포함합니다. Yaskawa 로봇의 일반 명령어에 대한 설명 부분에서는 피킹/배치 프로그램을 작성하는 데 필요한 명령어를 간략하게 소개합니다.

표준 인터페이스 명령어

표준 인터페이스 명령어는 Yaskawa 로봇 표준 인터페이스가 지원하는 명령어를 의미하며 비전 시스템과의 표준 인터페이스 통신에 사용되고 TCP 소켓 통신, 데이터 전송 및 기타 기능과 관련된 명령어를 포함합니다. Yaskawa 로봇이 지원하는 표준 인터페이스 명령어에 대해서는 Yaskawa 로봇 표준 인터페이스 명령어 설명 내용을 참조하십시오.

Yaskawa 로봇이 지원하는 표준 인터페이스 명령어는 로봇에 복제하는 포어그라운드 프로그램(Job)에 캡슐화되어 있습니다. 포어그라운드 프로그램을 로봇에 복제한 후 Yaskawa 로봇 명령어 CALL을 사용하여 포어그라운드 프로그램을 호출하여 표준 인터페이스 명령어를 호출할 수 있습니다(예: CALL JOB:MM_OPEN_SOCKET).

피킹/배치 프로그램을 작성하는 방법은 무엇입니까?

피킹/배치 프로그램을 작성하는 가장 쉬운 방법은 기존 샘플 프로그램을 기반으로 이를 수정하고 디버그하는 것입니다.

Mech-Mind Robotics 비전 시스템과 함께 사용할 피킹/배치 프로그램을 용이하고 빠르게 작성하기 위해 Mech-Mind Robotics에서는 세 가지 픽 앤 플레이스 샘플 프로그램이 제공됩니다. 이 튜토리얼은 수정 및 디버깅을 위한 첫 번째 샘플 프로그램을 기반으로 합니다. 이 샘플은 비전 시스템(Mech-Vision에서만)에서 한 번에 하나의 비전 포인트를 획득한 다음 피킹 및 배치하는 간단한 피킹/배치 작업을 구현할 수 있습니다.

이 샘플 프로그램 코드는 다음과 같습니다.

NOP
'*****************************
'FUNCTION:simple pick and place
'with Mech-Vision
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
SUB P070 P070
SUB P071 P071
'set  200mm to Z
SETE P070 (3) 200000
'move to the home position
MOVJ C00000 VJ=80.00
'move to the camera position
MOVJ C00001 VJ=80.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET
'set vision recipe
CALL JOB:MM_SET_MODEL ARGF"1;1"
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;0;2"
'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
PAUSE IF I052<>1100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVL P071 V=80.0 PL=0
'enable gripper
DOUT OT#(1) ON
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVJ C00002 VJ=80.00
'drop point
MOVJ C00003 VJ=80.00 PL=0
'release gripper
DOUT OT#(1) OFF
CALL JOB:MM_CLOSE_SOCKET
END

위의 샘플 프로그램으로 구축된 로봇 피킹/배치 프로세스는 아래 그림과 같습니다.

program build workflow

다음 표에서는 로봇 피킹/배치 프로세스의 각 단계와 수정 요구 사항을 설명합니다.

단계 코드 설명

변수 초기화

NOP

'clear I50 to I69
CLEAR I050 20
'Initialize p variables
SUB P070 P070
SUB P071 P071
'set  200mm to Z
SETE P070 (3) 200000

이 단계는 프로그램에서 사용하는 정수 변수와 위치 변수를 초기화합니다. 일반적으로 해당 코드 블록을 수정할 필요가 없습니다.

원점 위치로 이동하기

'move to the home position
MOVJ C00000 VJ=80.00

이 단계에서는 로봇 TCP를 설정된 초기 위치로 이동시킵니다. 원점 위치는 로봇 운동의 시작점이자 충돌이 없는 “안전한 위치”입니다. 즉 로봇은 이 위치에 있을 때 대상 물체 및 주변 설비로부터 멀리 떨어져 있어야 하며 카메라 시야를 가리지 않아야 합니다.
티치 펜던트에서 초기 위치를 설정해야 합니다.

카메라 사진 캡처 위치로 이동하기

'move to the camera position
MOVJ C00001 VJ=80.00 PL=0

이 단계에서는 로봇 TCP를 설정된 카메라 사진 캡처 포인트로 이동시킵니다. 사진 캡처 포인트는 카메라가 이미지를 획득할 때 로봇의 위치를 ​​의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다.
티치 펜던트에서 이미지 캡처 위치를 설정해야 합니다.

통신 구축

'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET

이 단계에서는 통신 파라미터를 초기화한 다음 비전 시스템과의 TCP 소켓 통신을 설정합니다.
이 단계에서는 "통신 초기화" 명령어(MM_INIT_SOCKET) 파라미터(IPC의 IP 주소 및 포트)를 수정해야 합니다.

비전 인식을 위한 Mech-Vision 프로젝트 트리거

'set vision recipe
CALL JOB:MM_SET_MODEL ARGF"1;1"
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;0;2"

이 단계에서는 먼저 Mech-Vision 파라미터 레시피(다양한 공작물 시나리오에 필요함)를 전환한 다음 Mech-Vision 프로젝트 실행을 드리거하여 공작물의 피킹 포즈를 인식합니다. 이 튜토리얼에서는 하나의 공작물만 포함되므로 파라미터 레시피를 전환할 필요가 없습니다.
이 단계에서는 "Mech-Vision 레시피 전환" 명령어(MM_SET_MODEL)에 주석을 달고 "Mech-Vision 프로젝트 시작" 명령어 파라미터를 수정해야 합니다.

비전 포인트를 획득하기

'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
PAUSE IF I052<>1100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"

이 단계에서는 Mech-Vision에서 비전 포인트를 획득하고 비전 포인트 포즈, 해당 레이블 및 속도 값을 변수에 저장합니다.
이 튜토리얼에서 로봇은 Mech-Vision에서 한 번에 하나의 비전 포인트를 획득합니다. 샘플의 코드 조각을 수정하지 않고 바로 사용할 수 있습니다.

피킹 시 접근(approach) 웨이포인트로 이동하기

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

이 단계는 로봇 TCP를 피킹 시 접근(approach) 웨이포인트로 이동시켜 로봇이 이미지 캡처 위치에서 픽 포인트로 직접 이동할 때 빈과 같은 시나리오 물체와 충돌하는 것을 방지합니다.

샘플 프로그램은 기본적으로 로봇 TCP를 픽 포인트(P071) 위 200mm(피킹 시 접근 웨이포인트)로 이동합니다. 피킹 시 접근(approach) 웨이포인트와 픽 포인트 사이의 거리가 너무 짧은 경우 변수 P070의 Z축 값을 수정할 수 있습니다.

'set  200mm to Z
SETE P070 (3) 200000

픽 포인트로 이동하기

MOVL P071 V=80.0 PL=0

이 단계에서는 로봇 TCP를 픽 포인트(P071) 위치로 이동시킵니다.

이 샘플 프로그램에서는 기본적으로 로봇 TCP를 피킹 시 접근(approach) 웨이포인트에서 직선 운동(MOVEL)으로 픽 포인트로 이동합니다. 샘플 프로그램의 코드 조각을 수정하지 않고 바로 사용할 수 있습니다.

“DO 설정”을 통해 피킹을 수행하기

'enable gripper
DOUT OT#(1) ON

이 단계에서는 그리퍼의 여는 힘으로 물체를 쥐게 합니다.

이 튜토리얼에서 사용되는 그리퍼는 ID 2의 일반 출력 신호가 연결될 때 공작물을 쥐기 위해 열립니다. 따라서 이 단계에서는 일반 출력 신호 ID를 2로 수정해야 합니다. 실제 응용 시나리오에서는 실제 상황에 따라 일반 출력 신호 ID를 수정하십시오.

피킹 시 출발(departure) 웨이포인트로 이동하기

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

이 단계에서는 로봇 TCP를 피킹 시 출발(departure) 웨이포인트로 이동시켜 로봇이 물체를 피킹한 후 빈과 같은 시나리오 물체와 충돌하는 것을 방지합니다.

샘플 프로그램은 기본적으로 로봇 TCP를 픽 포인트(P071) 위 200mm(피킹 시 출발 웨이포인트)로 이동합니다. 피킹 시 출발(departure) 웨이포인트와 픽 포인트 사이의 거리가 너무 짧은 경우 변수 P070의 Z축 값을 수정할 수 있습니다.

'set  200mm to Z
SETE P070 (3) 200000
피킹 시 접근 웨이포인트와 피킹 시 출발 웨이포인트는 변수 P070의 Z축 값을 피킹 포즈의 Z축으로부터의 옵셋으로 공동으로 사용합니다. 변수 P070의 Z축 값을 수정하면 피킹 시 접근 웨이포인트와 피킹 시 출발 웨이포인트가 모두 영향을 받습니다.

중간 웨이포인트로 이동하기

MOVJ C00002 VJ=80.00

이 단계에서는 로봇 TCP를 티치 펜던트에서 설정한 중간 웨이포인트 위치로 이동시켜 로봇과 시나리오 물체 사이의 충돌을 방지합니다.

이 단계에서는 티치 펜던트에서 중간 웨이포인트 설정이 필요합니다. 구체적인 수요에 따라 더 많은 중간 웨이포인트를 추가할 수 있습니다.

배치 포인트로 이동하기

'drop point
MOVJ C00003 VJ=80.00 PL=0

이 단계에서는 로봇 TCP를 설정된 배치 포인트 위치로 이동시킵니다.

이 단계에서는 티치 펜던트에서 배치 포인트 설정이 필요합니다.

“DO 설정”을 통해 배치를 수행하기

'release gripper
DOUT OT#(1) OFF

이 단계에서는 그리퍼가 물체를 붙잡기 위한 힘을 풀어 물체를 놓게 됩니다.

이 튜토리얼에서 사용되는 그리퍼는 ID 1의 일반 출력 신호가 연결되면 공작물을 배치하기 위해 열립니다. 따라서 이 단계에서는 일반 출력 신호1의 상태를 “ON”로 수정해야 합니다. 실제 응용 시나리오에서는 실제 상황에 따라 일반 출력 신호의 ID와 상태를 수정하십시오.

통신 종료

CALL JOB:MM_CLOSE_SOCKET
END

이 단계에서는 TCP Socket 통신이 종료됩니다. 이 코드 줄은 수정할 필요가 없습니다.

샘플 프로그램에 관한 더 많은 정보를 획득하려면샘플 프로그램 상세 소개 내용을 참조하십시오.

샘플 프로그램의 수정 및 디버그

이 샘플 프로그램의 로봇 포즈는 TCP입니다. 샘플 프로그램을 수정 및 디버깅하기 전에 공구 번호를 그리퍼 번호(예: 01)로 전환하고 관련 TCP 설정을 완료하십시오.

샘플 프로그램을 열기

로봇 픽 앤 플레이스 샘플 프로그램을 수정하고 디버그하려면 먼저 예제 프로그램을 열어야 합니다.

  1. Online modeMain Menu에서 JOB  SELECT JOB를 선택하여 설치된 프로그램 목록 인터페이스로 들어갑니다.

  2. mm_sample 프로그램을 선택하여 选择 버튼을 클릭합니다.

샘플 프로그램 시작 부분의 코드 조각은 변수 초기화에 사용되므로 일반적으로 수정할 필요가 없습니다.

원점 위치로 이동하기

이 단계에서는 로봇 TCP를 설정된 초기 위치로 이동시킵니다. 여기에서는 로봇의 초기 위치를 설정해야 합니다.

이 단계를 수행하려면 아래 코드 조각을 수정해야 합니다.

'move to the home position
MOVJ C00000 VJ=80.00

로봇의 초기 위치를 티칭을 통해 설정하려면 다음 작업을 수행하십시오.

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

  2. 프로그램이 처음부터 실행될 수 있도록 수동으로 로봇을 초기 위치로 이동합니다.

  3. 티치 펜던트의 키를 눌러 "MOVJ C00000 VJ=80.00" 행을 선택하고 修改 키를 누른 다음 回车 키를 눌러 시작점의 위치를 로봇의 현재 TCP 포즈로 변경하는 것을 확인합니다.

    "VJ=80.00"은 관절 속도가 80%임을 의미합니다. 이 파라미터는 변경되지 않아도 됩니다.

카메라 이미지 캡처 위치로 이동하기

이 단계에서는 로봇 TCP를 설정된 카메라 사진 캡처 포인트로 이동시킵니다. 여기에서는 로봇을 위한 카메라 이미지 캡처 위치를 설정해야 합니다.

이 단계를 수행하려면 아래 코드 조각을 수정해야 합니다.

'move to the camera position
MOVJ C00001 VJ=80.00 PL=0

카메라 이미지 캡처 위치를 티칭을 통해 설정하려면 다음 작업을 수행하십시오.

  1. TEACH 모드에서 수동으로 로봇을 카메라 이미지 캡처 위치로 이동시킵니다.

  2. 티치 펜던트의 키를 눌러 "MOVJ C00001 VJ=80.00 PL=0" 행을 선택하고 修改 키를 누른 다음 回车 키를 눌러 카메라 이미지 캡처 위치를 로봇의 현재 TCP 포즈로 변경하는 것을 확인합니다.

    "VJ=80.00"은 관절 속도가 80%임을 의미하며 "PL=0"은 위치 수준( position level)이 0임을 의미합니다. 두 파라미터는 변경되지 않아도 됩니다. 위치 수준( position level)은 로봇이 해당 위치에 있을 때 티칭 위치에 얼마나 가까운지를 결정하는 데 사용됩니다. 값 범위는 0에서 8까지이며, 값이 작을수록 더 가까움을 나타냅니다.

통신 구축

이 단계에서는 로봇과 비전 시스템 간의 TCP 통신을 구축합니다. 이 단계에서는 "통신 초기화" 명령어(MM_INIT_SOCKET)의 해당 파라미터(IPC의 IP 주소 및 포트)를 수정해야 합니다.

수정해야 할 코드 조각은 다음과 같습니다.

'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET

"통신 초기화" 명령어의 해당 파라미터를 수정하려면 다음과 같이 작업하십시오.

  1. TEACH 모드에서 티치 펜던트의 키를 눌러 “CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1” 행을 선택하여 选择 커를 누릅니다.

  2. 티치 펜던트 화면의 소프트 키보드를 사용하여 "192.168.170.22" 및 "50000"을 IPC의 IP 주소 및 포트로 각각 수정한 다음 화면의 确认 키를 눌러 수정을 확인합니다.

Mech-Vision 프로젝트를 트리거하고 비전 인식을 시작하기

이 단계에서는 비전 인식을 위한 Mech-Vision 프로젝트를 트리거하여 비전 결과를 출력합니다.

이 단계를 수행할 때 “Mech-Vision 프로젝트 트리거” 명령어의 파라미터를 수정해야 합니다. 이 튜토리얼에서는 한 가지 유형의 공작물만 다루므로 "Mech-Vision 레시피 전환" 명령어를 주석 처리해야 합니다.

수정해야 할 코드 조각은 다음과 같습니다.

CALL JOB:MM_SET_MODEL ARGF"1;1"
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;0;2"

다음 작업을 수행하여 "Mech-Vision 레시피 전환" 명령어를 주석 처리한 후 "Mech-Vision 프로젝트 트리거" 명령어의 파라미터를 수정합니다.

  1. TEACH 모드에서 티치 펜던트의 키를 눌러 “CALL JOB:MM_SET_MODEL ARGF"1;1"” 행을 선택한 후 Edit 탭을 클릭하고 Comment 버튼을 선택하며 티치 펜던트에서 选择 버튼을 누릅니다.

    프로젝트에 여러 공작물이 포함된 경우, 파라미터 레시피를 사용해야 합니다. 이 경우 두 번째 파라미터를 현재 공작물에 해당하는 파라미터 레시피 번호로 수정해야 합니다.
  2. 티치 펜던트의 키를 눌러 “CALL JOB:MM_START_VIS ARGF"1;0;2” 행을 선택하여 选择 커를 누릅니다.

  3. 티치 펜던트 화면의 소프트 키보드를 사용하여 "MM_START_VIS" 명령어의 파라미터(예: 1;1;0)를 수정한 다음 화면에서 确认 키를 눌러 수정 사항을 확인합니다.

    • “1”은 Mech-Vision 프로젝트의 ID를 나타냅니다. 이 튜토리얼에서 사용되는 프로젝트 ID는 1이므로 수정이 필요하지 않습니다.

    • 초기값 ”0”은 매번 Mech-Vision에서 획득한 비전 포인트의 수를 나타냅니다. 이 튜토리얼에서는 한 번에 하나의 비전 포인트만 획득하므로 이 값을 1로 수정해야 합니다.

    • 초기값 “2”는 로봇의 포즈를 전송할지 여부를 나타냅니다. 이 튜토리얼에서는 로봇의 포즈를 Mech-Vision에 보낼 필요가 없으므로 이 값을 0으로 수정해야 합니다.

비전 포인트를 획득하기

이는 Mech-Vision에서 비전 결과를 획득하고 그 결과가 성공적으로 획득했는지를 판단하는 단계입니다. 획득이 성공하면 비전 포인트의 포즈가 위치 변수 P071에 입력됩니다. 포즈에 해당하는 레이블 값은 정수 변수 I061에 입력됩갑니다. 그리고 포즈에 해당하는 이동 속도는 정수 변수 I062에 입력됩니다.

이 단계에 해당하는 코드 조각은 수정 없이 바로 사용할 수 있습니다.

'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
PAUSE IF I052<>1100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"

피킹 시 접근(approach) 웨이포인트로 이동하기

이 단계에서는 로봇 TCP를 피킹 시 접근(approach) 웨이포인트로 이동시킵니다.

  • 픽 포인트 위치로 이동하는 과정에서 로봇의 말단장치가 빈 또는 다른 공작물과 충돌하는 것을 방지하기 위해, 로봇 TCP는 일반적으로 픽 포인트 바로 위의 특정 거리의 위치(피킹 시 접근 웨이포인트)로 이동한 다음 직선 운동(MOVEL)으로 픽 포인트 위치로 이동합니다. 따라서 여기서 말하는 “피킹 시 접근 웨이포인트”는 피킹하기 전에 충돌을 방지하고 피킹의 안정성을 높이는 “버퍼 위치” 역할을 하는 것입니다.

  • 피킹 시 접근 웨이포인트를 얻기 위해 픽 포인트 포즈의 Z축 값을 옵셋할 수 있습니다.

이 단계에 해당하는 코드 조각은 수정 없이 바로 사용할 수 있습니다. 이 튜토리얼에서 Z축 옵셋 값은 200mm이며 필요에 따라 수정할 수 있습니다.

'set  200mm to Z
SETE P070 (3) 200000
...
SFTON P070
MOVJ P071 VJ=50.00
SFTOF

픽 포인트로 이동하기

이 단계에서는 로봇 TCP를 피킹 시 접근(approach) 웨이포인트에서 직선 운동(MOVEL)으로 픽 포인트로 이동합니다.

이 단계에 해당하는 코드 조각은 수정 없이 바로 사용할 수 있습니다.

MOVL P071 V=80.0 PL=0

“DO 설정”을 통해 피킹을 수행하기

이 튜토리얼에서 출력 신호에 의해 컨트롤되는 공압 각도 그리퍼를 사용합니다. 일반 출력 신호 2에 연결하면 그리퍼의 여는 힘으로 물체를 쥐게 되며 신호 1을 연결하면 그리퍼의 턱은 딛히면서 물체를 놓게 됩니다.

이 단계에서 일반 출력 신호 2에 연결하여 그리퍼의 여는 힘으로 물체를 피킹하는 것은 목표입니다. 따라서 출력 신호의 ID를 2로 수정해야 합니다.

수정해야 할 코드 조각은 다음과 같습니다.

'enable gripper
DOUT OT#(1) ON

출력 신호의 ID를 2로 수정하려면 다음과 같이 작업하십시오.

  1. TEACH 모드에서 티치 펜던트의 키를 눌러 “DOUT OT#(1) ON” 행을 선택하여 选择 키를 누릅니다.

  2. 출력 신호의 ID를 “1”에서 “2”로 수정하고 确认 키를 눌러 수정을 확인합니다.

피킹 시 출발(departure) 웨이포인트로 이동하기

이 단계에서는 로봇 TCP를 픽 포인트에서 직선 운동(MOVEL)으로 피킹 시 출발(departure) 웨이포인트로 이동합니다.

  • 로봇 말단장치가 물체를 피킹한 후 배치 포인트로 이동하는 과정에서 빈 또는 다른 공작물과 충돌하는 것을 방지하기 위해, 로봇 TCP는 일반적으로 픽 포인트 바로 위의 특정 거리의 위치(피킹 시 출발 웨이포인트)로 직선 운동(MOVEL)으로 이동한 다음 배치 포인트 위치로 이동합니다. 따라서 여기서 말하는 “피킹 시 출발 웨이포인트”는 배치하기 전에 충돌을 방지하고 피킹의 안정성을 높이는 “버퍼 위치” 역할을 하는 것입니다.

  • 피킹 시 출발 웨이포인트를 얻기 위해 픽 포인트 포즈의 Z축 값을 옵셋할 수 있습니다.

  • 일반적으로 피킹 시 접근 웨이포인트와 출발 웨이포인트는 동일한 위치에 있습니다. 이 튜토리얼에서 피킹 시 접근 웨이포인트와 출발 웨이포인트는 모두 픽 포인트 바로 위 200mm에 위치합니다.

이 단계에 해당하는 코드 조각은 수정 없이 바로 사용할 수 있습니다.

'set  200mm to Z
SETE P070 (3) 200000
...

SFTON P070
MOVJ P071 VJ=50.00
SFTOF

중간 웨이포인트로 이동하기

이 단계에서는 로봇 TCP를 설정된 중간 웨이포인트로 이동시킵니다.

로봇의 충돌을 방지하기 위해 일반적으로 피킹 시 출발 웨이포인트와 배치 포인트 사이에 중간 웨이포인트가 추가됩니다. 이 튜토리얼에서는 하나의 중간 웨이포인트만 추가됩니다. 실제 응용 나리오에서 배치 경로를 최적화하기 위해 더 많은 웨이포인트를 추가할 수 있습니다.

이 단계를 수행하려면 아래 코드 조각을 수정해야 합니다.

MOVJ C00002 VJ=80.00

로봇의 중간 웨이포인트를 티칭을 통해 설정하려면 다음 작업을 수행하십시오.

  1. TEACH 모드에서 수동으로 로봇을 올바른 중간 웨이포인트로 이동시킵니다.

  2. 티치 펜던트의 키를 눌러 "MOVJ VJ=80.00" 행을 선택하고 修改 키를 누른 다음 回车 키를 눌러 중간 웨이포인트를 로봇의 현재 TCP 포즈로 변경하는 것을 확인합니다.

배치 포인트로 이동하기

이 단계에서는 로봇 TCP를 설정된 배치 포인트 위치로 이동시킵니다.

이 단계를 수행하려면 아래 코드 조각을 수정해야 합니다.

'drop point
MOVJ C00003 VJ=80.00 PL=0

로봇의 배치 포인트를 티칭을 통해 설정하려면 다음 작업을 수행하십시오.

  1. TEACH 모드에서 수동으로 로봇을 올바른 배치 포인트로 이동시킵니다.

  2. 티치 펜던트의 키를 눌러 "MOVJ VJ=80.00 PL=0" 행을 선택하고 修改 키를 누른 다음 回车 키를 눌러 배치 포인트를 로봇의 현재 포즈로 변경하는 것을 확인합니다.

“DO 설정”을 통해 배치를 수행하기

이 단계에서 일반 출력 신호를 1에 연결하여 그리퍼의 여는 힘을 풀어 물체를 놓게 됩니다.

이 단계에 해당하는 코드 조각은 다음과 같습니다. 출력 신호를 ID 1로 연결해야 합니다. 즉, OFF를 ON으로 변경해야 합니다.

'release gripper
DOUT OT#(1) OFF

통신 종료

이 튜토리얼에서는 단일 픽 앤 플레이스의 예를 보여줍니다. 따라서 하번의 피킹 및 배치 작업을 완료한 후 "MM_CLOSE_SOCKET" 명령어를 호출하여 통신을 종료해야 합니다.

CALL JOB:MM_CLOSE_SOCKET

이상으로 샘플 프로그램의 수정이 완료되었습니다. 다음으로 테스트할 수 있습니다.

실행 및 테스트

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

  2. 티치 펜던트의 伺服准备 키를 누르고 파란색 运行 버튼을 누릅니다.

    로봇은 자동으로 픽 앤 플레이스 프로그램을 실행하여 공작물을 피킹하고 배치합니다.

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

이상으로 간단한 로봇 픽 앤 플레이스 프로그램이 완료되었습니다.

참조 정보

Yaskawa 로봇 명령어 설명

Yaskawa 로봇 명령어에 대한 상세한 소개는 로봇과 함께 제공되는 "YRC1000/YRC1000micro/DX200 INFORM 설명서"를 참조하십시오.

명령어 설명 문법 예시

NOP

프로그램의 초기 명령어이며 어떠한 작업도 수행하지 않습니다.

NOP

NOP

'

주석 처리.

' 주석 처리 할 문자열

'Run vision project

END

프로그램이 종료됩니다.

END

END

CLEAR

Data 2에 지정된 수에 따라 Data 1에 지정된 번호 이후의 변수 내용을 0으로 설정합니다.

CLEAR <Data 1> <Data 2>

CLEAR I050 20
변수 I50~I69(총 20개)를 0으로 설정합니다.

SUB

Data 1에서 Data 2를 빼고 그 결과를 Data 1에 저장합니다.

SUB <Data 1> <Data 2>

SUB P070 P070
위치변수 P070에서 변수 P070을 빼고 그 결과를 변수 P070에 저장합니다.

SETE

Data 2를 Data 1로 설정하는 위치 변수의 요소입니다.

SETE <Data 1> <Data 2>

SETE P070 (3) 200000
변수 P070의 Z축 값을 옵셋 200,000만큼 늘립니다(단위: 미크론, 200밀리미터에 해당).

MOVJ

관절 운동(MOVEJ) 명령어를 사용하여 로봇을 설정된 위치로 이동합니다. 로봇이 목적지까지 이동할 때 궤적을 제한하지 않는 범위 내에서 사용되는 명령어입니다.

로봇 티칭 위치의 MOVJ 파일 번호 VJ = 관절 속도(%)

MOVJ VJ=80.00
로봇은 관절 운동(MOVEJ)으로 설정된 위치로 이동합니다.

MOVL

직선 운동(MOVEL) 명령어를 사용하여 로봇을 설정된 위치로 이동합니다. 로봇은 직선 운동(MOVEL)으로 티칭 완료 후 위치로 이동합니다.

로봇 티칭 위치 MOVL 파일 번호 V = TCP 속도(mm/s) PL = 위치 수준(0~8)

MOVL P071 V=80.0 PL=0
로봇은 P071에 지정된 퐁인트 위치로 직선 운동(MOVEL)으로 이동합니다.

CALL

지정한 프로그램을 호출합니다.

CALL JOB: 호출할 프로그램 이름

CALL JOB:MM_OPEN_SOCKET
“MM_Open_Socket” 표준 인터페이스 명령어를 호출하여 TCP 연결을 설정합니다.

TIMER

지정된 시간 동안 로봇을 정지시킵니다.

TIMER T=시간(초,s)

TIMER T=0.20
로봇은 0.2초 시간 동안 정지됩니다.

PAUSE

프로그램의 실행을 일시 중지시킵니다.

PAUSE IF

PAUSE IF I052<>1100
I052 변수 값이 1100이 아닌 경우 프로그램 실행이 일시 중지됩니다.

IF

이 명령어는 로봇이 움직일 때의 다양한 조건을 판단하고 결정하는 데 사용됩니다. 처리를 위해 다른 명령어 다음에 이 명령을 사용하십시오.

IF <객체 1> 연산자(=, <> 등) <객체 1>

PAUSE IF I052<>1100
I052 변수 값이 1100이 아닌 경우 프로그램 실행이 일시 중지됩니다.

SFTON

평행이동을 시작합니다. 평행이동 거리는 위치변수에 설정된 좌표계 내 X축, Y축, Z축의 증분값이다.

SFTON 위치변수 번호

SETE P070 (3) 200000
...
SFTON P070
MOVJ P071 VJ=50.00
SFTOF

로봇이 관절 운동으로 픽 포인트(P071) 위 200mm(피킹 시 접근 웨이포인트)로 이동합니다.

SFTOF

평행이동을 종료합니다. 이 명령어는 일반적으로 SFTON 명령어와 쌍으로 사용됩니다.

SFTOF

SFTOF

DOUT

이 명령어는 일반 출력 신호를 연결하고 연결 해제하는 데 사용됩니다.

DOUT OT#(출력 신호 ID) ON/OFF

DOUT OT#(1) ON
일반 출력 신호를 ID 1에 연결합니다.
DOUT OT#(1) OFF
일반 출력 신호를 ID 1을 연결 해제합니다.

샘플 프로그램 상세 소개

  • NOP

    설명: 프로그램의 시작을 표시하는 프로그램의 초기 명령어입니다.

  • 'clear I50 to I69
    CLEAR I050 20

    설명: 정수 변수 I50~I69의 값을 0으로 설정합니다. 이 튜토리얼에서는 변수 I50 ~ I69는 주로 상태, 숫자 및 레이블 값을 저장하는 데 사용됩니다.

  • 'Initialize p variables
    SUB P070 P070
    SUB P071 P071

    설명: 위치변수 P070 및 P071의 값을 0으로 재설정합니다. 이 튜토리얼에서는 변수 P071은 피킹 포즈를 저장하는 데 사용됩니다. 변수 P070의 Z축 값은 픽 포인트를 기준으로 Z축에 피킹 시 접근 웨이포인트와 피킹 시 출발 웨이포인트의 옵셋을 저장합니다.

  • 'set  200mm to Z
    SETE P070 (3) 200000

    설명: 픽 포인트를 기준으로 피킹 시 접근 웨이포인트와 피킹 시 출발 웨이포인트의 Z축 옵셋을 변수 P070의 Z축 값(단위: 미크론)으로 저장합니다. 이 튜토리얼에서는 옵셋의 기본값은 200,000미크론(200밀리미터)입니다.

  • 'move to the home position
    MOVJ C00000 VJ=80.00

    설명: 로봇 TCP를 설정된 초기 위치로 이동시킵니다. "VJ=80.00"은 관절 속도가 80%임을 의미합니다. 여기서는 초기 위치를 설정해야 합니다.

  • 'move to the camera position
    MOVJ C00001 VJ=80.00 PL=0

    설명: 로봇 TCP를 설정된 카메라 이미지 캡처 포인트로 이동시킵니다. "VJ=80.00"은 관절 속도가 80%임을 의미하며 "PL=0"은 위치 수준( position level)이 0임을 의미합니다. 위치 수준( position level)은 로봇이 해당 위치에 있을 때 티칭 위치에 얼마나 가까운지를 결정하는 데 사용됩니다. 값 범위는 0에서 8까지이며, 값이 작을수록 더 가까움을 나타냅니다.

  • 'set ip address of IPC
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"

    설명: 이 명령어는 통신 파라미터수(IPC의 IP 주소 및 포트)를 초기화합니다.

  • TIMER T=0.20

    설명: 로봇을 0.2초 시간 동안 정지하도록 설정합니다.

  • CALL JOB:MM_OPEN_SOCKET

    설명: TCP Socket 통신을 구축합니다.

  • 'set vision recipe
    CALL JOB:MM_SET_MODEL ARGF"1;1"

    설명: 프로젝트의 파라미터 레시피를 전환합니다. 프로젝트에서 다양한 종류의 공작물을 처리해야 하는 경우, 파라미터 레시피를 사용해야 합니다.

  • 'Run vision project
    CALL JOB:MM_START_VIS ARGF"1;0;2"

    설명: Mech-Vision 프로젝트를 트리거하기 위해 비전 인식을 시작합니다. “MM_START_VIS” 명령어의 파라미터를 올바르게 설정해야 합니다.

  • 'get result from Vis
    CALL JOB:MM_GET_VISDATA ARGF"1;51;52"

    설명: 이 명령어는 비전 포인트를 획득하고 비전 포인트 전송 여부, 반환된 포즈 수 및 명령어 상태 코드를 각각 변수 I050~I052에 저장하는 데 사용됩니다.

  • PAUSE IF I052<>1100

    설명: 명령어의 상태 코드(I052 변수의 값)는 1100(정상적인 상태 코드)와 일치하지 않으면 프로그램의 실행을 일시 중지시킵니다.

  • 'set the first pos to P071;
    'set lables to I61;
    'set speed to I62;
    CALL JOB:MM_GET_POSE ARGF"1;71;61;62"

    설명: 획득한 비전 결과에서 나중에 참조할 수 있도록 해당 레이블 값 및 이동 속도와 함께 첫 번째 포즈를 변수 P071, I061 및 I062에 저장합니다.

  • SFTON P070
    MOVJ P071 VJ=50.00
    SFTOF

    설명: 평행이동 명령어를 사용하여 로봇 TCP를 관절 운동으로 이미지 캡처 포인트에서 피킹 시 접근(approach) 웨이포인트로 이동시킵니다. 픽 포인트를 기준으로 피킹 시 접근 웨이포인트의 Z축 옵셋은 변수 P070의 Z축 값에 의해 결정됩니다.

  • MOVL P071 V=80.0 PL=0

    설명: 로봇 TCP를 직선 운동으로 픽 포인트(P071 변수에 지정한 포인트 위치)로 이동시킵니다. TCP 속도는 80mm/s이고 위치 수준은 0입니다.

  • 'enable gripper
    DOUT OT#(1) ON

    설명: 일반 출력 신호 1에 연결함으로써 공작물을 피킹하도록 그리퍼를 컨트롤합니다. 실제 응용 시나리오에서는 실제 상황에 따라 일반 출력 신호 ID를 수정하십시오.

  • SFTON P070
    MOVJ P071 VJ=50.00
    SFTOF

    설명: 평행이동 명령어를 사용하여 로봇 TCP를 직선 운동으로 픽 포인트에서 피킹 시 출발(departure) 웨이포인트로 이동시킵니다. 픽 포인트를 기준으로 피킹 시 출발 웨이포인트의 Z축 옵셋은 변수 P070의 Z축 값에 의해 결정됩니다.

  • MOVJ C00002 VJ=80.00

    설명: 로봇과 시나리오 물체 사이의 충돌을 방지하기 위해 로봇 TCP를 티치 펜던트에서 설정한 중간 웨이포인트 위치로 이동시킵니다. 여기서는 중간 웨이포인트를 설정해야 합니다.

  • 'drop point
    MOVJ C00003 VJ=80.00 PL=0

    설명: 로봇과 시나리오 물체 사이의 충돌을 방지하기 위해 로봇 TCP를 티치 펜던트에서 설정한 중간 웨이포인트 위치로 이동시킵니다. 여기서는 중간 웨이포인트를 설정해야 합니다.

  • 'release gripper
    DOUT OT#(1) OFF

    설명: 일반 출력 신호 1에 연결 해제함으로써 공작물을 배치하도록 그리퍼를 컨트롤합니다. 실제 응용 시나리오에서는 실제 상황에 따라 일반 출력 신호 ID를 수정하십시오.

  • CALL JOB:MM_CLOSE_SOCKET

    설명: TCP Socket 통신을 종료합니다.

  • END

    설명: 프로그램이 종료됩니다.

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

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