샘플 프로그램2:MM_S2_Vis_Basic
프로그램 소개
기능 설명 |
로봇이 Mech-Viz 프로젝트 실행을 트리거하고 경로 계획 결과를 획득하여 피킹 및 배치 작업을 수행합니다. |
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉토리로 이동하여 |
필요한 프로젝트 |
Mech-Vision와 Mech-Viz 프로젝트 |
사용 전제 조건 |
|
이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는 MM_S2_Vis_Basic 샘플 프로그램의 코드와 관련 설명입니다.
DEF MM_S2_Viz_Basic ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz 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)
;move to robot home position
PTP HOME Vel=100 % DEFAULT
;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-Viz project
MM_Start_Viz(2,init_jps)
;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(1,pos_num,vis_pos_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
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
;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 % PDAT2 Tool[1] Base[0]
;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[1] Base[0]
;add object releasing logic here, such as "$OUT[1]=FALSE"
halt
;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.

아래 표는 위 프로그램에 대한 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.
워크플로 | 코드와 설명 | ||
---|---|---|---|
좌표계 설정 |
위의 두 명령어는 현재 선택한 툴 좌표계와 기초 좌표계를 설정한다는 것입니다. |
||
Home포인트로 이동하기 |
따라서, 이 명령어는 로봇이 점에서 점까지 이동 방식을 사용하여 티칭 Home포인트로 이동하는 것입니다. |
||
통신 파라미터를 초기화하기 |
로봇이 MM_Init_Socket 명령어를 통해 XML_Kuka_MMIND.xml 파일의 구성 정보에 따라 비전 시스템과 TCP 프로토콜 통신 연결을 구축합니다.
|
||
카메라 이미지 캡처 위치로 이동하기 |
따라서, 이 명령어는 로봇이 직선 이동 방식을 사용하여 티칭 카메라 이미지 캡처 위치로 이동하는 명령어입니다. |
||
Mech-Viz 프로젝트 실행을 트리거하기 |
따라서, 이 명령어는 로봇이 비전 시스템을 트리거하여 Mech-Viz 프로젝트를 실행한 후, Mech-Vision가 출력한 비전 결과를 기반으로 Mech-Viz는 로봇의 피킹 경로를 계획한다는 것을 나타냅니다. |
||
계획 경로를 획득하기 |
따라서, 이 명령어는 로봇이 Mech-Viz 프로젝트가 반환한 계회된 경로를 획득하는 명령어입니다.
따라서, 위의 문장은 상태 코드 status가 2100일 경우 로봇이 모든 계획 경로를 성공적으로 획득했다는 것을 의미하며, 그렇지 않으면 비전 시스템에 이상이 발생한 것이며, 프로그램은 IF와 ENDIF 사이의 코드를 실행합니다. 사용자는 구체적인 비정상 상태 코드에 따라 적절한 처리를 수행할 수 있습니다. 이 샘플에서는 모든 비정상적인 상태 코드에 대해 같은 처리를 수행하며, 즉 halt 명령어를 사용하여 프로그램 실행을 일시 중단합니다. |
||
계획 경로를 저장하기 |
따라서, “MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])”는 첫 번째 웨이포인트의 관절 각도, 레이블 및 말단장치 번호를 지정된 변수에 저장하는 명령어입니다.
|
||
피킹 시 접근(approach) 웨이포인트로 이동하기 |
로봇이 피킹 접근 웨이포인트로 이동합니다. 여기서 pick_point1는 앞서 언급한 Xpick_point1와 동일한 위치를 나타냅니다. |
||
피킹 웨이포인트로 이동하기 |
로봇이 피킹 웨이포인트로 이동합니다. 여기서 pick_point2은 앞서 언급한 Xpick_point2과 동일한 위치를 나타냅니다. |
||
“DO 설정”을 통해 피킹을 수행하기 |
로봇이 픽 포인트로 이동한 후, DO 명령어(예:“$OUT[1]=TRUE”)를 설정하여 말단 장치를 제어하고 피킹를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
피킹 출발(departure) 웨이포인트로 이동하기 |
로봇이 피킹 출발(departure) 웨이포인트로 이동합니다. 여기서 pick_point3은 앞서 언급한 Xpick_point3와 동일한 위치를 나타냅니다. |
||
중간 웨이포인트로 이동하기 |
로봇이 피킹 시 출발 웨이포인트와 배치의 접근 웨이포인트 사이의 특정 중간점으로 이동하합니다(drop_waypoint).
|
||
배치 시 접근 웨이포인트로 이동하기 |
로봇은 중간 웨이포인트에서 배치 시 접근 웨이포인트로 이동합니다(drop_app).
|
||
배치 포인트로 이동하기 |
로봇이 배치 접근 포인트에서 배치 포인트로 이동합니다(drop).
|
||
“DO 설정”을 통해 배치를 수행하기 |
로봇이 배치 포인트로 이동한 후, DO 명령어(예: “$OUT[1]=FALSE”)를 설정하여 말단 장치를 제어하고 배치를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
배치 출발 포인트로 이동하기 |
로봇이 배치 포인트에서 배치 출발 포인트로 이동합니다(drop_app).
|
||
Home포인트로 이동하기 |
로봇이 배치 출발 포인트에서 다시 Home포인트로 이동합니다.
|