ABB 피킹 샘플 프로그램
이 부분에서는 간단한 인식과 이동을 완성하는 로봇 샘플 프로그램을 소개합니다.
전제
-
이 부분 내용을 시작하기 전에 ABB 표준 인터페이스 통신 구성 작업을 완료했는지 확인하십시오.
-
ABB 캘리브레이션 프로세스 내용을 참조하여 외부 파라미터 캘리브레이션 작업을 완료했는지 확인하십시오.
-
Mech-Vision 및 Mech-Viz 프로젝트를 구축했고 해당 프로젝트를 *자동 로드하기 *로 설정했는지 확인하십시오.
-
로봇의 TCP가 이미 정의되었는지 확인하십시오.
-
디버깅 중 충돌을 피하기 위해 로봇의 속도를 낮첬는지 확인하십시오.
샘플 프로그램 설명
간단한 피킹 및 배치를 완성하는 로봇 샘플 프로그램은 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
프로그램 논리 해석
-
로봇을 Home 포인트로 이동합니다.
-
카메라 사진 캡처 위치로 이동합니다.
-
MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.
-
Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model를 추가하여 설정할 수 있습니다.
-
MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.
-
1초를 기다립니다. Eye To Hand 모드에서 MM_Start_Vis 와 MM_Get_VisData 사이에 이동 스텝(MoveL 혹은 MoveJ) 이 있으면 여기서 기다릴 필요가 없습니다. Eye-In-Hand 모드에서는 카메라가 사진 촬영을 마칠 때까지 움직이지 않고 1초 동안 기다려야 합니다.
-
Mech-Vision 프로젝트에서 계산한 포즈를 획득합니다.
-
획득된 포즈의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 사용자는 로봇을 정지하는 등의 조치를 취해야 합니다.
-
획득한 TCP 포즈 데이터를 지정된 변수에 덤프합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.
-
픽 포인트로 이동합니다.
-
픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.
-
고정된 배치 포인트로 이동합니다.
사용자 정의 부분
-
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는 비전 가이드에 따라 로봇이 물체를 피킹하고 배치하도록 합니다.
-
로봇을 Home 포인트로 이동합니다.
-
카메라 사진 캡처 위치로 이동합니다.
-
MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.
-
Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model 함수를 호출하면 됩니다.
-
Mech-Viz 프로젝트 실행을 트리거합니다.
-
Mech-Viz 프로젝트에서 계획된 이동 경로를 획득합니다.
-
상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 사용자는 로봇을 정지하는 등의 조치를 취해야 합니다.
-
for 루프를 사용하여 획득한 포즈를 변수에 저장합니다.
-
루프를 사용하여 Mech-Viz 계획된 경로를 따라 로봇을 이동하여 피킹 작업을 완료합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.
-
픽 포인트와 배치 포인트 사이의 중간 영역으로 이동합니다.
-
배치 포인트로 이동하고 물체를 배치합니다.
사용자 정의 부분
-
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
프로그램 논리 해석
-
로봇을 Home 포인트로 이동합니다.
-
카메라 사진 캡처 위치로 이동합니다.
-
MM_Init_Socket을 호출하여 통신에 대해 초기화 설정을 합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 설정합니다.
-
Mech-Vision 프로젝트 레시피를 설정하려면 여기에서 MM_Switch_Model를 추가하여 설정할 수 있습니다.
-
MM_Start_Vis는 Mech-Vision 프로젝트가 실행되도록 합니다.
-
MM_Get_VisPath를 호출하여 Mech-Vision “경로 계획” 스텝에서 계획된 이동 경로를 획득합니다.
-
획득된 경로의 상태 코드가 정상인지 판단하고, 상태 코드 반환이 비정상인 경우 로봇을 정지시켜야 하며 사용자는 조치를 취해야 합니다.
-
for 루프를 사용하여 획득한 웨이포인트 포즈를 변수에 저장합니다.
-
루프를 사용하여 계획된 경로를 따라 로봇을 이동하고 피킹 작업을 수행합니다.
-
MM_Open_Socket을 호출하여 TCP/IP 연결을 해제합니다.
-
픽 포인트와 배치 포인트 사이의 안전한 지역으로 이동합니다.
-
고정된 배치 포인트로 이동합니다.
사용자 정의 부분
-
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 이동합니다. 사용자가 출발 과정에서 충돌이 발생하지 않도록 하기 위해 옵셋 값을 설정해야 합니다.
-