샘플 프로그램1:MM_S1_Vis_Basic

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

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

프로그램 소개

기능 설명

로봇이 Mech-Vision 프로젝트 실행을 트리거하고 비전 결과 획득하여 피킹 및 배치 작업을 수행합니다.

파일 경로

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

필요한 프로젝트

Mech-Vision 프로젝트

사용 조건

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

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

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

프로그램 설명

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

  — This is a LUA program.
  require("MM_Module")
  IP_Address = "192.168.1.8"
  Server_Port = 50000
  Time_Out = 60
  --initialize communication parameters (initialization is required only once)
  MM_Init_Socket(IP_Address,Server_Port,Time_Out)
  --close socket connection
  MM_Close_Socket()
  --open socket connection
  MM_Open_Socket()
  --switch recipe of NO.1 Mech-Vision project
  TOP_Status=MM_Switch_Model(1,1)
  print("Vision system status code:",TOP_Status)
  ---check whether the recipe is switched successful
  if TOP_Status ~= 1107 then
    print("Abnormal vision system status!!!",TOP_Status)
    Pause()
  end
  --trigger NO.1 Mech-Vision project
  TOP_Status = MM_Start_Vis(1,1,1,JP[100])
  print("Vision system status code:",TOP_Status)
  --check whether the Mech-Vision project has been triggered successfully
  if TOP_Status ~= 1102 then
    print("Abnormal vision system status!!!",TOP_Status)
    Pause()
  end
  --get vision result from NO.1 Mech-Vision project
  TOP_Status,TOP_Last_Data,TOP_Pos_Num = MM_Get_VisData(1)
  print("Vision result:",TOP_Status,TOP_Last_Data,TOP_Pos_Num)
  --check whether vision result has been got successfull
  if TOP_Status ~= 1100 then
    print("Failed to obtain vision result!!!",TOP_Status)
    Pause()
  end
  --save first vision point data to local variables
  MM_Get_Pose(1,20,50,60)
  local pose1 = NewPose(0, 0, 200, 0, 0, 0)
  --move to approach waypoint of picking
  MovL(PR[20],{cnt = -1,uof = pose1})
  --move to picking waypoint
  MovL(PR[20],{cnt = -1})
  --add object grasping logic here, such as "setdo DO_1, 1
  Pause()
  --move to departure waypoint of picking
  MovL(PR[20],{cnt = -1,uof = pose1})

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

sample1

아래 표는 위 프로그램에 대한 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.

워크플로 코드와 설명

MM_Module 헤더 파일 가져오기

  -- This is a LUA program.
  require("MM_Module")

초기화 및 통신 구축하기

  IP_Address = "192.168.1.8"
  Server_Port = 50000
  Time_Out = 60
  --initialize communication parameters (initialization is required only once)
  MM_Init_Socket(IP_Address,Server_Port,Time_Out)
  --close socket connection
  MM_Close_Socket()
  --open socket connection
  MM_Open_Socket()
  • MM_Init_Socket: 통신을 초기화하는 명령어입니다.

    초기화 통신 명령어 입력 파라미터:

    • '50000': IPC의 포트 번호.

    • '192.168.1.8': IPC의 IP 주소.

    • 60: 통신 타임아웃 대기시간은 60초입니다.

  • MM_Close_Socket:통신을 종료하는 명령어입니다.

  • MM_Open_Socket:통신을 연결하는 명령어입니다.

먼저 통신을 종료한 후 다시 연결하여 연결 중인 프로젝트가 없는지 확인합니다.

Mech-Vision 파라미터 레시피를 전환하기

  --switch recipe of NO.1 Mech-Vision project
  TOP_Status=MM_Switch_Model(1,1)
  • MM_Switch_Model: Mech-Vision파라미터 레시피를 전환하는 명령어입니다.

  • 첫 번째 1: Mech-Vision 프로젝트 번호를 나타냅니다.

  • 두 번째 1: Mech-Vision 프로젝트 중에 파라미터 레시피의 번호를 나타냅니다.

상태 코드를 출력하고 검증하기

  print("Vision system status code:",TOP_Status)
  ---check whether the recipe is switched successful
  if TOP_Status ~= 1107 then
    print("Abnormal vision system status!!!",TOP_Status)
    Pause()
  end

