샘플 프로그램22: MM_S22_Vis_As_Uframe
프로그램 소개
기능 설명 |
로봇이 Mech-Vision 프로젝트를 트리거하여 비전 결과를 취득합니다. 취득한 결과를 좌표계로 사용하여, 픽업 및 배치 동작 공정을 수행합니다. |
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉터리로 이동하여 |
필요한 프로젝트 |
Mech-Vision 프로젝트 |
사용 조건 |
|
| 이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는MM_S22_Vis_As_Uframe 샘플 프로그램의 코드와 관련 설명입니다.
| MM_S3_Vis_Path 샘플과 비하면, 이 샘플은 루프를 통해 모든 계획된 경로를 획득하여 피킹 및 배치 작업을 수행하는 기능만 수정되었습니다.(이 부분의 코드는 굵게 표시됨). 따라서, MM_S3_Vis_PlanAllVision의 MM_S3_Vis_Path과 일치하는 부분은 다시 설명하지 않습니다. (일치하는 부분에 대한 정보는 MM_S3_Vis_Path샘플 프로그램 설명을 참조하십시오). |
1: !-------------------------------- ;
2: !FUNCTION: trigger Mech-Vision ;
3: !project and get vision result ;
4: !as the uframe 7 ;
5: !Mech-Mind, 2026-1-23 ;
6: !-------------------------------- ;
7: ;
8: !set current uframe NO. to 0 ;
9: UFRAME_NUM=0 ;
10: !set current tool NO. to 1 ;
11: UTOOL_NUM=1 ;
12: !move to robot home position ;
13:J P[1] 100% FINE ;
14: !initialize communication ;
15: !parameters(initialization is ;
16: !required only once) ;
17: CALL MM_INIT_SKT('8','192.168.1.20',30000,5) ;
18: !move to image-capturing position ;
19:L P[2] 1000mm/sec FINE ;
20: !trigger NO.1 Mech-Vision project ;
21: CALL MM_START_VIS(1,0,2,10,53) ;
22: !check whether vision project has ;
23: !been triggered successfully ;
24: IF (R[53]<>1102),JMP LBL[99] ;
25: !get vision result from NO.1 ;
26: !Mech-Vision project ;
27: CALL MM_GET_VIS(1,51,53) ;
28: !check whether vision result has ;
29: !been got from Mech-Vision ;
30: !successfully ;
31: IF (R[53]<>1100),JMP LBL[99] ;
32: !save first vision point data to ;
33: !local variables ;
34: CALL MM_GET_POS(1,60,70,80) ;
35: !move to intermediate waypoint ;
36: !of picking ;
37:J P[3] 50% CNT100 ;
38: ;
39: !set the uframe for camera ;
40: UFRAME[7]=PR[60] ;
41: UFRAME_NUM=7 ;
42: ;
43: !move to approach waypoint ;
44: !of picking ;
45:L P[6] 1000mm/sec FINE Tool_Offset,PR[1] ;
46: !move to picking waypoint ;
47:L P[6] 300mm/sec FINE ;
48: !add object grasping logic here, ;
49: !such as "DO[1]=ON" ;
50: PAUSE ;
51: !move to departure waypoint ;
52: !of picking ;
53:L P[6] 1000mm/sec FINE Tool_Offset,PR[1] ;
54: ;
55: !change the uframe ;
56: UFRAME_NUM=0 ;
57: ;
58: !move to intermediate waypoint ;
59: !of placing ;
60:J P[4] 50% CNT100 ;
61: !move to approach waypoint ;
62: !of placing ;
63:L P[5] 1000mm/sec FINE Tool_Offset,PR[2] ;
64: !move to placing waypoint ;
65:L P[5] 300mm/sec FINE ;
66: !add object releasing logic here, ;
67: !such as "DO[1]=OFF" ;
68: PAUSE ;
69: !move to departure waypoint ;
70: !of placing ;
71:L P[5] 1000mm/sec FINE Tool_Offset,PR[2] ;
72: !move back to robot home position ;
73:J P[1] 100% FINE ;
74: END ;
75: ;
76: LBL[99:handling error] ;
77: !add error handling logic here ;
78: !according to different ;
79: !error codes ;
80: !e.g.: mm_status=1003 means no ;
81: !point cloud in ROI ;
82: !e.g.: mm_status=1002 means no ;
83: !vision results ;
84: !e.g.: mm_status=3099 means ;
85: !failed to open socket ;
86: PAUSE ;
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.
아래 표는 새롭게 추가된 기능의 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.
| 워크플로 | 코드와 설명 |
|---|---|
비전 좌표계를 설정하기 |
|
피킹 및 배치를 수행하기 |
위 코드는 로봇이 먼저 비전에 매칭된 사용자 좌표계로 전환하여 피킹 작업을 완료한 다음, 다시 기본 좌표계로 돌아가 배치 작업을 수행하고, 마지막으로 원점으로 복귀하여 프로그램을 종료함을 나타냅니다. UFRAME[7]=PR[60]은 비전 인식으로 얻은 포즈 데이터를 사용자 좌표계 7에 할당하는 것이고, UFRAME_NUM=7은 해당 비전 좌표계를 활성화하여 이후 피킹 동작이 비전 인식으로 얻은 대상 물체 위치를 기준으로 수행되도록 합니다. 피킹이 완료된 후에는 UFRAME_NUM=0으로 전환하여 로봇 베이스 좌표계로 돌아가며, 배치 작업이 미리 설정된 기준 위치를 바탕으로 수행되도록 보장합니다. Tool_Offset, PR[1] 및 Tool_Offset, PR[2]는 각각 피킹 및 배치 단계에서의 말단장치 오프셋 파라미터이며, 로봇 말단장치가 대상 물체에 접근하거나 대상 물체에서 이탈할 때의 안전 오프셋량을 제어하여 충돌을 방지하는 데 사용됩니다. |