ABB 피킹 샘플 프로그램

이 부분에서는 간단한 인식과 이동을 완성하는 로봇 샘플 프로그램을 소개합니다.

전제

  1. 이 부분 내용을 시작하기 전에 ABB 표준 인터페이스 통신 구성 작업을 완료했는지 확인하십시오.

  2. ABB 캘리브레이션 프로세스 내용을 참조하여 외부 파라미터 캘리브레이션 작업을 완료했는지 확인하십시오.

  3. Mech-Vision 및 Mech-Viz 프로젝트를 구축했고 해당 프로젝트를 *자동 로드하기 *로 설정했는지 확인하십시오.

  4. 로봇의 TCP가 이미 정의되었는지 확인하십시오.

  5. 디버깅 중 충돌을 피하기 위해 로봇의 속도를 낮첬는지 확인하십시오.

샘플 프로그램 설명

간단한 피킹 및 배치를 완성하는 로봇 샘플 프로그램은 Mech-Vision 및 Mech-Viz 소프트웨어의 설치 디렉터리의 Mech-Center/Robot_Interface/ABB/sample 폴더에 있습니다.

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

PROC Sample_1()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Vision
    ! 2022-5-1
    !**********************************************************
    AccSet 100, 100;
    VelSet 100, 5000;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;!move robot home position
    MoveL camera_capture,v500,fine,Gripp1TCP;
    PoseNum:=0;
    !Set ip address of IPC
    MM_Init_Socket "127.0.0.1",50000,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run vision project
    MM_Start_Vis 1,0,2,snap_jps;
    WaitTime 1;
    MM_Get_VisData 1,PoseNum,Status;
    IF Status<>1100 THEN
        Stop;
    ENDIF
    MM_Get_Pose 1,pickpoint,label,speed;
    MM_Close_Socket;
    MoveL RelTool(pickpoint,0,0,-100),v1000,fine,Gripp1TCP;
    MoveL pickpoint,v300,fine,Gripp1TCP;
    Stop;
    !Add object grasping logic here.
    MoveL Offs(pickpoint,0,0,100), v1000, fine, Gripp1TCP;
    MoveL waypoint1,v1000,z50,Gripp1TCP;
    MoveL RelTool(drop,0,0,-100),v1000,fine,Gripp1TCP;
    MoveL drop,v300,fine,Gripp1TCP;
    Stop;
    !Add object releasing logic here.
    MoveL Offs(drop,0,0,100), v1000, fine, Gripp1TCP;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;
    RETURN ;
ENDPROC

프로그램 논리 해석

  1. 로봇을 Home 포인트로 이동합니다.

  2. 카메라 사진 캡처 위치로 이동합니다.

  3. MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.

  4. MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.

  5. Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model를 추가하여 설정할 수 있습니다.

  6. MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.

  7. 1초를 기다립니다. Eye To Hand 모드에서 MM_Start_Vis 와 MM_Get_VisData 사이에 이동 스텝(MoveL 혹은 MoveJ) 이 있으면 여기서 기다릴 필요가 없습니다. Eye-In-Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 움직이지 않고 1초 동안 기다려야 합니다.

  8. Mech-Vision 프로젝트에서 계산한 포즈를 획득합니다.

  9. 획득된 포즈의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 사용자는 로봇을 정지하는 등의 조치를 취해야 합니다.

  10. 획득한 TCP 포즈 데이터를 지정된 변수에 덤프합니다.

  11. MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.

  12. 픽 포인트로 이동합니다.

  13. 픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.

  14. 고정된 배치 포인트로 이동합니다.

사용자 정의 부분

  • TCP를 정의하기

    Gripp1TCP: 사용자가 tooldata 중 Gripp1TCP의 값을 수정하면 TCP를 조정할 수 있습니다.

  • “Home 포인트”(원점)를 정의하기

    MoveAbsJ Home. 사용자가 Home 포인트(원점)의 포즈를 Home 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 사진 캡처 위치를 설정하기

    MoveL camera_capture. 사용자가 사진 캡처 포인트의 포즈를 camera_capture 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 중간점을 설정하기

    MoveL waypoint1. 중간점은 피킹 포즈와 배치 포즈 사이에 위치하며, 피킹 포즈에서 배치 포즈로 이동할 때 로봇이 주변 물체와 충돌하지 않도록 하기 위해 사용됩니다.

  • 티치 펜던트를 통해 배치 포인트를 설정하기

    MoveL drop. 사용자가 배치 포즈를 drop 변수에 기록해야 합니다.

  • 피킹 전후, 배치 전후의 접근 거리를 정의하기

    • 피킹의 접근 웨이포인트

      MoveL RelTool(pickpoint,0,0,-100): 픽 포인트에서부터 말단장치 Z 축의 부방향을 따라 100mm 이동합니다. 사용자가 접근 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

    • 피킹의 출발 웨이포인트

      MoveL Offs(pickpoint,0,0,100): 픽 포인트에서부터 물체 좌표계 Z 축의 정방향을 따라 100mm 이동합니다. 사용자가 출발 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

    • 배치의 접근 웨이포인트

      MoveL RelTool(drop,0,0,-100): 배치 포인트에서부터 단장치 Z 축 부방향을 따라 100mm 이동합니다. 사용자가 접근 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

    • 배치의 출발 웨이포인트

      MoveL Offs(drop,0,0,100): 배치 포인트에서부터 물체 좌표계 Z 축의 정방향을 따라 100mm 이동합니다. 사용자가 출발 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

  • 그리퍼 제어 로직 추가

    피킹 및 배치 포인트로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 로직을 추가하십시오.

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

