샘플 프로그램7: MM_S7_Viz_SwitchTCP

현재 최신 버전 (2.1.2)에 대한 매뉴얼을 보고 계십니다. 다른 버전에 액세스하려면 페이지 오른쪽 상단 모서리에 있는 '버전 전환' 버튼을 클릭하세요.

■ 현재 사용하고 있는 제품의 버전이 확실하지 않은 경우에는 언제든지 당사 기술 지원팀에 문의하시기 바랍니다.

프로그램 소개

기능 설명

로봇이 Mech-Viz프로젝트 실행을 트리거한 후, 경로 계획 결과를 휙득하고 피킹 웨이포인트 말단장치의 번호에 따라 적절한 말단장치를 전환하여 피킹 및 배치를 수해합니다.

파일 경로

Mech-Vision 및 Mech-Viz의 설치 디렉토리로 이동하여 통신 구성 요소/Robot_Interface/KUKA/sample/MM_S7_Viz_SwitchTCP경로를 사용하여 파일을 찾을 수 있습니다.

필요한 프로젝트

Mech-Vision와 Mech-Viz 프로젝트

사용 전제 조건

  1. 표준 인터페이스 통신 구성이 완료됩니다.

  2. 자동 캘리브레이션이 완료됩니다.

이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오.

프로그램 설명

다음에는 MM_S7_Viz_SwitchTCP 샘플 프로그램의 코드와 관련 설명입니다.

MM_S2_Viz_Basic 샘플과 비하면, 이 샘플은 주로 말단장치의 번호에 따라 적절한 말단장치를 전환할 수 있는 기능이 추가되었습니다.(이 기능의 코드가 굵게 표시됨). 따라서, MM_S7_Viz_SwitchTCP의 MM_S2_Viz_Basic과 일치하는 부분은 다시 설명하지 않습니다. (일치하는 부분에 대한 정보는 MM_S2_Viz_Basic샘플 프로그램 설명을 참조하십시오).
DEF  MM_S7_Viz_SwitchTCP ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, switch TCP according to the label
; 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(2,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_Pose(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
   ;switch TCP according to the received toolid
   ;reset tool signals according to received toolid
   switch toolid[vis_pos_num]
      CASE 1
         TOOL_DATA[1]=tool_1
         ;reset tool signal
      CASE 2
         TOOL_DATA[1]=tool_2
         ;reset tool signal
      DEFAULT
         ;add handling logic here if the toolid is invalid
         ;reset tool signal
         halt
   endswitch
   ;follow the planned path to pick
   ;move to approach waypoint of picking
LIN pick_point1 Vel=1 m/s CPDAT7 Tool[1] Base[0]
   ;move to picking waypoint
LIN pick_point2 Vel=0.3 m/s CPDAT8 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;open tool signal
      CASE 2
         halt
         ;open tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of picking
LIN pick_point3 Vel=1 m/s CPDAT9 Tool[1] Base[0]
   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[0] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[0] Base[0]
   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   switch toolid[vis_pos_num]
      CASE 1
         halt
         ;reset tool signal
      CASE 2
         halt
         ;reset tool signal
      DEFAULT
         halt
   endswitch
   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[0] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.

sample7

아래 표는 새롭게 추가된 코드의 설명입니다.

워크플로 코드와 설명

계획 경로를 획득하기

;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(2,pos_num,vis_pos_num,status)
  • MM_Get_VizData: Mech-Viz가 계획한 경로를 획득하는 명령어.

  • 2: 획득한 웨이포인트의 포즈 유형을 말단장치 포즈로 지정합니다.

  • pose_num: 이 변수는 비전 시스템이 반환한 웨이포인트의 개수를 저장합니다.

  • vis_pose_num: 이 변수는 비전 이동 웨이포인트(피킹 웨이포인트)의 경로 내 위치 번호를 저장합니다.

  • status: 이 변수는 명령어 실행 상태 코드를 저장하는 것입니다.

따라서, 이 명령어는 로봇이 Mech-Viz 프로젝트가 반환한 계회된 경로를 획득하는 명령어입니다.

반환된 계획 경로는 로봇의 메모리에 저장되며, 직접적으로 얻을 수 없습니다. 후속 작업인 "계획 경로를 저장하기"을 통해서만 접근할 수 있습니다.

계획 경로를 저장하기

;save waypoints of the planned path to local variables one by one
MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])
MM_Get_Pose(2,Xpick_point2,label[2],toolid[2])
MM_Get_Pose(3,Xpick_point3,label[3],toolid[3])
  • MM_Get_Pose: 계획된 경로를 저장하는 명령어.

  • 1: 첫 번째 웨이포인트가 저장됩니다.

  • Xpick_point1: 이 변수는 첫 번째 웨이포인트의 말단장치 포즈를 저장하는 것입니다.

  • label[1]: 이 변수는 첫 번째 웨이포인트의 레이블을 저장하는 것입니다.

  • toolid[1]: 이 변수는 첫 번째 비전 웨이포인트의 말단장치 번호를 저장하는 것입니다.

