솔루션 배포
이 섹션에서는 소형 판금 부품 솔루션을 배포하는 방법을 설명합니다. 전체적인 과정은 다음 그림과 같습니다.

비전 시스템 하드웨어 구축
이 스텝에서는 비전 시스템의 정상적인 실행을 위해 카메라와 IPC 등 하드웨어 장치를 실제 작업 환경에 통합해야 합니다.
이 스텝에서는 비전 시스템 하드웨어를 설치하고 연결해야 합니다. 상세한 설명은 비전 시스템 하드웨어 구축 내용을 참조하세요.
로봇 통신 구성
로봇 통신을 구성하기 전에 솔루션을 먼저 얻어야 합니다. 솔루션을 획득하려면 이곳을 클릭하십시오.
-
Mech-Vision 소프트웨어를 시작합니다.
-
Mech-Vision 시작 화면에서 솔루션 라이브러리에서 새로 만들기 버튼을 클릭하여 솔루션 라이브러리를 엽니다.
-
솔루션 라이브러리의 일반적인 사례로 가서 오른쪽 상단의
아이콘을 클릭하여 추가 리소스를 얻은 후 팝업 창에서 확인 버튼을 클릭하세요.
-
사례 리소스를 얻은 후 무질서한 대상 물체 피킹의 소형 판금 부품을 선택하고 아래에 솔루션 이름과 경로를 입력하세요. 그 다음 새로 만들기 버튼을 클릭하고 팝업창에서 확인 버튼을 클릭하면 소형 판금 부품 솔루션을 다운로드할 수 있습니다.
다운로드가 완료되면 솔루션이 Mech-Vision에서 자동으로 열립니다.
비전 프로젝트를 구성하기 전에 Mech-Mind Robotics 비전 시스템과 로봇 측(로봇, PLC나 마스터 컴퓨터)과의 통신 연결을 실현해야 합니다.
소형 판금 부품 솔루션은 표준 인터페이스 통신을 사용합니다. 구체적인 사용 밥법은 표준 인터페이스 통신 구성를 참조하십시오.
핸드-아이 캘리브레이션
핸드-아이 캘리브레이션은 카메라 좌표계와 로봇 좌표계 간의 해당 관계를 구축하는 과정을 말하며, 비전 시스템에 의해 제공된 물체 포즈를 로봇 좌표계 아래의 포즈로 전환하여 로봇이 피킹 작업을 정확하게 완료하도록 가이드합니다.
로봇 핸드-아이 캘리브레이션 사용 가이드를 참조하여 핸드-아이 캘리브레이션을 완성하십시오.
카메라를 설치할 때마다 또는 캘리브레이션 후 카메라와 로봇의 상대 위치가 변경될 때마다 핸드-아이 캘리브레이션을 수행해야 합니다. |
비전 프로젝트 구성
통신 구성 및 핸드-아이 캘리브레이션이 완료되면 Mech-Vision을 사용하여 비전 프로젝트를 구성할 수 있습니다.
비전 프로젝트를 구성하는 방법의 프로세스는 아래 그림과 같습니다.

