픽 앤 플레이스 실현

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

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

아래 내용에서는 픽 앤 플레이스 프로세스와 그 구성 방법에 대해 설명합니다.

픽 앤 플레이스 프로세스

픽 앤 플레이스 프로세스는 다음 그림과 같습니다.

picking workflow

통신 방안 설명

‘로봇이 카메라를 트리거하여 이미지를 캡처하고 계획된 경로를 획득하기’ 단계는 로봇과 비전 시스템은 표준 인터페이스 통신 방식을 사용해야 하며, 표준 인터페이스와 비전 시스템 간의 협력 방식은 ‘Mech-Viz를 통해 계획된 경로를 획득하기’입니다.

해당 협력 방식을 사용할 때 Mech-Vision 프로젝트(이미 ‘비전 프로젝트 구성’ 페이지에서 설정됨)와 Mech-Viz 프로젝트 구성을 완료하고 로봇 프로그램을 작성해야 됩니다. ‘픽 앤 플레이스 프로세스 구성’을 참조하여 Mech-Viz 프로젝트 구성과 로봇 프로그램 작성을 완료하십시오.

픽 앤 플레이스 프로세스 구성

픽 앤 플레이스 프로세스 구성은 아래 단계별 순서대로 진행됩니다 .

picking workflow config

Mech-Viz 프로젝트를 구성하여 경로 계획 및 시뮬레이션

Mech-Viz에서 프로젝트를 만들면 로봇은 다음과 같은 기능을 활성화하할 수 있습니다.

  • 경로 계획: 로봇의 피킹 경로를 계획합니다. 이 경로 계획에는 물체를 배치하는 경로는 포함되지 않습니다. 배치 경로는 별도로 로봇 프로그램에서 추가해야 합니다.

  • 충돌 감지: Mech-Viz는 경로를 계획할 때 충돌 감지를 수행하여 충돌이 없는 피킹 경로를 로봇에 제공합니다.

  • 시뮬레이션 실행: Mech-Viz는 로봇의 피킹 과정을 시각화하여 시뮬레이션 화면으로 확인할 수 있으며, 이를 통해 쉽게 디버깅할 수 있습니다.

Mech-Viz 프로젝트를 구성하는 프로세스는 아래 그림과 같습니다.

viz project config workflow

Mech-Vision 솔루션 라이브러리의 '단일 품목 상자 디팔레타이징' 솔루션에 Mech-Viz 프로젝트 “Viz-Single-Case Depalletizing”이 내장됩니다. 아래 구성을 시작하기 전에 Mech-Viz 소프트웨어를 열어 메뉴 바에서 파일  열기 버튼을 클릭하고 로컬에 저장된 “단일 품목 상자 디팔레타이징” 솔루션 중의 “Viz-Single-Case Depalletizing” 폴더를 선택하세요.

open viz project

시나리오 물체 구성

시나리오 모델 구성의 목적은 실제 시나리오 복원을 통해 사용자가 로봇 모션 경로를 계획하는 데 도움이 주는 데에 있습니다. 구체적인 수행 방법은 시나리오 물체 구성 내용을 참조하십시오.

피킹 가능한 것을 바탕으로 실제 작업 환경을 더욱 정확하게 재현해야 니다. 이 솔루션의 시나리오 물체에 대한 설정은 다음과 같습니다.

config scene objects

말단장치 구성

말단장치를 구성하는 목적은 3D 시뮬레이션 공간에서 말단장치의 모델을 표시하고 충돌 감지에 사용하는 것입니다. 구체적인 작업 방법은 말단장치 구성 내용을 참조하십시오.

대상 물체와 말단장치 연결