Mech-Vision 프로젝트 실행을 트리거하기

  --trigger NO.1 Mech-Vision project
  TOP_Status = MM_Start_Vis(1,1,1,JP[100])
  print("Vision system status code:",TOP_Status)
  • MM_Start_Vis:Mech-Vision 프로젝트 실행을 트리거하는 명령어입니다.

  • 첫 번째 1: Mech-Vision의 프로젝트 번호를 나타냅니다.

  • 두 번째 1: Mech-Vision 프로젝트가 모든 시각 포인트를 반환하기를 기대함을 나타냅니다.

  • 셋 번째1: 로봇의 현재 플랜지 포즈를 Mech-Vision프로젝트로 전송합니다

  • JP[100]: 사용자 정의 관절 각도 데이터로, 본 샘플에서는 해당 관절 각도 데이터가 실제로 사용되지 않지만 반드시 설정해야 합니다.

상태 코드를 출력하고 검증하기

  print("Vision system status code:",TOP_Status)
  --check whether the Mech-Vision project has been triggered successfully
  if TOP_Status ~= 1102 then
    print("Abnormal vision system status!!!",TOP_Status)
    Pause()
  end

비전 결과 획득하기

  --get vision result from NO.1 Mech-Vision project
  TOP_Status,TOP_Last_Data,TOP_Pos_Num = MM_Get_VisData(1)
  • MM_Get_VisData: 비전 결과를 획득하는 명령어입니다.

  • 1: Mech-Vision프로젝트 번호입니다.

이 명령어는 로봇이 비전 시스템에 실행 번호 1인 Mech-Vision 프로젝트를 트리거하여 Mech-Vision 프로젝트가 모든 비전 포인트를 반환할 것으로 예상하는 것을 나타냅니다.

비전 결과를 출력하고 검증하기

  print("Vision result:",TOP_Status,TOP_Last_Data,TOP_Pos_Num)
  --check whether vision result has been got successfull
  if TOP_Status ~= 1100 then
    print("Failed to obtain vision result!!!",TOP_Status)
    Pause()
  end

비전 결과를 덤프하기

  --save first vision point data to local variables
  MM_Get_Pose(1,20,50,60)
  local pose1 = NewPose(0, 0, 200, 0, 0, 0)
  • MM_Get_Pose:비전 결과를 덤프하는 명령어입니다.

  • 1: 번째 비전 포인트를 덤프됩니다.

  • 60: 번호가 60인 위치 레지스터 JPR[20]입니다. 이 레지스터는 첫 번째 비전 포인트의 말단장치 포즈, 즉 피킹 웨이포인트의 말단장치 포즈를 저장하는 것입니다.

  • 70: 번호가 70인 데이터 레지스터 HR[50]입니다. 이 레지스터는 첫 번째 비전 포인트에 해당하는 레이블을 저장하는 것입니다.

  • 80: 번호가 80인 데이터 레지스터 HR[60]입니다. 이 레지스터는 첫 번째 비전 포인트에 해당하는 말단장치 번호를 저장하는 것입니다.

  • NewPose 오프셋 변수를 선언합니다.

이 명령어는 첫 번째 비전 포인트의 말단장치 포즈, 라벨 및 말단장치 번호를 각각 지정된 레지스터로 전송하는 명령어입니다.

피킹 웨이 포인트 위로 이동하기

  --move to approach waypoint of picking
  MovL(PR[20],{cnt = -1,uof = pose1})

피킹 웨이 포인트로 이동하기

  --move to picking waypoint
  MovL(PR[20],{cnt = -1})

로봇은 직선 이동 방식으로 피킹 접근 웨이 포인트에서 피킹 웨이 포인트로 이동합니다.

“DO 설정”을 통해 피킹을 수행하기

  --add object grasping logic here, such as "setdo DO_1, 1;"
  Pause()

로봇이 피킹 웨이포인트로 이동한 후, DO 명령어(예: “setdo DO_1, 1”)를 설정하여 말단 장치를 제어하고 피킹를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.

Pause는 프로그램의 실행을 종료하는 것을 나타냅니다. 사용자가 DO 명령어를 설정하는 문장을 추가한 경우, 여기에서 Pause 문장을 삭제할 수 있습니다.

피킹 출발 웨이포인트로 이동하기

  --move to departure waypoint of picking
  MovL(PR[20],{cnt = -1,uof = pose1})  ;

로봇이 피킹 웨이포인트 위로 어딘가에 이동합니다. 즉 피킹 출발 웨이포인트로 이동합니다.

피킹 출발 웨이포인트를 추가는 로봇이 이동 중에 시나리오 물체(예: 빈)와 충돌하는 것을 방지할 수 있습니다. 사용자는 실제 시나리오에 따라 여기의 Z축 음의 방향 오프셋 값(PR[n]값)을 조정하여 출발 과정에서 충돌이 발생하지 않도록 설정할 수 있습니다.

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

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

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

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