카메라 연결 및 이미지 캡처
-
카메라를 연결합니다.
Mech-Eye Viewer를 열어 연결할 카메라를 찾은 후 연결 버튼을 클릭하십시오.
-
카메라 파라미터를 조정합니다.
카메라로 캡처한 2D 이미지가 선명하고 포인트 클라우드가 누락되지 않았는지 확인하려면 카메라 파라미터를 조정해야 합니다. 파라미터 조정 방법은 PRO S-GL 카메라 파라미터에 관한 설명을 참조하십시오.
-
이미지를 캡처합니다.
카메라가 성공적으로 연결되고 파라미터 그룹이 설정되면 대상 물체의 이미지 캡처를 시작할 수 있습니다. 인터페이스 상단의
버튼을 클릭하여 단일 이미지를 획득합니다. 이때 획득한 대상 물체의 2D 이미지와 포인트 클라우드를 확인할 수 있어 2D 이미지가 선명하고 포인트 클라우드가 누락되지 않았으며 에지가 선명한지 확인할 수 있습니다. 검증된 대상 물체의 2D 이미지와 포인트 클라우드는 다음 그림의 왼쪽 및 오른쪽 이미지에 각각 표시됩니다.
-
Mech-Vision에서 카메라를 연결합니다.
카메라에서 이미지를 캡처하기 스텝을 선택하고 인터페이스의 오른쪽 하단 모서리에 있는 스텝 파라미터에서 가상 모드를 닫고 카메라를 선택하기를 클릭합니다.
팝업 창에서 카메라 번호 오른쪽에 있는
아이콘을 클릭하고 아이콘이
로 바뀌면 카메라가 성공적으로 연결되었음을 나타냅니다. 카메라 연결에 성공한 후, 오른쪽의 파라미터 그룹 드롭다운에서 캘리브레이션 파라미터 그룹을 선택하세요. 아래 그림과 같습니다.
위 설정이 완료되면 실제 카메라와 연결된 상태이며 다른 파라미터는 조정할 필요가 없습니다. 카메라에서 이미지를 캡처하기 스텝 오른쪽에 있는
아이콘을 클릭하여 이 스텝을 실행합니다. 오류가 없으면 카메라 연결이 성공했으며, 정상적으로 이미지를 캡처할 수 있음을 의미합니다.
3D 대상 물체 인식
소형 판금 부품 솔루션은 3D 대상 물체 인식 스텝을 사용하여 대상 물체를 인식합니다. 3D 대상 물체 인식 스텝 화면의 구성 마법사 버튼을 클릭하여 3D 대상 물체 인식 도구를 열고 관련된 구성을 설정합니다. 구성 프로세스는 아래 그림과 같습니다.

포인트 클라우드의 사전 처리
포인트 클라우드 사전 처리 단계에서 파라미터를 조정하여 원시 포인트 클라우드를 더 선명하게 만들어 데이터를 사전 처리해야 하며, 이를 통해 인식 정확도와 효율성을 높일 수 있습니다.
-
인식 효율성을 높이기 위해 효과적인 인식 영역을 설정하여 간섭 요인이 해당 영역에 들어오지 않도록 합니다.
-
가장자리 추출 효과, 노이즈 제거 레벨, 포인트를 필터링하기 파라미터를 설정하여 노이즈를 필터링합니다.
포인트 클라우드 사전 처리가 완료된 후 스텝 실행 버튼을 클릭하면 사전 처리 효과가 아래 그림과 같이 나타납니다.

대상 물체 인식
포인트 클라우드 사전 처리 후에는 대상 물체 편집기에서 대상 물체의 포인트 클라우드 모델을 생성한 다음, 포인트 클라우드 모델 매칭을 위한 3D 대상 물체 인식 도구에서 매칭 파라미터를 설정해야 합니다.
-
대상 물체 모델을 만듭니다.
-
포인트 클라우드 모델 제작하고 픽 포인트를 추가합니다. 대상 물체 편집기를 열기 버튼을 클릭하여 대상 물체 편집기 화면을 엽니다. 이후, STL 파일을 가져와 대상 물체 포인트 클라우드 모델을 생성하고 픽 포인트를 수동으로 구성합니다.
-
-
-
대상 물체 인식 버튼 오른쪽의 고급 모드를 활성화합니다.
-
매칭 모드: 매칭 모드 자동 설정를 활성화합니다. 활성화한 후 이 스텝은 자동적으로 근사 매칭과 상세 매칭의 파라미터를 조정합니다.
-
근사 매칭 설정: 매칭에 소요되는 시간을 줄이려면 근사 매칭의 실행 방법을 사용자 정의로 설정하고 모델 포인트 클라우드 포인트 수의 목표값을 300으로 설정합니다.
-
신뢰도 설정: 신뢰도 전략을 자동으로 설정하고 신뢰도 임계값을 0.5로 설정하여 잘못된 매칭 결과를 제거합니다.
-
출력-최대 출력: 경로 계획의 수요를 충족한다는 전제 조건으로 최대한으로 출력 결과 수를 감소하여 매칭 시간을 줄입니다. 이 솔루션에서는 최대 출력 값을 20개로 설정되었습니다.
-
겹치는 물체 포즈 제거, 중첩된 물체 포즈 제거: 겹침 및 압착된 인식 결과를 제거하기 위해 겹치는 물체의 포즈 제거 기능 및 중첩된 물체 포즈 제거 기능을 활성화하고, 각각의 임계값을 30%와 20%로 설정합니다.
-
위의 파라미터 설정이 완료된 후 스텝 실행 버튼을 클릭하면 매칭 효과가 아래 그림과 같이 나타납니다.

