YASKAWA (야스카와) 피킹 샘플 프로그램¶
여기에서는 간단한 식별과 움직임을 완성하는 로봇 샘플 프로그램을 소개합니다.
전제¶
YASKAWA(야스카와) 프로그램 복제 프로세스 설명 를 참조해 로봇 프로그램의 복제를 완료하고 Mech-Center와 연결을 하였습니다.
YASKAWA (야스카와) 캘리브레이션 프로세스 을 참조해 외부 파라미터 캘리브레이션을 완성하였습니다.
Mech-Vision 및 Mech-Viz 프로젝트가 구축되어 각각 소프트웨어에서 자동으로 로드하기 기능을 선택했습니다.
Mech-Center의 구성 설정에서 Mech-Vision에서 자동으로 로드된 프로젝트 리스트를 동기화하고 프로젝트 순서를 조정했습니다.
로봇의 TCP가 정의되었습니다.
디버깅 중 충돌을 피하기 위해 로봇의 속도를 낮춥니다.
샘플 프로그램 설명¶
로봇의 간단한 픽 앤 플레이스 샘플 프로그램 mm_sample 은 Mech-Center/mech-interface/yaskawa
파일에 저장됩니다.
다음과 같이 두 가지로 나뉩니다:
Mech-Vision을 사용하여 인식하고 결과를 획득하기¶
'*****************************
'FUNCTION:simple pick and place
'with Mech-Vision
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
CNVRT PX070 PX070 RF TL#(1)
CNVRT PX071 PX071 RF TL#(1)
CNVRT PX072 PX072 RF TL#(1)
CNVRT PX073 PX073 RF TL#(1)
SUB P070 P070
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move robot home position
MOVJ C00000 VJ=1.00
'camera capture position
MOVJ C00001 VJ=1.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
'set vision recipe
'MM_SET_MODEL("1,1")
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;2;2"
TIMER T=1.00
'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;50;51;52"
TIMER T=0.20
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"
PAUSE IF I061<>1
'set -200mm to Z
SETE P070 (3) -200000
MULMAT P072 P071 P070
'set -300mm to Z
SETE P070 (3) -300000
MULMAT P073 P071 P070
'way point
MOVJ C00002 VJ=1.00
MOVL P072 V=80.0 PL=0
MOVL P071 V=80.0 PL=0
'enable girpper
DOUT OT#(1) ON
MOVL P073 V=80.0 PL=0
MOVJ C00003 VJ=1.00
'drop point
MOVJ C00004 VJ=1.00 PL=0
'release gripper
DOUT OT#(1) OFF
'way point
MOVJ C00005 VJ=1.00
'move robot home position
MOVJ C00006 VJ=1.00
프로그램 논리 해석¶
변수 초기화 후 로봇을 Home 포인트로 이동합니다.
카메라 사진 캡처 위치로 이동합니다.
MM_Init_Skt 을 호출하여 통신에 대해 초기화 설정을 합니다.
Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model 를 추가하여 설정할 수 있습니다.
MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.
1초를 기다립니다. Eye To Hand 모드에서 MM_Start_Vis 와 MM_Get_VisData 사이에 이동 스텝(MoveL 혹은 MoveJ) 이 있으면 여기서 기다릴 필요가 없습니다. Eye-In-Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 움직이지 않고 1초 동안 기다려야 합니다.
Mech-Vision 프로젝트에서 계산된 포즈를 획득합니다.
획득된 포즈의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 로봇 프로그램이 중지되거나 정지됩니다.
픽 포인트로 이동합니다.
픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.
고정된 배치 포인트로 이동합니다.
사용자 정의 부분¶
TCP를 정의하기
TL#(1), 도구 0은 사용할 수 없으며 이 루틴은 도구 1을 사용합니다. 사용자는 호출하는 좌표계를 실제 TCP 값을 저장하는 좌표계로 변경해야 합니다.
티칭 머신을 통해 사진 캡처 위치를 설정하기
〈camera capture position,MOVJ C00001 VJ=1.00 PL=0, 사용자는 사진 캡처 위치를 티칭을 통해 현재 위치에 기록해야 합니다.
티칭 머신을 통해 전이점을 설정하기
〈way point,MOVJ C00002 VJ=1.00, 사용자는 전환점의 위치를 티칭을 통해 현재 위치에 기록해야 하며, 동시에 사용자는 하나 또는 여러 개의 중간점을 추가할 수 있으므로 로봇이 픽 포인트에서 배치 포인트로 이동할 때 충돌이 없습니다.
티칭 머신을 통해 배치 포인트를 설정하기
〈drop point,MOVJ C00004 VJ=1.00 PL=0, 사용자는 티칭을 통해 배치 포인트의 위치를 현재 위치에 기록해야 합니다.
피킹 전후, 배치 전후의 접근 거리를 정의하기
MULMAT P072 P071 P070
MULMAT 명령을 통해 P071의 좌표는 P071에 의해 지정된 도구 좌표를 참조할 수 있고 P070의 포즈 데이터는 변환되어 새 포즈 데이터를 생성하고 P072에 넣을 수 있습니다.
픽 포인트로 접근하기
〈set -200mm to Z
SETE P070 (3) -200000
MULMAT P072 P071 P070
픽 포인트 위 200mm로 이동하려면 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.
픽 포인트를 떠나기
〈set -300mm to Z
SETE P070 (3) -300000
MULMAT P073 P071 P070
픽 포인트에서 도구 Z축 방향을 따라 위로 100mm 이동합니다. 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.
그리퍼 동작을 정의하기
피킹 및 배치 지점으로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 로직을 추가하십시오.
Mech-Viz를 사용하여 경로를 계획하기¶
'*****************************
'FUNCTION:simple pick and place
'with Mech-Viz
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
CNVRT PX071 PX071 RF TL#(1)
CNVRT PX072 PX072 RF TL#(1)
CNVRT PX073 PX073 RF TL#(1)
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move robot home position
MOVJ C00007 VJ=1.00
'camera capture position
MOVJ C00008 VJ=1.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
'set vision recipe
CALL JOB:MM_SET_MODEL ARGF"1;1"
TIMER T=0.20
'Run Viz project
CALL JOB:MM_START_VIZ ARGF"1"
TIMER T=0.20
CALL JOB:MM_SET_BRANCH ARGF"1;1"
'get result from Viz
TIMER T=1.00
CALL JOB:MM_GET_VIZDATA ARGF"2;50;51;52;53"
TIMER T=0.20
PAUSE IF I053<>2100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
PAUSE IF I061<>1
'set the third pos to P072;
'set lables to I63;
'set speed to I64;
CALL JOB:MM_GET_POSE ARGF"2;72;63;64"
PAUSE IF I063<>1
'set the third pos to P073;
'set lables to I65;
'set speed to I66;
CALL JOB:MM_GET_POSE ARGF"3;73;65;66"
PAUSE IF I065<>1
'way point
MOVJ C00009 VJ=1.00
MOVL P071 V=80.0 PL=0
MOVL P072 V=80.0 PL=0
'enable girpper
DOUT OT#(1) ON
MOVL P073 V=80.0 PL=0
'way point
MOVJ C00010 VJ=1.00
'drop point
MOVJ C00011 VJ=1.00 PL=0
'release gripper
DOUT OT#(1) OFF
'move robot home position
MOVJ C00012 VJ=1.00
프로그램 논리 해석¶
이 샘플은 Mech-Viz를 사용하여 비전 가이드로 피킹하고 고정된 배치 지점에 배치합니다.
로봇을 Home 포인트로 이동합니다.
카메라 사진 캡처 위치로 이동합니다.
MM_Init_Socket 을 호출하여 통신에 대해 초기화 설정을 합니다.
Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model 를 호출하면 됩니다.
Mech-Viz 프로젝트를 실행하도록 트리거합니다.
Mech-Viz 프로젝트에서 계획한 이동 경로를 획득합니다.
획득된 포즈의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 로봇 프로그램이 중지되거나 정지됩니다.
for 루프를 사용하여 획득한 포즈를 변수에 저장합니다.
for 루프를 사용하여 Mech-Viz가 계획한 경로를 따라 로봇을 이동하고 피킹을 완료하고 픽 포인트를 떠납니다.
픽 포인트와 배치 포인트 사이의 중간 영역으로 이동합니다.
배치 포인트로 이동하고 배치합니다.
사용자 정의 부분¶
TCP를 정의하기
TL#(1), 도구 0은 사용할 수 없으며 이 루틴은 도구 1을 사용합니다. 사용자는 호출하는 좌표계를 실제 TCP 값을 저장하는 좌표계로 변경해야 합니다.
티칭 머신을 통해 사진 캡처 위치를 설정하기
〈camera capture position,MOVJ C00008 VJ=1.00 PL=0, 사용자는 카메라 사진 캡처 위치를 티칭을 통해 현재 위치에 기록해야 합니다.
티칭 머신을 통해 전이점을 설정하기
〈way point,MOVJ C00009 VJ=1.00, 사용자는 전환점의 위치를 티칭을 통해 현재 위치에 기록해야 하며 사용자는 충돌 없이 로봇을 픽 포인트에서 배치 포인트로 이동하기 위해 하나 또는 여러 개의 중간 지점을 추가할 수 있습니다.
티칭 머신을 통해 배치 포인트를 설정하기
〈drop point,MOVJ C00011 VJ=1.00 PL=0, 사용자는 배치 포인트의 위치를 티칭을 통해 현재 위치에 기록해야 합니다.
그리퍼 동작을 정의하기
피킹 및 배치 지점으로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 로직을 추가하십시오.