PROC Sample_2()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Viz
    ! 2022-5-1
    !**********************************************************
    AccSet 100, 100;
    VelSet 100, 5000;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;!move robot home position
    MoveL camera_capture,v500,fine,Gripp1TCP;
    PoseNum:=0;
    !Set ip address of IPC
    MM_Init_Socket "127.0.0.1",50000,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run Viz project
    MM_Start_Viz 1,snap_jps;
    WaitTime 0.1;
    !set branch exitport
    MM_Set_Branch 1,1;
    !get planned path
    MM_Get_VizData 2, PoseNum, VisPosNum, MM_Status;
    IF MM_Status <> 2100 THEN
        Stop;
    ENDIF
    FOR i FROM 1 TO PoseNum DO
        count:=i;
        MM_Get_Pose count,P{count},label{count},speed{count};
    ENDFOR
    !follow the planned path to pick
    FOR j FROM 1 TO PoseNum DO
        count:=j;
        MoveL p{count},v1000,fine,Gripp1TCP;
        IF count=VisPosNum THEN
            Stop;
            !add object grasping logic here
        ENDIF
    ENDFOR
    MM_Close_Socket;
    !go to drop location
    MoveL RelTool(drop,0,0,-100),v1000,z50,Gripp1TCP;
    MoveL drop,v500,fine,Gripp1TCP;!drop point
    stop;
    !add object releasing logic here
    MoveL Offs(drop,0,0,100), v1000, fine, Gripp1TCP;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;
    RETURN ;
ENDPROC

프로그램 논리 해석

이 예시에서 Mech-Viz는 비전 가이드에 따라 로봇이 물체를 피킹하고 배치하도록 합니다.

  1. 로봇을 Home 포인트로 이동합니다.

  2. 카메라 사진 캡처 위치로 이동합니다.

  3. MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.

  4. MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.

  5. Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model 함수를 호출하면 됩니다.

  6. Mech-Viz 프로젝트 실행을 트리거합니다.

  7. Mech-Viz 프로젝트에서 계획된 이동 경로를 획득합니다.

  8. 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 사용자는 로봇을 정지하는 등의 조치를 취해야 합니다.

  9. for 루프를 사용하여 획득한 포즈를 변수에 저장합니다.

  10. 루프를 사용하여 Mech-Viz 계획된 경로를 따라 로봇을 이동하여 피킹 작업을 완료합니다.

  11. MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.

  12. 픽 포인트와 배치 포인트 사이의 중간 영역으로 이동합니다.

  13. 배치 포인트로 이동하고 물체를 배치합니다.

사용자 정의 부분

  • TCP를 정의하기

    Gripp1TCP: tooldata 중 Gripp1TCP의 값을 수정하면 TCP를 조정할 수 있습니다.

  • “Home 포인트”(원점)를 정의하기

    MoveAbsJ Home. 사용자가 Home 포인트(원점)의 포즈를 Home 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 사진 캡처 위치를 설정하기

    MoveL camera_capture. 사용자가 사진 캡처 포인트의 포즈를 camera_capture 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 중간점을 설정하기

    MoveL waypoint1. 중간점은 피킹 포즈와 배치 포즈 사이에 위치하며, 피킹 포즈에서 배치 포즈로 이동할 때 로봇이 주변 물체와 충돌하지 않도록 하기 위해 사용됩니다.

  • 티치 펜던트를 통해 배치 포인트를 설정하기

    MoveL drop. 사용자가 배치 포즈를 drop 변수에 기록해야 합니다.

  • 그리퍼 제어 로직 추가

    피킹 및 배치 포인트로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 로직을 추가하십시오.

  • 피킹/배치 전후의 접근 거리를 정의하기

    • 배치의 접근 웨이포인트

      MoveL RelTool(drop,0,0,-100): 배치 포인트에서부터 단장치 Z 축 부방향을 따라 100mm 이동합니다. 사용자가 접근 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

    • 배치의 출발 웨이포인트

      MoveL Offs(drop,0,0,100): 배치 포인트에서부터 물체 좌표계 Z 축의 정방향을 따라 100mm 이동합니다. 사용자가 출발 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

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

