샘플 프로그램2:MM_S2_Vis_Basic
프로그램 소개
기능 설명 |
로봇이 Mech-Viz 프로젝트 실행을 트리거하고 경로 계획 결과를 획득하여 피킹 및 배치 작업을 수행합니다. |
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉토리로 이동하여 |
필요한 프로젝트 |
Mech-Vision와 Mech-Viz 프로젝트 |
사용 전제 조건 |
|
이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는 MM_S2_Vis_Basic 샘플 프로그램의 코드와 관련 설명입니다.
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','127.0.0.1',50000,5) ;
17: !move to image-capturing position ;
18:L P[2] 1000mm/sec FINE ;
19: !trigger Mech-Viz project ;
20: CALL MM_START_VIZ(2,10) ;
21: !get planned path, 1st argument ;
22: !(1) means getting pose in JPs ;
23: CALL MM_GET_VIZ(1,51,52,53) ;
24: !check whether planned path has ;
25: !been got from Mech-Viz ;
26: !successfully ;
27: IF R[53]<>2100,JMP LBL[99] ;
28: !save waypoints of the planned ;
29: !path to local variables one ;
30: !by one ;
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) ;
34: !follow the planned path to pick ;
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 ;
40: !add object grasping logic here, ;
41: !such as "DO[1]=ON" ;
42: PAUSE ;
43: !move to departure waypoint ;
44: !of picking ;
45:J PR[62] 50% FINE ;
46: !move to intermediate waypoint ;
47: !of placing ;
48:J P[3] 50% CNT100 ;
49: !move to approach waypoint ;
50: !of placing ;
51:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
52: !move to placing waypoint ;
53:L P[4] 300mm/sec FINE ;
54: !add object releasing logic here, ;
55: !such as "DO[1]=OFF" ;
56: PAUSE ;
57: !move to departure waypoint ;
58: !of placing ;
59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
60: !move back to robot home position ;
61:J P[1] 100% FINE ;
62: END ;
63: ;
64: LBL[99:vision error] ;
65: !add error handling logic here ;
66: !according to different ;
67: !error codes ;
68: !e.g.: status=2038 means no ;
69: !point cloud in ROI ;
70: PAUSE ;
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.

아래 표는 위 프로그램에 대한 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.
워크플로 | 코드와 설명 | ||
---|---|---|---|
좌표계 설정 |
위의 두 명령어는 현재 선택한 툴 좌표계와 사용자 좌표계를 설정한다는 것입니다. |
||
Home포인트로 이동하기 |
따라서, 이 명령어는 로봇이 관절 각도 이동 방식을 사용하여 티칭된 Home포인트로 이동하는 명령어입니다.
|
||
통신 파라미터를 초기화하기 |
따라서 전체 명령어는 로봇이 MM_INIT_SKT 명령어를 통해 통신 대상(IPC)의 IP 주소, 포트 번호, 타임아웃 대기시간을 지정함으로써 비전 시스템 간의 연결을 설정합니다.
|
||
카메라 이미지 캡처 위치로 이동하기 |
따라서 전체 명령어는 로봇이 직선 운동으로 설정된 이미지 캡처 포인트로 이동합니다(속도: 1000mm/sec).
|
||
Mech-Viz 프로젝트 실행을 트리거하기 |
따라서, 이 명령어는 로봇이 비전 시스템을 트리거하여 Mech-Viz 프로젝트를 실행한 후, Mech-Vision가 출력한 비전 결과를 기반으로 Mech-Viz는 로봇의 피킹 경로를 계획한다는 것을 나타냅니다. |
||
계획 경로를 획득하기 |
따라서, 이 명령어는 로봇이 Mech-Viz 프로젝트가 반환한 계회된 경로를 획득하는 명령어입니다.
따라서, 위의 문장은 상태 코드 R[53]가 2100일 경우 로봇이 모든 계획 경로를 성공적으로 획득했다는 것을 의미하며, 그렇지 않으면 비전 시스템에 이상이 발생한 것이며, 프로그램은 LBL[99] 위치로 점프하여 실행합니다. 다음에는 LBL[99] 위치의 코드입니다.
사용자는 구체적인 비정상 상태 코드에 따라 적절한 처리를 수행할 수 있습니다. 이 샘플에서는 모든 비정상적인 상태 코드에 대해 같은 처리를 수행하며, 즉 PAUSE 명령어를 사용하여 프로그램 실행을 종료합니다. |
||
계획 경로를 저장하기 |
따라서, "CALL MM_GET_JPS(1,60,70,80)"는 첫 번째 웨이포인트의 관절 각도, 레이블 및 말단장치 번호를 지정된 레지스터에 저장하는 명령어입니다.
|
||
피킹 접근 웨이포인트로 이동하기 |
로봇이 피킹 접근 웨이포인트(PR[60]의 위치)로 이동합니다. |
||
픽 포인트로 이동하기 |
로봇이 피킹 웨이포인트(PR[61]의 위치)로 이동합니다. |
||
“DO 설정”을 통해 피킹을 수행하기 |
로봇이 피킹 웨이포인트로 이동한 후, DO 명령어(예: "DO[1]=ON")를 설정하여 말단 장치를 제어하고 피킹를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
피킹 출발 웨이포인트로 이동하기 |
로봇이 피킹 출발 웨이포인트(PR[62]의 위치)로 이동합니다. |
||
중간 웨이포인트로 이동하기 |
따라서 이 전체 명령어는 로봇이 관절 각도 이동 방식을 사용하여 피킹 출발 웨이포인트와 배치 접근 웨이포인트 사이의 특정 중간점으로 이동합니다.
|
||
배치 시 접근 웨이포인트로 이동하기 |
|
||
배치 웨이포인트로 이동하기 |
로봇이 배치 접근 웨이포인트에서 배치 포인트로 이동합니다. |
||
“DO 설정”을 통해 배치를 수행하기 |
로봇이 배치 웨이포인트로 이동한 후, DO 명령어(예: "DO[1]=OFF")를 설정하여 말단 장치를 제어하고 배치를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
배치 출발 웨이포인트로 이동하기 |
로봇이 배치 웨이포인트 위로 어딘가에 이동합니다. 즉 배치 출발(departure) 웨이포인트로 이동합니다.
|
||
Home포인트로 이동하기 |
로봇이 배치 출발 웨이포인트에서 다시 Home포인트로 이동합니다. |