말단장치를 구성한 후 대상 물체 편집기에서 대상 물체와 피킹에 사용될 말단장치와 연결해야 합니다. 이렇게 구성된 말단장치는 비로소 피킹에 사용될 수 있습니다. 이 솔루션에서 피킹할 대상 물체는 종이 상자이고, 매칭을 위해 대상 물체 모델이 필요하지 않습니다. 따라서 대상 물체 편집기에서 포인트 클라우드 매칭 모델이 없는 대상 물체(기본적인 대상 물체) 하나만 생성하면 됩니다.

  1. 프로젝트 리소스 트리에서 대상 물체 노드 아래에서 설정 버튼을 클릭하여 대상 물체 편집기를 엽니다.

  2. 구성 워크플로 선택 창에서 매칭 없는 인식 카드를 선택합니다. 소프트웨어는 기본적인 대상 물체 하나를 자동으로 생성하고 기본적인 픽 포인트를 자동으로 추가합니다.

  3. 픽 포인트 설정 탭 중의 피킹 구성 영역에서 Mech-Viz 중의 모든 말단장치 활성화 버튼을 선택하여 말단장치를 대상 물체와 연결시킵니다.

충돌 모델 단순화

말단징치를 만들 때 말단장치 충돌 모델 생성에 걸릴 시간을 절약하기 위해 생성한 볼록 껍질이 원본 모델의 모든 세부 사항을 완벽하게 복제하는 것이 항상 필요한 것은 아닙니다. 모델의 특정 요구 사항에 따라 일부 세부 정보를 생략할 수도 있습니다.

단순화 방안: 그리퍼와 로봇이 연결되는 부분의 나사 구멍과 기타 디테일을 생략할 수 있습니다. 진공 그리퍼 모델은 직육면체였기 때문에 여기서는 단순화할 필요가 없습니다.

아래 그림은 모델 단순화 예시 그림입니다.

simplify tool model

작업 흐름 구축

“단일 품목 상자 디팔레타이징” 솔루션에 내장된 Mech-Viz 프로젝트 “Viz-Single-Case Depalletizing”에는 작업 흐름이 이미 구축되었습니다. 작업 흐름 중의 모든 스텝에 관한 설명은 다음과 같습니다.

스텝 설명 기능
define home

카메라 이미지 캡처 위치를 정의합니다. 카메라 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 ​​의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다.
로봇을 카메라 이미지 캡처 위치로 수동으로 이동하고 이때 로봇의 포즈를 스텝에 기록합니다.

시뮬레이션에만 사용되고 로봇에 전송되지 않습니다.

set branch

메시지 분기

로봇 프로그램이 이미지 캡처를 시작하라는 명령어를 보낼 때까지 기다립니다.

visual recognition

Mech-Vision 비전 결과 호출

/

check vision result

비전 결과가 있는지를 체크하기

/

relative move 1

피킹 시의 접근 포인트를 계획하기

로봇에 전송합니다.

vision move

픽 포인트를 계획하기

로봇에 전송합니다.

relative move 2

피킹 시의 출발 포인트를 계획하기

로봇에 전송합니다.

define immediate point

중간점을 지정하기

시뮬레이션에만 사용되고 로봇에 전송되지 않습니다.

진공 그리퍼 옵셋 전략 구성

'비전 이동' 스텝에서는 현장 피킹 요구 사항에 따라 진공 그리퍼 옵셋 전략을 구성할 수 있습니다.

sucker offset setting

충돌 감지 파라미터 설정

Mech-Viz는 충돌 감지 기능을 통해 로봇 이동 과정에서 불필요한 충돌이 발생하지 않도록 할 수 있습니다. 이 애플리케이션에서는 포인트 클라우드 충돌 감지 기능을 활성화해야 합니다. 구체적인 작업은 충돌 감지 구성 내용을 참조하십시오.

  • 이 애플리케이션에서는포인트 클라우드 충돌 감지 기능을 활성화해야 하며 충돌 감지에 참여하는 포인트 클라우드의 포맷은 '포인트 클라우드 큐브’입니다. 포인트 클라우드 충돌 감지 기능은 주로 그리퍼와 포인트 클라우드 간의 충돌을 감지하는 데 사용됩니다. 실제 요구 사항에 따라 로봇 관절과 포인트 클라우드 간의 충돌 감지를 활성화하여 계획 시간을 줄일 수 있습니다.

  • 대상 물체 충돌 감지 기능은 주로 피킹된 대상 물체와 시나리오 물체 간의 충돌을 감지하는 데 사용됩니다. 종이 상자를 대상 물체로 하는 응용 시나리오에서는 일반적으로 이 기능을 활성화하지 않습니다.

  • 일반적인 문제 및 해결 방법: 문제 1을 활성화하고 작업 현장의 포인트 클라우드 상황에 따라 Z 방향 포인트 클라우드 제거 범위 확장X/Y방향 포인트 클라우드 제거 범위 확장 파라미터를 설정해야 합니다. X/Y방향 포인트 클라우드 제거 범위 확장 파라미터의 값은 너무 크게 설정해서는 안 됩니다. 그렇게 하지 않으면 피킹 중에 진공 그리퍼가 인접한 상자와 접촉할 수도 있습니다.

