Kawasaki (가와사키) 피킹 샘플 프로그램

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

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

이 부분에서는 픽앤 플레이스를 수행하는 로봇 샘플 프로그램을 소개합니다.

샘플 프로그램 설명

픽앤 플레이스를 완성하는 로봇 샘플 프로그램은 Mech-Vision과 Mech-Viz 소프트웨어의 설치 디렉터리의`통신 구성 요소/Robot_Interface/KAWASAKI/sample` 폴더에 있습니다.

사용 방식에 따라 다음과 같이 세 가지로 나뉩니다.

Mech-Vision를 사용하여 비전 인식을 실행해 결과를 획득하기

.PROGRAM vision_sample_1()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Vision
;* 2022-5-1
;**********************************************************
  accuracy 1 always
  speed 30 always
  TOOL gripper ;set TCP
  Home ;move robot home position
  JMOVE camera_capture ;move to camera capture position
  break
  pos_num = 0
  ;Set ip address of IPC
  call mm_init_skt(127,0,0,1,50000)
  twait 0.1
  ;Set vision recipe
  ;call mm_switch_model(1,1)
  ;Run vision project
  call mm_start_vis(1,1,2,#start_vis) ;(x,x,3,#start_vis) used for ETH pathplan initial position
  twait 1
  call mm_get_visdata(1,pos_num,ret2)
  if ret2 <> 1100
      halt
  end
  call mm_get_pose(1,&pick[1],label[1],speed[1])
  LAPPRO pick[1],100
  LMOVE pick[1]
  break
  ;Add object grasping logic here.
  ldepart 100
  lmove waypoint[1]
  lappro drop[1],100
  lmove drop[1]
  ;Add object releasing logic here.
  ldepart 100
  HOME
.END
default

프로그램 논리 해석

  • 8번째 줄: 툴의 센터 포인트 TCP를 정의하기. TCP는 포즈 변수 gripper에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Set the Robot TCP를 참조하십시오.

  • 9번째 줄: 로봇이 Home 포인트로 이동합니다. Home 포인트를 정의하는 방법은 Set the HOME Position 내용을 참조하십시오.

  • 10번째 줄: 로봇이 이미지 캡처 위치에 직선 운동으로 이동합니다. 이미지 캡처 포즈는 포즈 변수 camera_capture에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Teach Pose Data to the Robot를 참조하십시오.

  • 14번째 줄: mm_init_skt를 호출하여 통신을 초기화합니다. 자세한 내용은 Initialize Communication 참조하십시오.

  • 16~17번째 줄: Mech-Vision parameter recipes 를 설정하려면 여기에서 mm_switch_model를 추가하여 설정할 수 있습니다. 자세한 내용은 Switch Mech-Vision Recipe 참조하십시오.

  • 19번째 줄: mm_start_vis로 Mech-Vision 프로젝트를 트리거 합니다. 자세한 내용은 Start Mech-Vision Project를 참조하십시오.

  • 20번째 줄: 이미지 캡처 후 웨이팅 시간을 이 예에서는 1초로 설정합니다. Eye To Hand 모드에서는 mm_start_vis 와 mm_get_visdata 사이에 이동 스텝(MoveL 혹은 MoveJ) 이 있으면 웨이팅 시간을 설정할 필요가 없으며, Eye-In-Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 정지 상태를 유지해야 하기에 웨이팅 시간을 설정하여야 합니다.

  • 21번째 줄: mm_get_visdata를 사용하여 Mech-Vision 식별 결과를 얻습니다. pos_num은 수신된 포즈의 개수를 저장하고, ret2는 수신된 상태 코드를 저장합니다. 자세한 내용은 Get Vision Target(s)을 참고하십시오.

  • 22~24번째 줄: 인식 결과를 획득하는 상태 코드가 정상인지 판단하고(1100이 정상적인 상태 코드), 상태 코드가 비정상인 경우 로봇 프로그램이 중지되거나 정지됩니다.

  • 26번째 줄: 로봇이 피킹 포즈 위 100mm 위치에 직선운동으로 이동합니다. 이 과정에서 충돌이 발생하지 않도록 사용자는 옵셋을 수정해야 합니다.

  • 27번째 줄: 로봇이 피킹 포즈 위치에 직선운동으로 이동합니다.

  • 29번째 줄: 사용자는 물체를 피킹하기 위해 그리퍼 제어 논리를 추가해야 합니다.

  • 30번째 줄: 피킹 포즈에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 32번째 줄: 로봇이 배치 포인트 위 100mm로 이동하려면 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.

  • 33번째 줄: 로봇이 고정된 배치 포인트 위치에 직선운동으로 이동합니다.

  • 34번째 줄: 사용자는 물체를 배치하기 위해 여기서 그리퍼 제어 논리를 추가해야 합니다.

  • 35번째 줄: 배치 지점에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 36번째 줄: 로봇을 Home 포인트로 이동합니다.

Mech-Viz를 사용하여 경로를 계획하기

.PROGRAM vision_sample_2()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Viz
;* 2022-5-1
;**********************************************************
  accuracy 1 always
  speed 30 always
  TOOL gripper ;set TCP
  Home ;move robot home position
  JMOVE camera_capture ;move to camera_capture position
  break
  pos_num = 0
  ;Set ip address of IPC
  call mm_init_skt(127,0,0,1,50000)
  twait 0.1
  ;Set vision recipe
  ;call mm_switch_model(1,1)
  ;Run Viz project
  call mm_start_viz(1,#start_viz) ;(2,#start_viz) used for ETH viz initial position
  twait 0.1
  ;set branch exitport
  ;call mm_set_branch(1,1)
  ;get planned path
  call mm_get_vizdata(2,pos_num,vispos_num,ret1)
  if ret1 <> 2100
      halt
  end
  for count=1 to pos_num
    call mm_get_pose(count,&movepoint[count],label[count],speed[count])
  end
  ;follow the planned path to pick
  for count =1 to pos_num
    speed speed[count]
    LMOVE movepoint[count]
    if count == vispos_num then
        ;add object grasping logic here
    end
  end
  ;go to drop location
  ldepart 100
  lmove waypoint[1]
  lappro drop[1],100
  lmove drop[1] ;drop point
  ;add object releasing logic here
  ldepart 100
  HOME
.END
default

프로그램 논리 해석

  • 8번째 줄: 툴의 센터 포인트 TCP를 정의하기. TCP는 포즈 변수 gripper에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Set the Robot TCP를 참조하십시오.

  • 9번째 줄: 로봇이 Home 포인트로 이동합니다. Home 포인트를 정의하는 방법은 Set the HOME Position 내용을 참조하십시오.

  • 10번째 줄: 로봇이 이미지 캡처 위치에 직선 운동으로 이동합니다. 이미지 캡처 포즈는 포즈 변수 camera_capture에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Teach Pose Data to the Robot를 참조하십시오.

  • 14번째 줄: mm_init_skt를 호출하여 통신을 초기화합니다. 자세한 내용은 Initialize Communication 참조하십시오.

  • 16~17번째 줄: Mech-Vision parameter recipes 를 설정하려면 여기에서 mm_switch_model를 추가하여 설정할 수 있습니다. 자세한 내용은 Switch Mech-Vision Recipe 참조하십시오.

  • 19번째 줄: mm_start_vis로 Mech-Viz 프로젝트를 트리거 합니다. 자세한 내용은 Start Mech-Viz Project를 참조하십시오.

  • 21~22번째 줄: Mech-Viz 프로젝트에서 분기를 설정해야 하는 경우 mm_set_branch를 호출하여 분기 스텝의 아웃 포트를 설정할 수 있습니다. 자세한 내용은 Select Mech-Viz Branch를 참조하십시오.

  • 24번째 줄: mm_get_vizdata를 호출하여 Mech-Viz 프로젝트에서 계획한 피킹 경로를 가져오고, pos_num은 수신된 포즈 수를 저장하는 데 사용하고, vispos_num은 첫 번째 비전 이동 경로의 위치 번호를 저장하는 데 사용하며, ret1은 이 명령어를 실행하는 상태 코드를 저장하는 데 사용됩니다. 자세한 내용은 Get Planned Path from Mech-Viz 참조하십시오.

  • 25~27번째 줄: 경로를 획득하는 상태 코드가 정상인지 판단하고(2100이 정상적인 상태 코드), 상태 코드가 비정상인 경우 로봇 프로그램이 중지되거나 정지됩니다.

  • 28~30번째 줄: FOR loop를 사용하여 획득한 포즈를 변수에 저장합니다. mm_get_pose를 사용하여 비전 결과와 이동 경로에서 포인트의 포즈 데이터를 획득합니다. 자세한 내용은 Store an Obtained TCP Pose를 참조하십시오.

  • 32~38번째 줄: 루프를 사용하여 Mech-Viz가 계획한 경로를 따라 로봇을 피킹 포즈로 이동합니다. 사용자는 36번째 줄에 그리퍼 제어 논리를 추가하여 물체를 잡도록 해야 합니다.

  • 40번째 줄: 피킹 포즈에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 42번째 줄: 로봇이 배치 포인트 위 100mm로 이동하려면 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.

  • 43번째 줄: 로봇이 고정된 배치 포인트 위치에 직선운동으로 이동합니다.

  • 44번째 줄: 사용자는 물체를 배치하기 위해 여기서 그리퍼 제어 논리를 추가해야 합니다.

  • 45번째 줄: 배치 지점에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 46번째 줄: 로봇을 Home 포인트로 이동합니다.

Mech-Vision "경로 계획" 스텝을 사용하여 경로를 획득하기

.PROGRAM vision_sample_3()
;**********************************************************
;* FUNCTION:simple pick and place with Mech-Vision path planning
;* 2023-2-1
;**********************************************************
  accuracy 1 always
  speed 30 always
  TOOL gripper ;set TCP
  Home ;move robot home position
  JMOVE camera_capture ;move to camera_capture position
  break
  pos_num = 0
  ;Set ip address of IPC
  call mm_init_skt(127,0,0,1,50000)
  twait 0.1
  ;Set vision recipe
  ;call mm_switch_model(1,1)
  ;Run Viz project
  call mm_start_vis(1,0,1,#start_vis)
  twait 0.1
  ;get planned path
  call mm_get_vispath(1,2,pos_num,vispos_num,ret1)
  if ret1 <> 1103
      halt
  end
  for count=1 to pos_num
    call mm_get_pose(count,&movepoint[count],label[count],speed[count])
  end
  ;follow the planned path to pick
  for count =1 to pos_num
    speed speed[count]
    LMOVE movepoint[count]
    if count == vispos_num then
        ;add object grasping logic here
    end
  end
  ;go to drop location
  ldepart 100
  lmove waypoint[1]
  lappro drop[1],100
  lmove drop[1] ;drop point
  ;add object releasing logic here
  ldepart 100
  HOME
.END
default

프로그램 논리 해석

  • 8번째 줄: 툴의 센터 포인트 TCP를 정의하기. TCP는 포즈 변수 gripper에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Set the Robot TCP를 참조하십시오.

  • 9번째 줄: 로봇이 Home 포인트로 이동합니다. Home 포인트를 정의하는 방법은 Set the HOME Position 내용을 참조하십시오.

  • 10번째 줄: 로봇이 관절 운동으로 이미지 캡처 위치에 이동합니다. 이미지 캡처 포즈는 포즈 변수 camera_capture에 의해 정의됩니다. 티치 펜던트를 사용하여 TCP를 정의하는 방법은 Teach Pose Data to the Robot를 참조하십시오.

  • 14번째 줄: mm_init_skt를 호출하여 통신을 초기화합니다. 자세한 내용은 Initialize Communication 참조하십시오.

  • 16~17번째 줄: Mech-Vision parameter recipes 를 설정하려면 여기에서 mm_switch_model를 추가하여 설정할 수 있습니다. 자세한 내용은 Switch Mech-Vision Recipe 참조하십시오.

  • 19번째 줄: mm_start_vis로 Mech-Vision 프로젝트를 트리거 합니다. 자세한 내용은 Start Mech-Vision Project를 참조하십시오.

  • 20번째 줄: 이미지 캡처 후 웨이팅 시간을 이 예에서는 1초로 설정합니다. Eye To Hand 모드에서는 mm_start_vis 와 mm_get_visdata 사이에 이동 스텝(MoveL 혹은 MoveJ) 이 있으면 웨이팅 시간을 설정할 필요가 없으며, Eye-In-Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 정지 상태를 유지해야 하기에 웨이팅 시간을 설정하여야 합니다.

  • 22번째 줄: mm_get_vispath를 호출하여 Mech-Vision “경로 계획” 스텝의 결과를 획득합니다. 자세한 내용은 Get Result of Step “Path Planning” in Mech-Vision을 확인하십시오.

  • 23~25번째 줄: 경로 계획 결과를 획득하는 상태 코드가 정상인지 판단하고(1103이 정상적인 상태 코드), 상태 코드가 비정상인 경우 로봇 프로그램이 중지되거나 정지됩니다.

  • 26~28번째 줄: FOR loop를 사용하여 획득한 웨이포인트를 지정된 변수에 저장합니다. 자세한 내용은 Store an Obtained TCP Pose을 참조하세요.

  • 30~36번째 줄: FOR loop를 사용하여 계획된 경로를 따라 로봇이 피킹 포즈로 이동합니다. 사용자는 물체를 잡기 위해 그리퍼 제어 논리를 추가해야 합니다.

  • 38번째 줄: 피킹 포즈에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 40번째 줄: 로봇이 배치 포인트 위 100mm로 이동하려면 사용자는 접근 중에 충돌이 없도록 옵셋을 수정해야 합니다.

  • 41번째 줄: 로봇이 고정된 배치 포인트 위치에 직선운동으로 이동합니다.

  • 42번째 줄: 사용자는 물체를 배치하기 위해 여기서 그리퍼 제어 논리를 추가해야 합니다.

  • 43번째 줄: 배치 포인트에서 툴 Z축 방향을 따라 위로 100mm 이동하므로 사용자는 떠나는 과정에서 충돌이 없도록 옵셋을 수정해야 합니다.

  • 44번째 줄: 로봇을 Home 포인트로 이동합니다.

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

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

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

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