픽 앤 플레이스 실현
아래 내용에서는 픽 앤 플레이스 프로세스와 그 구성 방법에 대해 설명하겠습니다.
통신 방안 설명
‘로봇이 카메라를 트리거하여 이미지를 캡처하고 계획된 경로를 획득하기’ 단계는 로봇과 비전 시스템은 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Viz를 통해 계획된 경로를 획득하기’입니다.
해당 협력 방식을 사용할 때 Mech-Vision 프로젝트(이미 ‘비전 프로젝트 구성’ 페이지에서 설정됨)와 Mech-Viz 프로젝트 구성을 완료하고 로봇 프로그램을 작성해야 됩니다. ‘픽 앤 플레이스 프로세스 구성’을 참조하여 Mech-Viz 프로젝트 구성과 로봇 프로그램 작성을 완료하십시오.
픽 앤 플레이스 프로세스 구성
픽 앤 플레이스 프로세스 구성은 아래 단계별 순서대로 진행됩니다 .
Mech-Viz 프로젝트를 구성하여 경로 계획 및 시뮬레이션
Mech-Viz에서 프로젝트를 만들면 로봇은 다음과 같은 기능을 활성화 할 수 있습니다.
-
경로 계획: 로봇의 피킹 경로를 계획합니다. 이 경로 계획에는 물체를 배치하는 경로는 포함되지 않습니다. 배치 경로는 별도로 로봇 프로그램에서 추가해야 합니다.
-
충돌 감지: Mech-Viz는 경로를 계획할 때 충돌 감지를 수행하여 충돌이 없는 피킹 경로를 로봇에 제공합니다.
-
시뮬레이션 실행: Mech-Viz는 로봇의 피킹 과정을 시각화하여 시뮬레이션 화면으로 확인할 수 있습니다. 이를 통해 쉽게 디버깅할 수 있습니다.
Mech-Viz 프로젝트를 구성하는 프로세스는 아래 그림과 같습니다.
Mech-Vision 솔루션 라이브러리의 '무질서하게 배열된 공작물 로딩' 솔루션에는 Mech-Viz 프로젝트 ‘Viz_Target_Objects_Picking’이 내장됩니다. 구성을 시작하기 전에 Mech-Viz 소프트웨어를 열어 메뉴 바에서
버튼을 클릭하고 로컬에 저장된 '무질서하게 배열된 공작물 로딩' 솔루션 중의 ‘Viz_Target_Objects_Picking’ 폴더를 선택하세요.시나리오 물체 구성
시나리오 모델 구성의 목적은 실제 시나리오 복원을 통해 사용자가 로봇 모션 경로를 계획하는 데 도움이 주는 데에 있습니다. 구체적인 작업 방법은 시나리오 물체 구성 내용을 참조하십시오.
빈 시나리오 물체의 이름은 반드시 Mech-Vision 프로젝트에서의 표준 빈 위치 파악 프로시저의 문자열 리스트 파라미터 값과 일치해야 합니다. |
피킹 가능한 것을 바탕으로 실제 작업 환경을 더욱 정확하게 재현해야 합니다. 이 솔루션의 시나리오 물체에 대한 설정은 다음과 같습니다.
말단장치 구성
말단장치를 구성하는 목적은 3D 시뮬레이션 공간에서 말단장치의 모델을 표시하여 충돌 감지에 사용하는 것입니다. 구체적인 작업 방법은 말단장치 구성 도구 내용을 참조하십시오.
대상 물체를 말단장치와 연계시키고 피킹 허용 편차를 설정하기
말단장치를 구성한 후 대상 물체 편집기에서 대상 물체를 피킹에 사용될 말단장치과 연계시켜야 합니다. 이렇게 구성된 말단장치는 비로소 피킹에 사용될 수 있습니다. 이 솔루션에서 피킹하는 대상 물체는 볼트이고 피킹할 때 그리퍼는 볼트의 축을 피킹할 것입니다. 실제 피킹 과정에서 그리퍼가 픽 포인트의 X 방향에 따라 평행으로 이동하는 것이 허용됩니다. 그러므로 한 층 더 픽의 성공률을 높이기 위해 대상 물체 편집기에서 피킹 허용 편차를 구성할 수 있습니다.
-
리소스 트리에서 대상 물체 노드에서의 기존의 대상 물체 모델을 두 번 클릭하여 대상 물체 편집기를 엽니다.
-
픽 포인트 설정 탭 중의 피킹 구성 영역에서 Mech-Viz 중의 모든 말단장치 활성화 버튼을 선택하여 말단장치를 대상 물체와 연결시킵니다.
-
파라미터 구성 구역에서 X 축의 수평 이동 허용 편차를 설정합니다.
충돌 모델 단순화
말단징치를 만들 때 말단장치 충돌 모델 생성에 소요되는 작업 시간을 단축하기 위해 생성한 볼록 껍질이 원본 모델의 모든 세부 사항을 완벽하게 복제할 필요는 없습니다. 실제 모델의 특정 요구 사항에 따라 일부 세부 정보를 생략할 수도 있습니다.
단순화 방안: 그리퍼 부분에 대해서는 세밀함을 추구하여 형태를 실물로 고도로 환원할 수 있도록 하여 충돌 감지의 정확성을 보장해야 합니다. 그리퍼 부분에서 먼 기계 구조에 대해서는 효율성을 높일 수 있도록 복잡한 구조 설계를 직육면체로 대체하여 간소화된 처리 방식을 채택할 수 있습니다.
아래 그림은 모델 단순화 예시 그림입니다.
작업 흐름 구축
‘무질서하게 배열된 공작물 로딩’에 설치된 Mech-Viz 프로젝트 ‘Viz_Target_Objects_Picking’이 이미 작업 흐름을 구축했습니다. 작업 흐름 중의 모든 스텝에 관한 설명은 다음과 같습니다.
스텝 | 설명 | 기능 |
---|---|---|
HP 위치 지정 |
이 포인트는 시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
|
Mech-Vision 비전 결과 호출 |
/ |
|
비전 결과가 있는지를 체크하기 |
/ |
|
Enter-bin 포인트와 접근 포인트를 계획하기 |
두 포인트가 계획된 경로의 일부로 로봇에 전송됩니다. |
|
픽 포인트를 계획하기 |
픽 포인트가 계획된 경로의 일부로 로봇에 전송됩니다. |
|
Exit-bin 포인트와 출발 포인트를 계획하기 |
두 포인트가 계획된 경로의 일부로 로봇에 전송됩니다. |
|
중간점을 정의하기 |
이 포인트는 시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
충돌 감지 파라미터 설정
Mech-Viz는 충돌 감지 기능을 통해 로봇 이동 과정에서 불필요한 충돌을 방지할 수 있습니다. 이 프로그램은 포인트 클라우드 충돌 감지 및 대상 물체 충돌 감지 기능을 활성화해야 합니다. 구체적인 작업은 충돌 감지 구성 내용을 참조하십시오.
-
포인트 클라우드 충돌 감지: 주로 그리퍼과 포인트 클라우드 간의 충돌을 감지합니다. 로봇 관절 및 포인트 클라우드의 충돌 감지는 실제 수요에 따라 활성화할 수 있어서 계획 시간을 절약할 수 있습니다.
-
대상 물체 충돌 감지: 주로 피킹된 대상 물체와 시나리오 물체 간의 충돌을 감지합니다. 피킹된 대상 물체와 기타 대상 물체나 포인트 클라우드 간의 충돌 감지는 실제 수요에 따라 활성화할 수 있습니다.
로봇 파라미터 구성 및 로봇 프로그램 작성
FANUC 표준 인터페이스 샘플 프로그램 MM_S2_Viz_Basic는 거의 이 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 샘플 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S2_Viz_Basic에 관한 상세한 설명은 샘플 프로그램 설명 내용을 참조하십시오.
샘플 프로그램을 기반으로 로봇 측에서 다음과 같은 작업을 수행하십시오.
-
도구 좌표계를 설정합니다. 로봇 측의 도구 좌표계 TCP과 Mech-Viz 중의 TCP 데이터가 일치하는지 확인합니다. 현재 선정된 도구 좌표계 번호를 실제 사용되는 그리퍼가 위치한 좌표계로 설정합니다.
수정 전 수정 후 10: UTOOL_NUM=1 ;
10: UTOOL_NUM=#;
‘#’를 실제 사용되는 도구의 번호로 대체합니다. -
티치 펜던트에 Home포인트(원점)을 설정합니다.
로봇 TCP를 설정된 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어져 있어야 하며 카메라 시야를 가리지 않아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 P[1]에 기록합니다.
-
IPC의 IP 주소를 지정합니다. CALL MM_INIT_SKT 명령어 중의 IP 주소를 IPC 실제 IP 주소로 수정합니다.
수정 전 수정 후(예시) CALL MM_INIT_SKT('8','192.168.1.20',50000,1) ;
16: CALL MM_INIT_SKT('8','192.168.110.207',50000,5) ;
-
티치 펜던트에 로봇의 이미지 캡처 위치를 설정합니다.
로봇을 설정된 카매라 이미지 캡처의 위치로 이동시킵니다. 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 P[2]에 기록합니다.
-
계획 경로 저장 명령어를 추가해야 반환된 모든 웨이포인트를 로컬 변수에 저장합니다.
Mech-Viz에서 돌아온 계획 경로는 Enter-bin 포인트, 접근 포인트, 픽 포인트, 출발 포인트, Out-of-bin 포인트 총 5개 웨이포인트를 포함합니다. 샘플 프로그램은 웨이포인트 3개만 저장하므로 계획 경로 명령어를 추가해야 합니다. 수정 전 수정 후 31: CALL MM_GET_JPS(1,60,70,80) ; 32: CALL MM_GET_JPS(2,61,71,81) ; 33: CALL MM_GET_JPS(3,62,72,82) ;
32: CALL MM_GET_JPS(1,60,70,80) ; 33: CALL MM_GET_JPS(2,61,71,81) ; 34: CALL MM_GET_JPS(3,62,72,82) ; 35: CALL MM_GET_JPS(4,63,73,83) ; 36: CALL MM_GET_JPS(5,64,74,84) ;
-
접근 포인트(Enter-bin 포인트 포함)과 픽 포인트의 위치 레지스터 번호를 조정합니다.
PR[60]과 PR[61]은 Enter-bin 포인트와 접근 포인트이며 PR[62]는 픽 포인트입니다. 수정 전 수정 후 35: !move to approach waypoint ; 36: !of picking ; 37:J PR[60] 50% FINE ; 38: !move to picking waypoint ; 39:J PR[61] 10% FINE ;
38: !move to approach waypoint ; 39: !of picking ; 40:J PR[60] 50% FINE ; 41:J PR[61] 50% FINE ; 42: !move to picking waypoint ; 43:J PR[62] 10% FINE ;
-
DO 포트 신호를 설정하여 그리퍼를 통해 대상 물체를 피킹합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) 40: !add object grasping logic here, ; 41: !such as "DO[1]=ON" ; 42: PAUSE ;
44: !add object grasping logic here, ; 45: !such as "DO[1]=ON" ; 46: PAUSE ; 47: DO[1:OFF]=ON ;
-
출발 포인트(Out-of-bin 포인트 포함)의 위치 레지스터 번호를 조정합니다.
PR[63]과 PR[64]는 Out-of-bin 포인트와 출발 포인입니다. 수정 전 수정 후 43: !move to departure waypoint ; 44: !of picking ; 45:J PR[62] 50% FINE
48: !move to departure waypoint ; 49: !of picking ; 50:J PR[63] 50% FINE ; 51:J PR[64] 50% FINE ;
-
티치 펜던트에 배치 중간점과 배치 포인트를 추가합니다.
로봇을 추가된 중간점과 배치 포인트로 이동시켜 로봇의 포즈를 P[3]과 P[4]에 기록합니다.
-
DO 포트 신호를 설정하여 그리퍼를 통해 대상 물체를 배치합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후 54: !add object releasing logic here, ; 55: !such as "DO[1]=OFF" ; 56: PAUSE ;
60: !add object releasing logic here, ; 61: !such as "DO[1]=OFF" ; 62: PAUSE ; 63: DO[1:OFF]=OFF ;
단일 스텝 실행으로 로봇의 픽 앤 플레이스 효과를 테스트하기
다음과 같은 스텝을 수행하여 로봇의 픽 앤 플레이스 효과를 테스트합니다.
-
티치 펜던트의 키 스위치를 ON으로, 제어 캐비닛의 회전 스위치를 T1으로 돌립니다.
-
티치 펜던트 뒷면에 있는 임의 하나의 활성화 스위치를 누릅니다.
-
티치 펜던트에서 SHIFT를 누르는 동시에 FWD를 눌러서 수동으로 수정된 샘플 프로그램을 실행합니다.
-
로봇은 자동으로 픽 앤 플레이스 프로그램을 실행하여 한 대상 물체의 픽 앤 플레이스 작업을 수행합니다.
만약에 로봇은 성공적으로 대상 물체를 피킹하고 배치할 수 있다면 로봇 프로그램은 기준에 부합합니다.
반복문을 추가하여 순환적인 픽 앤 플레이스를 실현하기
로봇이 한 번의 피킹 및 배치를 수행할 수 있음을 테스트한 후 프로그램에 순환 반복문을 추가하여 로봇의 순환적인 픽 앤 플레이스를 실현합니다.
다음과 같은 반복문을 추가합니다.
17: LBL[1] ; ... 69: JMP LBL[1] ;
참고: 수정된 샘플 프로그램
최종적으로 수정된 샘플 프로그램은 다음과 같습니다.
1: !-------------------------------- ;
2: !FUNCTION: trigger Mech-Viz ;
3: !project and get planned path ;
4: !Mech-Mind, 2023-12-25 ;
5: !-------------------------------- ;
6: ;
7: !set current uframe NO. to 0 ;
8: UFRAME_NUM=0 ;
9: !set current tool NO. to 1 ;
10: UTOOL_NUM=1 ;
11: !move to robot home position ;
12:J P[1] 100% FINE ;
13: !initialize communication ;
14: !parameters(initialization is ;
15: !required only once) ;
16: CALL MM_INIT_SKT('8','192.168.110.207',50000,5) ;
17: LBL[1] ;
18: !move to image-capturing position ;
19:L P[2] 1000mm/sec FINE ;
20: !trigger Mech-Viz project ;
21: CALL MM_START_VIZ(2,10) ;
22: !get planned path, 1st argument ;
23: !(1) means getting pose in JPs ;
24: CALL MM_GET_VIZ(1,51,52,53) ;
25: !check whether planned path has ;
26: !been got from Mech-viz ;
27: !successfully ;
28: IF R[53]<>2100,JMP LBL[99] ;
29: !save waypoints of the planned ;
30: !path to local variables one ;
31: !by one ;
32: CALL MM_GET_JPS(1,60,70,80) ;
33: CALL MM_GET_JPS(2,61,71,81) ;
34: CALL MM_GET_JPS(3,62,72,82) ;
35: CALL MM_GET_JPS(4,63,73,83) ;
36: CALL MM_GET_JPS(5,64,74,84) ;
37: !follow the planned path to pick ;
38: !move to approach waypoint ;
39: !of picking ;
40:J PR[60] 50% FINE ;
41:J PR[61] 50% FINE ;
42: !move to picking waypoint ;
43:J PR[62] 10% FINE ;
44: !add object grasping logic here, ;
45: !such as "DO[1]=ON" ;
46: PAUSE ;
47: DO[1:OFF]=ON ;
48: !move to departure waypoint ;
49: !of picking ;
50:J PR[63] 50% FINE ;
51:J PR[64] 50% FINE ;
52: !move to intermediate waypoint ;
53: !of placing ;
54:J P[3] 50% CNT100 ;
55: !move to approach waypoint ;
56: !of placing ;
57:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
58: !move to placing waypoint ;
59:L P[4] 300mm/sec FINE ;
60: !add object releasing logic here, ;
61: !such as "DO[1]=OFF" ;
62: PAUSE ;
63: DO[1:OFF]=OFF ;
64: !move to departure waypoint ;
65: !of placing ;
66:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
67: !move back to robot home position ;
68:J P[1] 100% FINE ;
69: JMP LBL[1] ;
70: END ;
71: ;
72: LBL[99:vision error] ;
73: !add error handling logic here ;
74: !according to different ;
75: !error codes ;
76: !e.g.: status=2038 means no ;
77: !point cloud in ROI ;
78: PAUSE ;
이로써 '3D 비전 가이드 로봇으로 무질서하게 배열된 공작물 로딩' 솔루션이 성공적으로 배포되었습니다.