collision detection

시뮬레이션 실행

툴 바에서 시뮬레이션 버튼을 클릭하여 완료된 Mech-Viz 프로젝트를 시뮬레이션합니다.

simulation

시뮬레이션 테스트

종이 상자를 파렛트에 배치하고 Mech-Viz 소프트웨어를 사용하여 피킹 과정을 시뮬레이션합니다. 피킹이 성공될 때마다 시뮬레이션 중에 성공적으로 피킹된 상자를 수동으로 제거하고 시뮬레이션을 반복하여 한 층의 상자에 대해 테스트합니다. 모든 상자를 성공적으로 피킹할 수 있으면 비전 프로젝트가 성공적으로 빌드되었다고 판단할 수 있습니다.

simulation

로봇 파라미터 구성 및 로봇 프로그램 작성

ABB 표준 인터페이스 예제 프로그램 MM_S9_Viz_RunInAdvance는 거의 이 솔루션에 필요한 모든 기능을 사용할 수 있습니다. 이 예제 프로그램을 기반으로 수정할 수 있습니다. 예제 프로그램 MM_S9_Viz_RunInAdvance에 관한 상세한 설명은 예제 프로그램 설명 내용을 참조하십시오.

예제 프로그램을 기반으로 로봇 측에서 다음과 같은 작업을 수행하십시오.

  1. 티치 펜던트에 Home포인트(원점)을 설정합니다.

    로봇 TCP를 티칭된 원점으로 이동시킵니다. 원점은 대상 물체나 주변 설비와 멀리 떨어지고 카메라 시야를 거리지 말아야 합니다. 완료된 후 그 때의 로봇 포즈를 변수 home에 기록합니다.

  2. IPC의 IP 주소와 포트 번호를 지정합니다. MM_INIT_SKT 명령어 중의 IP 주소와 포트 번호를 IPC 실제 IP 주소와 포트 번호로 수정합니다.

    수정 전 수정 후(예시)
        MM_Init_Socket "127.0.0.1",50000,300;
        MM_Init_Socket "192.168.10.111",50000,300;
  3. 티치 펜던트에 로봇의 이미지 캡처 위치를 설정합니다.

    로봇을 설정된 카매라 이미지 캡처의 위치로 이동시킵니다. 이미지 캡처 위치는 카메라가 이미지를 캡처할 때 로봇이 있는 위치를 ​​의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다. 다음으로 현재 로봇의 포즈를 camera_capture 변수에 기록합니다.

  4. DO 포트 신호를 설정하여 진공 그리퍼를 열어 대상 물체를 피킹하도록 합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.

    수정 전 수정 후(예시)
        !add object grasping logic here, such as "setdo DO_1, 1;"
        Stop;
        !add object grasping logic here, such as "setdo DO_1, 1;"
        setDo do0, 1;
        !Stop;
  5. 티치 펜던트에 배치 중간점과 배치 포인트를 추가합니다.

    로봇을 추가된 중간점과 배치 포인트로 이동시켜 로봇의 포즈를 drop_waypoint 및 drop 변수에 기록합니다.

  6. DO 포트 신호를 설정하여 진공 그리퍼를 닫아 대상 물체를 배치하도록 합니다. DO 명령어는 현장에서 실제 사용되는 DO 포트 번호에 따라 설정해야 합니다.

    수정 전 수정 후(예시)
        !add object releasing logic here, such as "setdo DO_1, 0;"
        Stop;
        !add object releasing logic here, such as "setdo DO_1, 0;"
        setDo do0, 0;
        setDo do4, 1;
        Stop;