PROC Sample_3()
    !**********************************************************
    ! FUNCTION:Eye to Hand simple pick and place with Mech-Vision Path Planning Step
    ! 2023-1-10
    !**********************************************************
    AccSet 100, 100;
    VelSet 100, 5000;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;!move robot home position
    MoveL camera_capture,v500,fine,Gripp1TCP;
    PoseNum:=0;
    !Set ip address of IPC
    MM_Init_Socket "127.0.0.1",50000,300;
    WaitTime 0.1;
    MM_Open_Socket;
    !Set vision recipe
    MM_Switch_Model 1,1;
    !Run vision project
    MM_Start_Vis 1,0,2,snap_jps;
    WaitTime 1;
    !get planned path from Mech-Vision Path Planning Step
    MM_Get_VisPath 1,2,PoseNum,VisPosNum,Status;
    IF Status<>1103 THEN
        Stop;
    ENDIF
    FOR i FROM 1 TO PoseNum DO
        count:=i;
        MM_Get_Pose count,P{count},label{count},speed{count};
    ENDFOR
    !follow the planned path to pick
    FOR j FROM 1 TO PoseNum DO
        count:=j;
        MoveL p{count},v1000,fine,Gripp1TCP;
        IF count=VisPosNum THEN
            Stop;
            !add object grasping logic here
        ENDIF
    ENDFOR
    MM_Close_Socket;
    !go to drop location
    MoveL RelTool(drop,0,0,-100),v1000,z50,Gripp1TCP;
    MoveL drop,v500,fine,Gripp1TCP;!drop point
    stop;
    !add object releasing logic here
    MoveL Offs(drop,0,0,100), v1000, fine, Gripp1TCP;
    MoveAbsJ Home\NoEOffs,v3000,fine,Gripp1TCP;
    RETURN ;
ENDPROC

프로그램 논리 해석

  1. 로봇을 Home 포인트로 이동합니다.

  2. 카메라 사진 캡처 위치로 이동합니다.

  3. MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.

  4. MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.

  5. Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model를 추가하여 설정할 수 있습니다.

  6. MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.

  7. MM_Get_VisPath를 호출하여 Mech-Vision “경로 계획” 스텝에서 계획된 이동 경로를 획득합니다.

  8. 획득된 경로의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 로봇을 정지시켜야 하며 사용자는 조치를 취해야 합니다.

  9. for 루프를 사용하여 획득한 웨이포인트 포즈를 변수에 저장합니다.

  10. 루프를 사용하여 계획된 경로를 따라 로봇을 이동하고 피킹 작업을 수행합니다.

  11. MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.

  12. 픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.

  13. 고정된 배치 포인트로 이동합니다.

사용자 정의 부분

  • TCP를 정의하기

    Gripp1TCP: tooldata 중 Gripp1TCP의 값을 수정하면 TCP를 조정할 수 있습니다.

  • “Home 포인트”(원점)를 정의하기

    MoveAbsJ Home. 사용자가 Home 포인트(원점)의 포즈를 Home 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 사진 캡처 위치를 설정하기

    MoveL camera_capture. 사용자가 사진 캡처 포인트의 포즈를 camera_capture 포즈에 기록해야 합니다.

  • 티치 펜던트를 통해 중간점을 설정하기

    MoveL waypoint1. 중간점은 피킹 포즈와 배치 포즈 사이에 위치하며, 피킹 포즈에서 배치 포즈로 이동할 때 로봇이 주변 물체와 충돌하지 않도록 하기 위해 사용됩니다.

  • 티치 펜던트를 통해 배치 포인트를 설정하기

    MoveL drop. 사용자가 배치 포즈를 drop 변수에 기록해야 합니다.

  • 그리퍼 제어 로직 추가

    피킹 및 배치 포인트로 이동할 때 그리퍼를 켜고 끄는 그리퍼 제어 로직을 추가하십시오.

  • 피킹/배치 전후의 접근 거리를 정의하기

    • 배치의 접근 웨이포인트

      MoveL RelTool(drop,0,0,-100): 배치 포인트에서부터 단장치 Z 축 부방향을 따라 100mm 이동합니다. 사용자가 접근 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

    • 배치의 출발 웨이포인트

      MoveL Offs(drop,0,0,100): 배치 포인트에서부터 물체 좌표계 Z 축의 정방향을 따라 100mm 이동합니다. 사용자가 출발 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.

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

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