픽 앤 플레이스 실현
아래 내용에서는 픽 앤 플레이스 프로세스와 그 구성 방법에 대해 설명합니다.
통신 방안 설명
‘로봇이 카메라를 트리거하여 이미지를 캡처하고 계획된 경로를 획득하기’ 단계는 로봇과 비전 시스템은 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Viz를 통해 계획된 경로를 획득하기’입니다.
해당 협력 방식을 사용할 때 Mech-Vision 프로젝트(이미 ‘비전 프로젝트 구성’ 페이지에서 설정됨)와 Mech-Viz 프로젝트 구성을 완료하고 로봇 프로그램을 작성해야 됩니다. ‘픽 앤 플레이스 프로세스 구성’을 참조하여 Mech-Viz 프로젝트 구성과 로봇 프로그램 작성을 완료하십시오.
픽 앤 플레이스 프로세스 구성
픽 앤 플레이스 프로세스 구성은 아래 단계별 순서대로 진행됩니다 .
Mech-Viz 프로젝트를 구성하여 경로 계획 및 시뮬레이션
Mech-Viz에서 프로젝트를 만들면 로봇은 다음과 같은 기능을 활성화하할 수 있습니다.
-
경로 계획: 로봇의 피킹 경로를 계획합니다. 이 경로 계획에는 물체를 배치하는 경로는 포함되지 않습니다. 배치 경로는 별도로 로봇 프로그램에서 추가해야 합니다.
-
충돌 감지: Mech-Viz는 경로를 계획할 때 충돌 감지를 수행하여 충돌이 없는 피킹 경로를 로봇에 제공합니다.
-
시뮬레이션 실행: Mech-Viz는 로봇의 피킹 과정을 시각화하여 시뮬레이션 화면으로 확인할 수 있으며, 이를 통해 쉽게 디버깅할 수 있습니다.
Mech-Viz 프로젝트를 구성하는 프로세스는 아래 그림과 같습니다.
Mech-Vision 솔루션 라이브러리의 '단일 품목 상자 디팔레타이징' 솔루션에 Mech-Viz 프로젝트 “Viz-Single-Case Depalletizing”이 내장됩니다. 아래 구성을 시작하기 전에 Mech-Viz 소프트웨어를 열어 메뉴 바에서
버튼을 클릭하고 로컬에 저장된 “단일 품목 상자 디팔레타이징” 솔루션 중의 “Viz-Single-Case Depalletizing” 폴더를 선택하세요.시나리오 물체 구성
시나리오 모델 구성의 목적은 실제 시나리오 복원을 통해 사용자가 로봇 모션 경로를 계획하는 데 도움이 주는 데에 있습니다. 구체적인 수행 방법은 시나리오 물체 구성 내용을 참조하십시오.
피킹 가능한 것을 바탕으로 실제 작업 환경을 더욱 정확하게 재현해야 니다. 이 솔루션의 시나리오 물체에 대한 설정은 다음과 같습니다.
말단장치 구성
말단장치를 구성하는 목적은 3D 시뮬레이션 공간에서 말단장치의 모델을 표시하고 충돌 감지에 사용하는 것입니다. 구체적인 작업 방법은 말단장치 구성 내용을 참조하십시오.
대상 물체와 말단장치 연결
말단장치를 구성한 후 대상 물체 편집기에서 대상 물체와 피킹에 사용될 말단장치와 연결해야 합니다. 이렇게 구성된 말단장치는 비로소 피킹에 사용될 수 있습니다. 이 솔루션에서 피킹할 대상 물체는 종이 상자이고, 매칭을 위해 대상 물체 모델이 필요하지 않습니다. 따라서 대상 물체 편집기에서 포인트 클라우드 매칭 모델이 없는 대상 물체(기본적인 대상 물체) 하나만 생성하면 됩니다.
-
프로젝트 리소스 트리에서 대상 물체 노드 아래에서 설정 버튼을 클릭하여 대상 물체 편집기를 엽니다.
-
구성 워크플로 선택 창에서 매칭 없는 인식 카드를 선택합니다. 소프트웨어는 기본적인 대상 물체 하나를 자동으로 생성하고 기본적인 픽 포인트를 자동으로 추가합니다.
-
픽 포인트 설정 탭 중의 피킹 구성 영역에서 Mech-Viz 중의 모든 말단장치 활성화 버튼을 선택하여 말단장치를 대상 물체와 연결시킵니다.
충돌 모델 단순화
말단징치를 만들 때 말단장치 충돌 모델 생성에 걸릴 시간을 절약하기 위해 생성한 볼록 껍질이 원본 모델의 모든 세부 사항을 완벽하게 복제하는 것이 항상 필요한 것은 아닙니다. 모델의 특정 요구 사항에 따라 일부 세부 정보를 생략할 수도 있습니다.
단순화 방안: 그리퍼와 로봇이 연결되는 부분의 나사 구멍과 기타 디테일을 생략할 수 있습니다. 진공 그리퍼 모델은 직육면체였기 때문에 여기서는 단순화할 필요가 없습니다.
아래 그림은 모델 단순화 예시 그림입니다.
작업 흐름 구축
“단일 품목 상자 디팔레타이징” 솔루션에 내장된 Mech-Viz 프로젝트 “Viz-Single-Case Depalletizing”에는 작업 흐름이 이미 구축되었습니다. 작업 흐름 중의 모든 스텝에 관한 설명은 다음과 같습니다.
스텝 | 설명 | 기능 |
---|---|---|
카메라 이미지 캡처 위치를 정의합니다. 카메라 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다.
|
시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
|
메시지 분기 |
로봇 프로그램이 이미지 캡처를 시작하라는 명령어를 보낼 때까지 기다립니다. |
|
Mech-Vision 비전 결과 호출 |
/ |
|
비전 결과가 있는지를 체크하기 |
/ |
|
피킹 시의 접근 포인트를 계획하기 |
로봇에 전송합니다. |
|
픽 포인트를 계획하기 |
로봇에 전송합니다. |
|
피킹 시의 출발 포인트를 계획하기 |
로봇에 전송합니다. |
|
중간점을 지정하기 |
시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
충돌 감지 파라미터 설정
Mech-Viz는 충돌 감지 기능을 통해 로봇 이동 과정에서 불필요한 충돌이 발생하지 않도록 할 수 있습니다. 이 애플리케이션에서는 포인트 클라우드 충돌 감지 기능을 활성화해야 합니다. 구체적인 작업은 충돌 감지 구성 내용을 참조하십시오.
-
이 애플리케이션에서는포인트 클라우드 충돌 감지 기능을 활성화해야 하며 충돌 감지에 참여하는 포인트 클라우드의 포맷은 '포인트 클라우드 큐브’입니다. 포인트 클라우드 충돌 감지 기능은 주로 그리퍼와 포인트 클라우드 간의 충돌을 감지하는 데 사용됩니다. 실제 요구 사항에 따라 로봇 관절과 포인트 클라우드 간의 충돌 감지를 활성화하여 계획 시간을 줄일 수 있습니다.
-
대상 물체 충돌 감지 기능은 주로 피킹된 대상 물체와 시나리오 물체 간의 충돌을 감지하는 데 사용됩니다. 종이 상자를 대상 물체로 하는 응용 시나리오에서는 일반적으로 이 기능을 활성화하지 않습니다.
-
일반적인 문제 및 해결 방법: 문제 1을 활성화하고 작업 현장의 포인트 클라우드 상황에 따라 Z 방향 포인트 클라우드 제거 범위 확장 및 X/Y방향 포인트 클라우드 제거 범위 확장 파라미터를 설정해야 합니다. X/Y방향 포인트 클라우드 제거 범위 확장 파라미터의 값은 너무 크게 설정해서는 안 됩니다. 그렇게 하지 않으면 피킹 중에 진공 그리퍼가 인접한 상자와 접촉할 수도 있습니다.
로봇 파라미터 구성 및 로봇 프로그램 작성
ABB 표준 인터페이스 예제 프로그램 MM_S9_Viz_RunInAdvance는 거의 이 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 이 예제 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S9_Viz_RunInAdvance에 관한 상세한 설명은 예제 프로그램 설명 내용을 참조하십시오.
예제 프로그램을 기반으로 로봇 측에서 다음과 같은 작업을 수행하십시오.
-
티치 펜던트에 Home포인트(원점)을 설정합니다.
로봇 TCP를 티칭된 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어지고 카메라 시야를 거리지 말아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 home에 기록합니다.
-
IPC의 IP 주소와 포트 번호를 지정합니다. MM_INIT_SKT 명령어 중의 IP 주소와 포트 번호를 IPC 실제 IP 주소와 포트 번호로 수정합니다.
수정 전 수정 후(예시) MM_Init_Socket "127.0.0.1",50000,300;
MM_Init_Socket "192.168.10.111",50000,300;
-
티치 펜던트에 로봇의 이미지 캡처 위치를 설정합니다.
로봇을 설정된 카매라 이미지 캡처의 위치로 이동시킵니다. 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다. 다음으로 현재 로봇의 포즈를 camera_capture 변수에 기록합니다.
-
DO 포트 신호를 설정하여 진공 그리퍼를 열어 대상 물체를 피킹하도록 합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) !add object grasping logic here, such as "setdo DO_1, 1;" Stop;
!add object grasping logic here, such as "setdo DO_1, 1;" setDo do0, 1; !Stop;
-
티치 펜던트에 배치 중간점과 배치 포인트를 추가합니다.
로봇을 추가된 중간점과 배치 포인트로 이동시켜 로봇의 포즈를 drop_waypoint 및 drop 변수에 기록합니다.
-
DO 포트 신호를 설정하여 진공 그리퍼를 닫아 대상 물체를 배치하도록 합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) !add object releasing logic here, such as "setdo DO_1, 0;" Stop;
!add object releasing logic here, such as "setdo DO_1, 0;" setDo do0, 0; setDo do4, 1; Stop;
로봇 픽 앤 플레이스 효과 테스트
다음과 같은 스텝을 수행하여 로봇의 픽 앤 플레이스 효과를 테스트합니다.
-
티치 펜던트에서
버튼을 클릭합니다. -
MM_S9_Viz_RunInAdvance를 선택한 후 확인 버튼을 클릭합니다.
-
티치 펜던트의 상태 표시줄에 모터가 전원 켜짐 상태로 표시될 때까지 전원 켜기 버튼을 손으로 가볍게 누르고 있습니다.
-
티치 펜던트에 있는 실행 버튼을 클릭하십시오.
만약에 로봇은 성공적으로 종이 상자를 피킹하고 배치할 수 있다면 로봇 프로그램은 요구 사항을 충족할 수 있음을 나타냅니다.
참고: 수정된 샘플 프로그램
최종적으로 수정된 샘플 프로그램은 다음과 같습니다.
PROC Sample_9()
!set the acceleration parameters
AccSet 50, 50;
!set the velocity parameters
VelSet 50, 1000;
!move to robot home position
MoveAbsJ home\NoEOffs,v500,fine,gripper1;
!initialize communication parameters (initialization is required only once)
MM_Init_Socket "192.168.10.111",50000,300;
!move to image-capturing position
MoveL camera_capture,v1000,fine,gripper1;
!open socket connection
MM_Open_Socket;
!trigger Mech-Viz project
MM_Start_Viz 2,snap_jps;
!set branch exit port
MM_Set_Branch 1,1;
LOOP:
!get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData 1, pose_num, vis_pose_num, status;
!check whether planned path has been got from Mech-Viz successfully
IF status <> 2100 THEN
!add error handling logic here according to different error codes
!e.g.: status=2038 means no point cloud in ROI
Stop;
ENDIF
!save waypoints of the planned path to local variables one by one
MM_Get_JPS 1,jps{1},label{1},speed{1};
MM_Get_JPS 2,jps{2},label{2},speed{2};
MM_Get_JPS 3,jps{3},label{3},speed{3};
!follow the planned path to pick
!move to approach waypoint of picking
MoveAbsJ jps{1},v500,fine,gripper1;
!move to picking waypoint
MoveAbsJ jps{2},v300,fine,gripper1;
!add object grasping logic here, such as "setdo DO_1, 1;"
setDo do0, 1;
!Stop;
!trigger Mech-Viz project but not to trigger camera capturing
MM_Start_Viz 2,snap_jps;
!move to departure waypoint of picking
MoveAbsJ jps{3},v500,fine,gripper1;
!move to intermediate waypoint of placing
MoveJ drop_waypoint,v500,z50,gripper1;
!move to approach waypoint of placing
MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
!set branch exit port and trigger camera capturing when robot moves out of camera’s field of view
MM_Set_Branch 1,1;
!move to placing waypoint
MoveL drop,v300,fine,gripper1;
!add object releasing logic here, such as "setdo DO_1, 0;"
!Stop;
setDo do0, 0;
setDo do4, 1;
!move to departure waypoint of placing
MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
setDo do4, 0;
!move back to robot home position
MoveAbsJ home\NoEOffs,v500,fine,gripper1;
GOTO LOOP;
END_LOOP:
!close socket connection
MM_Close_Socket;
ENDPROC
ENDMODULE
이로써 '3D 비전 가이드 로봇으로 단일 품목의 상자 디팔레타이징' 솔루션이 성공적으로 배포되었습니다.