로봇 픽 앤 플레이스 효과 테스트

다음과 같은 스텝을 수행하여 로봇의 픽 앤 플레이스 효과를 테스트합니다.

  1. 티치 펜던트에서 디버그  PP를 특정 루틴으로 버튼을 클릭합니다.

  2. MM_S9_Viz_RunInAdvance를 선택한 후 확인 버튼을 클릭합니다.

  3. 티치 펜던트의 상태 표시줄에 모터가 전원 켜짐 상태로 표시될 때까지 전원 켜기 버튼을 손으로 가볍게 누르고 있습니다.

  4. 티치 펜던트에 있는 실행 버튼을 클릭하십시오.

만약에 로봇은 성공적으로 종이 상자를 피킹하고 배치할 수 있다면 로봇 프로그램은 요구 사항을 충족할 수 있음을 나타냅니다.

참고: 수정된 샘플 프로그램

최종적으로 수정된 샘플 프로그램은 다음과 같습니다.

PROC Sample_9()
    !set the acceleration parameters
    AccSet 50, 50;
    !set the velocity parameters
    VelSet 50, 1000;
    !move to robot home position
    MoveAbsJ home\NoEOffs,v500,fine,gripper1;
    !initialize communication parameters (initialization is required only once)
    MM_Init_Socket "192.168.10.111",50000,300;
    !move to image-capturing position
    MoveL camera_capture,v1000,fine,gripper1;
    !open socket connection
    MM_Open_Socket;
    !trigger Mech-Viz project
    MM_Start_Viz 2,snap_jps;
    !set branch exit port
    MM_Set_Branch 1,1;
LOOP:
    !get planned path, 1st argument (1) means getting pose in JPs
    MM_Get_VizData 1, pose_num, vis_pose_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
        Stop;
    ENDIF
    !save waypoints of the planned path to local variables one by one
    MM_Get_JPS 1,jps{1},label{1},speed{1};
    MM_Get_JPS 2,jps{2},label{2},speed{2};
    MM_Get_JPS 3,jps{3},label{3},speed{3};
    !follow the planned path to pick
    !move to approach waypoint of picking
    MoveAbsJ jps{1},v500,fine,gripper1;
    !move to picking waypoint
    MoveAbsJ jps{2},v300,fine,gripper1;
    !add object grasping logic here, such as "setdo DO_1, 1;"
    setDo do0, 1;
    !Stop;
    !trigger Mech-Viz project but not to trigger camera capturing
    MM_Start_Viz 2,snap_jps;
    !move to departure waypoint of picking
    MoveAbsJ jps{3},v500,fine,gripper1;
    !move to intermediate waypoint of placing
    MoveJ drop_waypoint,v500,z50,gripper1;
    !move to approach waypoint of placing
    MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
    !set branch exit port and trigger camera capturing when robot moves out of camera’s field of view
    MM_Set_Branch 1,1;
    !move to placing waypoint
    MoveL drop,v300,fine,gripper1;
    !add object releasing logic here, such as "setdo DO_1, 0;"
    !Stop;
    setDo do0, 0;
    setDo do4, 1;
    !move to departure waypoint of placing
    MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
    setDo do4, 0;
    !move back to robot home position
    MoveAbsJ home\NoEOffs,v500,fine,gripper1;
    GOTO LOOP;
END_LOOP:
    !close socket connection
    MM_Close_Socket;
ENDPROC
ENDMODULE

이로써 '3D 비전 가이드 로봇으로 단일 품목의 상자 디팔레타이징' 솔루션이 성공적으로 배포되었습니다.

저희는 귀하의 개인 정보를 소중하게 생각합니다.

당사 웹사이트는 귀하에게 최상의 경험을 제공하기 위해 쿠키를 사용합니다. "모두 수락"을 클릭하시는 경우, 귀하는 사의 쿠키 사용에 동의하게 됩니다. "모두 거부"를 클릭하시는 경우, 귀하가 이 웹사이트를 방문할 때 추적되거나 기억되지 않도록 하기 위해 단일 쿠키가 사용됩니다.