빈 위치 지정
빈의 형상이 직사각형에 가까우므로, 포인트 클라우드 모델을 제작할 필요 없이 솔루션 라이브러리의 실천 사례내 3D 위치 지정 그룹에서 표준 빈 위치 지정 프로시저를 사용하여 빈의 위치를 찾을 수 있습니다.
-
문자열 리스트: Mech-Viz에서 빈의 이름을 나타내며 빈 위치를 업데이트하는 데 사용됩니다.
-
이동 거리: 빈의 포즈를 빈 윗면에서 아래로 빈의 중심으로 이동시킵니다. 이 솔루션에서 이동 거리를 -57.5mm로 설정합니다.
평행이동 거리의 값 = -1 × 1/2 빈 높이 -
이 프로시저를 실행하고 빈을 위치 지정한 후, 빈 포즈를 Mech-Viz에 전송하여 위치를 업데이트합니다.
포즈 조정
대상 물체 포즈를 획득한 후 포즈 조정 V2 스텝을 사용하여 포즈를 조정해야 합니다. 포즈 조정 V2 스텝 화면의 구성 마법사 버튼을 클릭하여 포즈 조정 도구를 열고 포즈 조정을 구성합니다. 구성 프로세스는 아래 그림과 같습니다.

-
로봇 좌표계에서 대상 물체의 포즈를 출력하려면, 포즈를 로봇 좌표계로 전환을 선택해야 하며, 이를 통해 대상 물체의 포즈가 카메라 좌표계에서 로봇 좌표계로 변환됩니다.
-
정렬 유형은 포즈의 XYZ 값으로 정렬로 설정하고 포즈의 지정된 값은 Z 값으로 설정합니다. 포즈를 내림차순으로 정렬합니다.
-
후속 경로 계획의 시간을 줄이기 위해, 포즈의 Z축과 기준 방향 사이의 각도를 기준으로 명백하게 피킹할 수 없는 대상 물체를 필터링해야 합니다. 이 예시에서는 최대 각도 차이는 70°로 설정해야 합니다.
-
3D ROI 내에 없는 잘못된 대상 물체 포즈를 필터링하기 위해 실제 상황에 맞게 3D ROI를 설정합니다.
-
일반 설정.
새 포트 수 설정은 1로 설정하고 스텝에 입력 및 출력 포트가 각각 하나씩 추가되며 3D 대상 물체 인식 스텝이 출력한 픽 포인트 정보를 연결하고 이를 출력 스텝으로 출력하십시오.
대상 물체 정보 출력하기
출력 스텝을 사용하여 픽 포인트, 픽 포인트 정보, 사전 처리 후의 포인트 클라우드, 빈 이름, 빈 포즈 등의 정보를 경로 계획을 위한 Mech-Viz에 출력합니다.
경로 계획
대상 물체 인식이 완료되면 Mech-Viz를 사용하여 경로를 계획하고 이후 로봇 프로그램을 작성하여 대상 물체를 피킹합니다.
경로 계획 구성 프로세스는 다음 그림과 같습니다.

시나리오 물체 구성
시나리오 모델 구성의 목적은 실제 시나리오 복원을 통해 사용자가 로봇 모션 경로를 계획하는 데 도움이 주는 데에 있습니다. 구체적인 작업 밥법은 시나리오 물체 구성을 참조하십시오.
피킹 가능성을 확보한 후, 실제 작업 환경을 엄격하게 재현하는 전제하에 시나리오 물체를 구성해야 합니다. 이 솔루션의 시나리오 물체 구성은 다음 그림과 같습니다.