따라서, “MM_Get_Pose(1,Xpick_point1,label[1],toolid[1])”는 첫 번째 웨이포인트의 말단장치 포즈, 레이블 및 말단장치 번호를 지정된 변수에 저장하는 명령어입니다.

  • 사용자는 실제 Mech-Viz 프로젝트를 고려하여 계획된 경로를 저장해야 합니다. 이 샘플에서는 Mech-Viz가 계획한 경로가 세 개의 웨이포인트로 구성됩니다: 첫 번째는 피킹 접근 웨이포인트(Xpick_point1), 두 번째는 피킹 웨이포인트(Xpick_point2), 세 번째는 피킹 출발 웨이포인트(Xpick_point3)입니다. 또한, vis_pose_num은 경로에서 피킹 웨이포인트의 위치 번호를 나타내므로, toolid[vis_pos_num]은 toolid[2]와 동일하며, 두 가지 모두 로봇이 피킹 웨이포인트(Xpick_point2)로 이동할 때 사용하는 말단 도구 번호를 나타냅니다.

  • 이 샘플은 toolid[vis_pos_num]의 값을 기반으로 말단장치를 변경합니다. 따라서 사용되는 Mech-Viz 프로젝트에는 “말단장치를 바꾸기”스텝이 포함되어야 하며, “말단장치를 바꾸기”의 스텝 파라미터가 적절하게 설정되어야 합니다.

    • "말단장치를 바꾸기" 스텝은 "비전 결과 체크"스텝의결과 있음 아웃 포트 뒤에 연결되야 합니다.

    • "말단장치를 바꾸기" 스텝의 작업 모드파라미터는 적합한 말단장치로 자동으로 전환됨으로 설정되야 합니다.

말단장치의 번호에 따라 적절한 말단장치를 전환하기

;switch TCP according to the received toolid
;reset tool signals according to received toolid
switch toolid[vis_pos_num]
   CASE 1
      TOOL_DATA[1]=tool_1
      ;reset tool signal
   CASE 2
      TOOL_DATA[1]=tool_2
      ;reset tool signal
   DEFAULT
      ;add handling logic here if the toolid is invalid
      ;reset tool signal
      halt
endswitch

toolid[vis_pos_num]은 피킹 웨이포인트의 말단장치 번호를 나타냅니다. 사용자는 toolid[vis_pos_num] 변수 값에 따라 로봇이 목표 포즈(피킹 웨이포인트)로 이동할 때 사용할 말단장치를 결정할 수 있음을 의미합니다. 즉, 말단장치 번호에 따라 말단장치를 변경하는 것입니다. 위 코드의 설명은 아래와 같습니다.

  • 피킹 웨이포인트의 말단장치 번호가 1인 경우, 로봇이 tool_1 툴 좌표계를 사용할 것입니다.

  • 피킹 웨이포인트의 말단장치 번호가 2인 경우, 로봇이 tool_2 툴 좌표계를 사용할 것입니다.

  • 피킹 웨이포인트에 말단장치 번호가 다른 값일 경우, 로봇은 실행이 종료됩니다. 여기는 사용자가 실제 상황에 맞춰 다른 처리를 추가할 수 있습니다.

로봇이 피킹 웨이포인트로 이동할 때, 말단장치 번호에 해당하는 DO 신호를 활성화할 수 있습니다. 아래 코드를 참조하십시오.

;add object grasping logic here, such as "$OUT[1]=TRUE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;open tool signal
   CASE 2
      halt
      ;open tool signal
   DEFAULT
      halt
endswitch

로봇이 배치 웨이포인트로 이동할 때, 말단장치 번호에 해당하는 DO 신호를 비활성화하고 리셋할 수 있습니다. 아래 코드를 참조하십시오.

;add object releasing logic here, such as "$OUT[1]=FALSE"
switch toolid[vis_pos_num]
   CASE 1
      halt
      ;reset tool signal
   CASE 2
      halt
      ;reset tool signal
   DEFAULT
      halt
endswitch

이 페이지가 도움이 되었습니까?

다음 방법을 통해 피드백을 보내주실 수 있습니다:

저희는 귀하의 개인정보를 소중히 다룹니다.

당사 웹사이트는 최상의 사용자 경험을 제공하기 위해 쿠키를 사용하고 있습니다. "모두 수락"을 클릭하시면 쿠키 사용에 동의하시는 것이며, "모두 거부"를 클릭하시면 이 웹사이트 방문 시 귀하의 정보가 추적되거나 기억되지 않도록 단일 쿠키만 사용됩니다.