픽 앤 플레이스 실현
이 튜토리얼에서는 픽 앤 플레이스 프로세스와 구성 방법을 설명합니다.
통신 방식 설명
‘로봇이 카메라를 트리거하여 이미지를 캡처하고 계획된 경로를 획득하기’ 단계에서는 로봇과 비전 시스템이 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Vision를 통해 계획된 경로를 획득하기’입니다.
이 방식을 사용할 때 '경로 계획' 스텝이 포함된 Mech-Vision 프로젝트를 구성하고 로봇 프로그램을 작성해야 합니다. 픽 앤 플레이스 프로세스 구성 내용을 참조하여 Mech-Vision 프로젝트 구성과 로봇 프로그램 작성을 완료하십시오.
픽 앤 플레이스 프로세스 구성
픽 앤 플레이스 프로세스 구성은 아래 순서대로 진행됩니다.
Mech-Vision 프로젝트의 '경로 계획' 스텝 구성 및 시뮬레이션
'경로 계획' 스텝을 사용하면 로봇을 위해 다음 기능을 제공할 수 있습니다.
-
경로 계획: 로봇의 피킹 경로를 계획합니다. 이 경로 계획에는 물체를 배치하는 경로가 포함되지 않습니다. 배치 경로는 별도로 로봇 프로그램에서 추가해야 합니다.
-
충돌 감지: '경로 계획' 스텝은 로봇 이동 경로를 계획할 때 충돌 감지를 수행하여 충돌이 없는 피킹 경로를 로봇에 제공합니다.
-
시뮬레이션 실행: '경로 계획' 스텝은 로봇의 피킹 과정을 시각화하여 시뮬레이션 화면으로 확인할 수 있습니다. 이를 통해 쉽게 디버깅할 수 있습니다.
| 기본적으로 로봇, 장면 물체 및 말단장치 간의 충돌 감지는 '경로 계획' 스텝에서 활성화되었습니다. 이 스텝을 실행하기 전에 충돌 감지 관련 파라미터를 별도로 구성할 필요가 없습니다. |
Mech-Vision 프로젝트에서 '경로 계획' 스텝을 구성하는 프로세스는 아래 그림과 같습니다.
프로젝트의 편집 구역에서 스텝의 구성 마법사 버튼을 클릭하여 경로 계획 구성 도구를 엽니다.
장면 물체 구성
장면 모델 구성의 목적은 실제 시나리오를 재현하여 사용자가 로봇 모션 경로를 계획하는 데 도움을 주는 것입니다. 구체적인 수행 방법은 장면 물체 구성 내용을 참조하십시오.
피킹 가능성을 확보하는 것을 전제로 실제 작업 환경을 더욱 정확하게 재현해야 합니다. 이 솔루션의 장면 물체 설정은 다음과 같습니다.
말단장치 구성
말단장치를 구성하는 목적은 3D 시뮬레이션 공간에서 말단장치의 모델을 표시하고 충돌 감지에 사용하는 것입니다. 구체적인 작업 방법은 말단장치 구성 내용을 참조하십시오.
대상 물체와 말단장치 연결
말단장치를 구성한 후 대상 물체 편집기에서 대상 물체와 피킹에 사용될 말단장치와 연결해야 합니다. 이렇게 구성된 말단장치는 비로소 대상 물체 피킹에 사용될 수 있습니다.
티칭을 통해 픽 포인트를 설정하면 기본적으로 구성된 모든 말단장치를 피킹에 사용할 수 있습니다. 따라서 이 솔루션에서는 다른 작업을 따로 할 필요가 없습니다.
충돌 모델 단순화
말단장치를 만들 때 말단장치 충돌 모델을 생성하는 데 걸리는 시간을 절약하기 위해 생성한 볼록 껍질이 원본 모델의 모든 세부 사항을 완벽하게 복제할 필요는 없습니다. 모델의 특정 요구 사항에 따라 일부 세부 정보를 생략할 수도 있습니다.
단순화 방안: 그리퍼 부분은 형태를 실물과 최대한 유사하게 정밀하게 제작하여 충돌 감지의 정확성을 보장해야 합니다. 그리퍼 부분에서 먼 기계 구조는 효율성을 높이기 위해 복잡한 구조를 직육면체 외접 상자로 대체하여 단순화할 수 있습니다.
아래 그림은 모델 단순화 예시 그림입니다.
작업 흐름 구축
'경로 계획' 도구에는 이미 내장된 작업 흐름이 있습니다. 작업 흐름 중의 모든 스텝에 관한 설명은 다음과 같습니다.
| 스텝 | 설명 | 기능 |
|---|---|---|
|
카메라 이미지 캡처 위치를 정의합니다. 카메라 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다.
|
시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
|
피킹 시의 접근 포인트를 계획합니다. |
로봇에 전송합니다. |
|
픽 포인트를 계획합니다. |
로봇에 전송합니다. |
|
피킹 시의 출발 포인트를 계획합니다. |
로봇에 전송합니다. |
|
중간점을 지정합니다.
|
시뮬레이션에만 사용되고 로봇에 전송되지 않습니다. |
| 나중에 로봇 프로그램을 작성할 때 사용되는 카메라 이미지 캡처 포인트와 중간점 포즈는 여기서 시뮬레이션에 사용된 포즈와 동일해야 합니다. |
로봇 파라미터 구성 및 로봇 프로그램 작성
KUKA의 표준 인터페이스 예제 프로그램 MM_S3_Vis_Path는 기본적으로 이 애플리케이션의 요구 사항을 충족할 수 있습니다. 이 예제 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S3_Vis_Path에 관한 자세한 설명은 예제 프로그램 설명 내용을 참조하십시오.
예제 프로그램을 기반으로 로봇에서 다음과 같은 작업을 수행하십시오.
-
말단장치 좌표계를 설정합니다. 로봇 측 말단장치 좌표계의 TCP가 Mech-Vision 소프트웨어 '경로 계획' 스텝의 TCP 데이터와 일치하는지 확인합니다. 현재 선택된 말단장치 좌표계 번호를 실제 사용하는 그리퍼의 좌표계 번호로 설정합니다.
수정 전 수정 후 BAS(#TOOL,1)
BAS(#TOOL,#)
‘#’를 실제 사용되는 말단장치의 번호로 대체합니다. -
티치 펜던트에 Home 포인트(원점)를 설정합니다.
로봇 TCP를 티칭한 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어져 있어야 하며 카메라 시야를 가리지 않아야 합니다. 완료한 후 현재 로봇 포즈를 변수 HOME에 기록합니다.
-
그리퍼를 여는 명령어를 추가합니다.
$OUT[131] = True $OUT[132] = False
-
IPC의 IP 주소를 지정합니다. XML_Kuka_MMIND.xml 구성 파일은 표준 인터페이스 프로그램이 로봇에 로드될 때 KUKA 로봇에 로드됩니다. 로드하기 전에 구성 파일에서 IPC의 IP 주소와 포트를 수정할 수 있습니다. 아직 수정하지 않은 경우, MM_Init_Socket 명령어와 대응하는 XML_Kuka_MMIND.xml 파일을 열어 IP 주소와 포트를 IPC의 IP 주소와 포트로 수정할 수 있습니다.
-
티치 펜던트에 로봇의 이미지 캡처 위치를 설정합니다.
로봇을 설정된 카메라 이미지 캡처 위치로 이동시킵니다. 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다. 다음으로 현재 로봇의 포즈를 camera_capture 변수에 기록합니다.
-
DO 포트 신호를 설정하여 그리퍼를 통해 대상 물체를 피킹합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후(예시) ;add object grasping logic here, such as "$OUT[1]=TRUE" halt
;add object grasping logic here, such as "$OUT[1]=TRUE" halt $OUT[131] = False $OUT[132] = True
-
티치 펜던트에 배치 중간점과 배치 포인트를 추가합니다.
로봇을 추가된 중간점과 배치 포인트로 이동시켜 로봇의 포즈를 pick_point3 및 drop_app 변수에 기록합니다.
-
DO 포트 신호를 설정하여 그리퍼를 통해 대상 물체를 배치합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.
수정 전 수정 후 ;add object releasing logic here, such as "$OUT[1]=FALSE" halt
;add object releasing logic here, such as "$OUT[1]=FALSE" halt $OUT[131] = True $OUT[132] = False
단일 스텝 실행으로 로봇의 픽 앤 플레이스 효과를 테스트하기
다음과 같은 작업을 수행하여 로봇의 픽 앤 플레이스 효과를 테스트합니다.
-
티치 펜던트의 연결 관리자 스위치를 수평 방향으로 돌리고 팝업된 모드 선택 팝업창에서 T1 실행 모드를 선택한 다음 연결 관리자의 스위치를 초기 위치로 다시 돌립니다.
-
O를 클릭하고 팝업 창에서 I를 클릭하여 구동 장치 상태를 I로 전환합니다. 구동 장치 상태가 원래 I인 경우 이 스텝을 건너뛰십시오.
-
티치 펜던트 뒷면의 흰색 활성화 버튼을 반쯤 누른 상태로 유지하고 티치 펜던트 앞면의 녹색 실행 버튼을 한 번 누르면 프로그램이 실행됩니다(R이 녹색으로 바뀌면 프로그램이 실행 중임을 나타냅니다).
-
로봇은 자동으로 픽 앤 플레이스 프로그램을 실행하여 대상 물체를 피킹하고 배치합니다.
로봇이 대상 물체를 성공적으로 피킹하고 배치할 수 있으면 로봇 프로그램이 요구 사항을 충족하는 것입니다.
루프 문을 추가하여 순환적인 픽 앤 플레이스를 실현하기
로봇이 피킹 및 배치를 한 번 성공적으로 수행하는지 테스트한 후 프로그램의 12번째 줄과 61번째 줄에 루프 문을 추가하여 로봇의 반복적인 픽 앤 플레이스를 구현합니다.
다음과 같은 루프 문을 추가합니다.
Init: ... GOTO Init
참고: 수정된 예제 프로그램
최종적으로 수정된 예제 프로그램은 다음과 같습니다.
&ACCESS RVO
DEF MM_S3_Vis_Path ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Vision project and get
; planned path
; Mech-Mind, 2023-12-25
;---------------------------------------------------
;set current tool no. to 1
BAS(#TOOL,1)
;set current base no. to 0
BAS(#BASE,0)
Init:
;move to robot home position
PTP HOME Vel=100 % DEFAULT
$OUT[131] = True
$OUT[132] = False
;initialize communication parameters (initialization is required only once)
MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0]
;trigger Mech-Vision project
MM_Start_Vis(1,0,2,init_jps)
;get planned path from NO.1 Mech-Vision project; 2nd argument (1) means getting pose in JPs
MM_Get_Vispath(1,1,pos_num,vis_pos_num,status)
;check whether planned path has been got from Mech-Vision successfully
IF status<> 1103 THEN
;add error handling logic here according to different error codes
;e.g.: status=1003 means no point cloud in ROI
;e.g.: status=1002 means no vision results
halt
ENDIF
;save waypoints of the planned path to local variables one by one
MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])
MM_Get_Jps(2,Xpick_point2,label[2],toolid[2])
MM_Get_Jps(3,Xpick_point3,label[3],toolid[3])
;follow the planned path to pick
;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0] ;
;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0] ;
;add object grasping logic here, such as "$OUT[1]=TRUE"
halt
$OUT[131] = False
$OUT[132] = True
;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 Tool[1] Base[0];
;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT4 Tool[1] Base[0];
;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT2 Tool[1] Base[0] ;
;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT3 Tool[1] Base[0] ;
;add object releasing logic here, such as "$OUT[1]=FALSE"
halt
$OUT[131] = True
$OUT[132] = False
;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT2 Tool[1] Base[0] ;
;move back to robot home position
PTP HOME Vel=100 % DEFAULT;
GOTO Init
END
이로써 '3D 비전 가이드 로봇의 질서정연한 대상 물체 로딩' 솔루션이 성공적으로 배포되었습니다.