말단장치 구성
말단장치를 구성하는 목적은 3D 시뮬레이션 공간에서 말단장치의 모델을 표시하여 충돌 감지에 사용하는 것입니다. 구체적인 작업 밥법은 말단장치 구성을 참조하십시오.
|
작업 흐름 조정
작업 흐름이란 Mech-Viz에서 플로우 차트의 식으로 구축되는 로봇 이동 컨트롤 프로그램입니다. 시나리오 물체와 말단장치의 구성이 완료 후 실제 요구에 따라 프로젝트의 작업 흐름을 조정할 수 있습니다. 대상 물체를 피킹할 때의 논리 처리 플로우 차트는 아래 그림과 같습니다.

표준 인터페이스 통신을 사용할 때 프로젝트의 구체적인 작업 흐름은 아래 그림과 같습니다.

그 중 작업 흐름의 시작과 끝에 있는 두 개의 고정점 이동 스텝은 티칭 포인트이므로 외부로 전송할 필요가 없습니다. 다른 이동 스텝은 웨이포인트를 외부로 보냅니다. 각 빈에서 스마트 경로 계획 스텝은 두 개의 웨이포인트에 해당하며, 총 5개의 웨이포인트가 전송됩니다.
시뮬레이션 및 테스트
툴 바의 시뮬레이션 버튼을 클릭하면 구축이 완료된 Mech-Viz 프로젝트를 시뮬레이션하여 비전 시스템이 성공적으로 구축되었는지 테스트할 수 있습니다.
대상 물체를 무작위로 빈에 놓은 다음 Mech-Viz 툴 바의 시뮬레이션 버튼을 클릭하여 대상 물체를 피킹하는 동작을 시뮬레이션합니다. 피킹을 성공 할 때마다 대상 물체를 다시 정렬해야 하며, 피킹 루프를 10번 시뮬레이션합니다. 만약 10번의 시뮬레이션 피킹에서 다 원활하게 진행되었다면 비전 시스템은 정상적이로 작동할 수 있다는 것으로 판단될 수 있습니다.
시뮬레이션 과정에서 오류가 발생하는 경우 솔루션 배포 일반적인 문제를 참조하여 문제를 해결하십시오.
로봇 픽 앤 플레이스
로봇 프로그래밍 작성
시뮬레이션 효과가 기대에 부합하면 FANUC 로봇 피킹 및 배치 프로그램을 작성할 수 있습니다.
FANUC 로봇 샘플 프로그램 MM_S10_Viz_Subtask는 거의 이 일반적인 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 샘플 프로그램을 기반으로 수정할 수 있습니다. MM_S10_Viz_Subtask 프로그램에 대한 구체적인 설명은 샘플 프로그램 설명을 참조하십시오.
수정 설명
이 샘플은 두 개의 프로그램으로 구성되어 있습니다. 그 중, 서브 프로그램은 Mech-Viz프로젝트 실행을 트리거하고 계획된 경로를 가져오는 역할을 합니다. 메인 프로그램은 계획된 경로에 따라 로봇을 이동시키며, 로봇이 피킹 영역에 떠날 때 서브 프로그램을 실행하여 다음 라운드 경로를 미리 계획하여 사이클 타임을 단축합니다. 샘플 프로그램을 기반으로 다음 단계에 따라 프로그램 파일을 수정하세요.
-
서브 프로그램
-
계획 경로 저장 명령어를 추가하고 모든 돌아온 웨이포인트를 로컬 변수에 저장합니다.
Mech-Viz에서 돌아온 계획 경로는 Enter-bin 포인트, 접근 포인트, 픽 포인트, 출발 포인트, Out-of-bin 포인트 총 5개 웨이포인트를 포함합니다. 샘플 프로그램은 웨이포인트 3개만 저장하므로 계획 경로 명령어를 추가해야 합니다. 수정 전 수정 후(예시) 22: CALL MM_GET_JPS(1,60,70,80) ; 23: CALL MM_GET_JPS(2,61,71,81) ; 24: CALL MM_GET_JPS(3,62,72,82) ;
22: CALL MM_GET_JPS(1,60,70,80) ; 23: CALL MM_GET_JPS(2,61,71,81) ; 24: CALL MM_GET_JPS(3,62,72,82) ; 25: CALL MM_GET_JPS(4,63,73,83) ; 26: CALL MM_GET_JPS(5,64,74,84) ;
-
-
메인 프로그램
-
도구 좌표계를 설정합니다. 로봇 티치 펜던트의 TCP과 Mech-Viz 중의 TCP 데이터가 일치하는지 확인합니다. 현재 선정된 도구 좌표계 번호를 실제 사용되는 그리퍼가 위치한 좌표계로 설정합니다.
수정 전 수정 후(예시) 11: !set current tool NO. to 1 ; 12: UTOOL_NUM=1 ;
11: !set current tool NO. to 3 ; 12: UTOOL_NUM=3 ;
해당 숫자를 실제로 사용하고 있는 말단장치의 번호로 바꿔주세요. 여기서 "3"은 단지 예일 뿐입니다. -
IPC의 IP 주소와 포트 번호를 지정합니다. CALL MM_INIT_SKT 명령어 중의 IP 주소와 포트 번호를 IPC 실제 IP 주소와 포트 번호로 수정합니다. 비전 시스템의 설정이 일치하도록 해야 합니다.
수정 전 수정 후(예시) 16: CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
16: CALL MM_INIT_SKT('8','127.1.1.2',50000,6) ;
-
Enter-bin 포인트, 피킹 접근 포인트, 픽 포인트의 위치 레지스터 번호를 구성합니다.
수정 전 수정 후 32: !move to approach waypoint ; 33: !of picking ; 34:J PR[60] 50% FINE ; 35: !move to picking waypoint ; 36:J PR[61] 10% FINE ; ... 40: !move to departure waypoint ; 41: !of picking ; 42:J PR[62] 50% FINE ;
32: !move to approach waypoint ; 33: !of picking ; 34:J PR[60] 50% FINE ; 35:J PR[61] 50% FINE ; 36: !move to picking waypoint ; 37:J PR[62] 10% FINE ; ... 42: !move to departure waypoint ; 43: !of picking ; 44:J PR[63] 50% FINE ; 45:J PR[64] 50% FINE ;
수정된 샘플 프로그램에서 PR[60]은 Enter-bin 포인트이고, PR[61]은 피킹 접근 포인트, PR[62]는 픽 포인트, PR[63]은 피킹 출발 포인트, PR[64]는 Exit-bin 포인트입니다. -
DO 포트 피킹을 수행하는 신호를 설정하여 그리퍼를 통해서 대상 물체를 피킹합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) 37: !add object grasping logic here, ; 38: !such as "DO[1]=ON" ; 39: PAUSE ;
38: !add object grasping logic here, ; 39: !such as "DO[1]=ON" ; 40: PAUSE ; 41: DO[1]=ON ;
-
DO 포트 배치하는 신호를 설정하여 대상 물체를 배치합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) 53: !add object releasing logic here, ; 54: !such as "DO[1]=OFF" ; 55: PAUSE ;
56: !add object releasing logic here, ; 57: !such as "DO[0]=OFF" ; 58: PAUSE ; 59: DO[0]=OFF ;
-
참고: 수정된 샘플 프로그램
-
서브 프로그램
1: !-------------------------------- ;
2: !FUNCTION: run Mech-Viz project ;
3: !and get planned path in subtask ;
4: !(run together with ;
5: !MM_S10_Viz_Subtask) ;
6: !Mech-Mind, 2023-12-25 ;
7: !-------------------------------- ;
8: ;
9: F[11]=(ON) ;
10: !trigger Mech-Viz project ;
11: CALL MM_START_VIZ(2,10) ;
12: !get planned path, 1st argument ;
13: !(1) means getting pose in JPs ;
14: CALL MM_GET_VIZ(1,51,52,53) ;
15: !check whether planned path has ;
16: !been got from Mech-Viz ;
17: !successfully ;
18: IF (R[53]=2100) THEN ;
19: !save waypoints of the planned ;
20: !path to local variables one ;
21: !by one ;
22: CALL MM_GET_JPS(1,60,70,80) ;
23: CALL MM_GET_JPS(2,61,71,81) ;
24: CALL MM_GET_JPS(3,62,72,82) ;
25: CALL MM_GET_JPS(4,63,73,83) ;
26: CALL MM_GET_JPS(5,64,74,84) ;
27: ENDIF ;
28: F[11]=(OFF) ;
-
메인 프로그램
1: !-------------------------------- ;
2: !FUNCTION: run Mech-Viz project ;
3: !and get planned path in subtask ;
4: !(run together with ;
5: !MM_S10_Sub) ;
6: !Mech-Mind, 2023-12-25 ;
7: !-------------------------------- ;
8: ;
9: !set current uframe NO. to 0 ;
10: UFRAME_NUM=0 ;
11: !set current tool NO. to 3 ;
12: UTOOL_NUM=3 ;
13: !initialize communication ;
14: !parameters(initialization is ;
15: !required only once) ;
16: CALL MM_INIT_SKT('8','127.1.1.2',50000,6) ;
17: !move to robot home position ;
18:J P[1] 100% FINE ;
19: RUN MM_S10_SUB ;
20: LBL[1:LOOP] ;
21: !move to wait position for ;
22: !picking ;
23:L P[2] 1000mm/sec FINE ;
24: !wait until subtask program ;
25: !finished ;
26: WAIT (F[11]=OFF) ;
27: !check whether planned path has ;
28: !been got from Mech-Viz ;
29: !successfully ;
30: IF R[53]<>2100,JMP LBL[99] ;
31: !follow the planned path to pick ;
32: !move to approach waypoint ;
33: !of picking ;
34:J PR[60] 50% FINE ;
35:J PR[61] 50% FINE ;
36: !move to picking waypoint ;
37:J PR[62] 10% FINE ;
38: !add object grasping logic here, ;
39: !such as "DO[1]=ON" ;
40: PAUSE ;
41: DO[1]=ON ;
42: !move to departure waypoint ;
43: !of picking ;
44:J PR[63] 50% FINE ;
45:J PR[64] 50% FINE ;
46: !move to intermediate waypoint ;
47: !of placing, and trigger Mech-Viz ;
48: !project and get planned path in ;
49: !advance ;
50:J P[3] 50% CNT100 DB 10.0mm,CALL MM_S10_SUB ;
51: !move to approach waypoint ;
52: !of placing ;
53:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
54: !move to placing waypoint ;
55:L P[4] 300mm/sec FINE ;
56: !add object releasing logic here, ;
57: !such as "DO[0]=OFF" ;
58: PAUSE ;
59: DO[0]=OFF ;
60: !move to departure waypoint ;
61: !of placing ;
62:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
63: !move back to robot home position ;
64:J P[1] 100% FINE ;
65: JMP LBL[1] ;
66: END ;
67: ;
68: LBL[99:vision error] ;
69: !add error handling logic here ;
70: !according to different ;
71: !error codes ;
72: !e.g.: status=2038 means no ;
73: !point cloud in ROI ;
74: PAUSE ;
피킹 테스트
실제 생산의 안정적인 운영을 보장하기 위해 수정된 샘플 프로그램을 실행하여 로봇이 대상 물체를 피킹하는 테스트를 진행해야 합니다. 구체적인 방법은 표준 인터페이스 통신 테스트를 참조하세요.
피킹 테스트 하기전에 먼저 다음 포인트를 티칭으로 설정하십시오.
명칭 | 변수 | 설명 |
---|---|---|
Home 포인트 |
P[1] |
티칭을 시작하는 초기 위치. 원점은 대상 물체나 주변 설비와 멀리 떨어지고 카메라 시야를 거리지 말아야 합니다. |
이미지 캡처 포인트 |
P[2] |
티칭으로 설정한 이미지 캡처 위치. 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 말아야 합니다. |
배치의 중간 웨이포인트 |
P[3] |
중간 웨이포인트를 추가하면 로봇이 부드럽게 이동할 수 있으며, 불필요한 충돌을 방지할 수 있습니다. |
배치 포인트 |
P[4] |
대상 물체를 배치하는 목표점. |
티칭이 완료된 후, 아래 표에 나열된 시나리오에 대상 물체를 배치하고, 순서대로 로봇을 사용하여 저속 피킹을 테스트합니다.
크롤 테스트는 다음의 세 단계로 나뉩니다: