샘플 프로그램15: MM_S15_Viz_GetDoList
프로그램 소개
기능 설명 |
로봇은 피킹 경로와 DO 신호를 획득한 후, 피킹 웨이포인트로 이동하고 DO 신호를 설정하여 피킹 및 배치 작업을 완성합니다. 이 샘플 예시는 일반적으로 디팔레타이징 시나리오에 사용되며, 로봇의 말단장치는 멀티 파티션 빨판입니다. |
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉터리로 이동하여 |
필요한 프로젝트 |
Mech-Vision와 Mech-Viz 프로젝트(말단장치 유형은 디팔레타이징 진공 그리퍼입니다) |
사용 전제 조건 |
|
| 이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는 MM_S15_Viz_GetDoList 샘플 프로그램의 코드와 관련 설명입니다.
| MM_S2_Viz_Basic 샘플과 비하면, 이 샘플은 아래와 같이 굵게 표시된 코드 부분만 수정되었습니다. 따라서 MM_S2_Viz_Basic과 일치하는 부분은 다시 설명하지 않습니다. (일치하는 부분에 대한 정보는 MM_S2_Viz_Basic샘플 프로그램 설명을 참조하십시오). |
DEF MM_S15_Viz_GetDoList ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project, then get
; planned path and gripper control signal using
; command 210
; 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,status)
IF status <> 2103 THEN
;add error handling logic here according to different error codes
MM_LOG("Status ERROR")
HALT
ENDIF
;get planned path
MM_Get_PlanData(0,3,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
;get gripper control signal list
MM_Get_Dolist(0,0,status)
IF (status <> 1106) AND (status <> 2102) THEN
;add error handling logic here according to different error codes
MM_LOG("Status ERROR")
HALT
ENDIF
;save waypoints of the planned path to local variables one by one
FOR count=1 TO pos_num
MM_Get_PlanJps(count,3,pick_point[count],move_type[count],tool_num[count],speed[count])
ENDFOR
Xpick_point1=pick_point[1]
Xpick_point2=pick_point[2]
Xpick_point3=pick_point[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
halt
;set gripper control signal
MM_Set_Dolist(0)
;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
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.
아래 표는 굵게 표시된 코드의 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.
| 워크플로 | 코드와 설명 |
|---|---|
계획 경로를 획득하기 |
|
진공 그리퍼의 DO 신호를 가져오기 |
따라서, 위의 문장은 상태 코드 status가 1106 또는 2102일 경우 로봇이 모든 진공 그리퍼 DO 신호를 성공적으로 획득했다는 것을 의미하며, 그렇지 않으면 비전 시스템에 이상이 발생한 것이며, 프로그램은 IF와 ENDIF 사이의 코드를 실행합니다. 사용자는 구체적인 비정상 상태 코드에 따라 적절한 처리를 수행할 수 있습니다. 이 샘플에서는 모든 비정상적인 상태 코드에 대해 같은 처리를 수행하며, 즉 halt 명령어를 사용하여 프로그램 실행을 일시 중단합니다. |
계획 경로를 저장하기 |
|
피킹 웨이포인트로 이동하고 피킹하기 |
따라서 위 문장은 로봇이 피킹 웨이포인트(pick_point2)로 이동한 후, MM_Set_Dolist 명령어를 통해 진공 그리퍼의 DO 신호를 설정하여 피킹 작업을 완료합니다. |