샘플 프로그램1:MM_S1_Vis_Basic

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

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

프로그램 소개

기능 설명

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

파일 경로

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

필요한 프로젝트

Mech-Vision 프로젝트

사용 조건

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

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

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

프로그램 설명

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

 1. MJOINT(POINTC(264.2282,-217.9533,359.1164,-83.989165,1.303953,176.0864,CFG1,0,0,1), v100perc, fine, tool0);
 2. MM_Init_Socket(1);
 3. CALL: MM_Open_Socket();
 4. CALL: MM_Status := MM_Switch_Model(1, 1);
 5. CALL: MM_Status := MM_Start_Vis(1, 0, 1, MM_J);
 6. CALL: MM_Status, MM_LastData, MM_POS_NUM := MM_Get_VisData(1);
 7. IF MM_Status <> 1100 THEN
 8.     STOPPROG;
 9. END_IF;
10. CALL: MM_Pose[1], MM_Label[1], MM_Tool[1] := MM_Get_Pose(1);
11. MM_Pre := MM_Pose[1];
12. MM_Pre.z := MM_Pose[1].z+100;
13. MLIN(MM_Pre, v500, fine, tool0);
14. MLIN(MM_Pose[1], v500, fine, tool0);
15. MLIN(MM_Pre, v500, fine, tool0);
16. CALL: MM_Close_Socket();

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

워크플로 코드와 설명

카메라 이미지 캡처 위치로 이동하기

MJOINT(POINTC(264.2282,-217.9533,359.1164,-83.989165,1.303953,176.0864,CFG1,0,0,1), v100perc, fine, tool0);
  • MJOINT: 로봇의 관절 이동 명령으로, 로봇 관절이 지정된 경로를 따라 목표 위치까지 이동함을 나타냅니다.

  • POINTC: 로봇이 이동할 목표 위치를 지정하며, 이는 카메라 사진 캡처 위치를 의미합니다. 사진 캡처 포인트는 카메라가 이미지를 획득할 때 로봇의 위치를 ​​의미합니다. 이 위치에서는 로봇 팔이 카메라 시야를 가리지 않아야 합니다.

  • v100perc: 로봇 이동 속도의 상한을 지정합니다.

  • fine: 로봇 이동의 회전 반경을 지정합니다.

  • tool0: 이동 시 로봇이 사용하는 말단장치.

따라서 전체 명령은 로봇이 관절 이동 방식으로 촬영 지점까지 정확하게 이동함을 나타냅니다.

통신 파라미터 초기화

MM_Init_Socket(1)

로봇은 MM_Init_Socket 명령어를 통해 IPC와 통신하기 위한 소켓 번호를 설정합니다.

사용자는 실제 상황에 따라 여기의 소켓 번호를 수정해야 합니다.

통신 구축

CALL: MM_Open_Socket();

로봇은 MM_Open_Socket명령어를 통해 비전 시스템과 TCP 프로토콜 통신 연결을 설정합니다.

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

CALL: MM_Status := MM_Switch_Model(1, 1);
  • MM_Switch_Model: Mech-Vision파라미터 레시피를 전환하는 명령어.

  • 첫 번째 1: Mech-Vision 프로젝트 번호.

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

  • status: 이 변수는 명령어 실행 상태 코드를 저장하는 것입니다.

따라서, 이 명령어는 Mech-Vision프로젝트 1의 파라미터 레시피를 번호 1인 파라미터 레시피로 전환하는 것을 나타냅니다.

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

CALL: MM_Status := MM_Start_Vis(1, 0, 1, MM_J);
  • MM_Start_Vis:Mech-Vision 프로젝트 실행을 트리거하는 명령어.

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

  • 0: 이 Mech-Vision 프로젝트는 모든 비전 포인토를 반환할 것으로 예상됩니다.

  • 1: 현재 로봇의 관절 각도와 플랜지 포즈를 Mech-Vision 프로젝트에 입력합니다.

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

  • status: 이 변수는 명령어 실행 상태 코드를 저장하는 것입니다.

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

비전 결과 획득하기

CALL: MM_Status, MM_LastData, MM_POS_NUM := MM_Get_VisData(1);
  • MM_Get_VisData: 비전 결과를 획득하는 명령어.

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

  • status: 이 변수는 명령어 실행 상태 코드를 저장하는 것입니다.

  • MM_LastData: 모든 비전 포인트를 이미 가져왔는지 여부를 나타냅니다.

  • MM_POS_NUM: 획득한 비전 포인트의 개수를 저장하는 것입니다.

따라서, 이 명령어는 로봇이 Mech-Vision 프로젝트 1이 반환한 비전 결과를 획득하는 명령어입니다.

반환된 비전 결과는 로봇의 메모리에 저장되므로, 사용자는 직접적으로 비전 결과를 얻을 수 없으며, 이후 "비전 결과 덤프"을 통해서만 접근할 수 있습니다.
IF MM_Status <> 1100 THEN
	STOPPROG;
END_IF;

상태 코드 MM_Status가 1100일 경우 로봇이 모든 비전 결과를 성공적으로 획득합니다. 그렇지 않으면 비전 시스템이 오류사 발생합니다. 사용자는 구체적인 비정상 상태 코드에 따라 적절한 처리를 수행할 수 있습니다.

비전 결과를 덤프하기

CALL: MM_Pose[1], MM_Label[1], MM_Tool[1] := MM_Get_Pose(1);
  • MM_GET_POSE:비전 결과를 덤프하는 명령어.

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

  • MM_Pose[1]: 첫 번째 비전 포인트의 말단장치 포즈, 즉 피킹 포인트의 말단장치 포즈를 저장합니다.

  • MM_Label[1]: 첫 번째 비전 포인트의 레이블을 저장하는 것입니다.

  • MM_Tool[1]: 첫 번째 비전 포인트의 말단장치 번호를 저장하는 것입니다.

따라서, 이 명령어는 첫 번째 비전 포인트의 말단장치 포즈, 라벨 및 말단장치 번호를 각각 지정된 변수로 덤프하는 명령어입니다.

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

MM_Pre := MM_Pose[1];
MM_Pre.z := MM_Pose[1].z+100;
MLIN(MM_Pre, v500, fine, tool0);
  • MM_Pre := MM_Pose[1]: 피킹 포인트의 위치/포즈(MM_Pose[1])를 MM_Pre 변수에 할당합니다.

  • MM_Pre.z := MM_Pose[1].z+100: MM_Pre 변수의 z축 좌표를 100mm 증가시킵니다. 즉, 피킹 포인트 상방 100mm 위치의 포즈를 MM_Pre 변수에 할당합니다.

  • MLIN(MM_Pre, v500, fine, tool0): 로봇의 직선 이동 명령으로, 로봇이 직선 이동 방식으로 MM_Pre가 지정한 위치까지 이동함을 나타냅니다.

따라서 위 코드는 로봇이 피킹 포인트 상방 100mm 위치까지 직선 이동함을 나타냅니다.

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

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

MLIN(MM_Pose[1], v500, fine, tool0);

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

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

MLIN(MM_Pre, v500, fine, tool0);

로봇이 피킹 웨이 포인트 위로 100mm 이동합니다. 즉 피킹 시 출발(departure) 웨이 포인트로 이동합니다.

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

통신을 종료하기

CALL: MM_Close_Socket();

로봇은 MM_Close_Socket 명령어를 통해 비전 시스템과 TCP 프로토콜 통신 연결을 끊깁니다.

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

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

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

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