샘플 프로그램1:MM_S1_Vis_Basic
프로그램 소개
기능 설명 |
로봇이 Mech-Vision 프로젝트 실행을 트리거하고 비전 결과 획득하여 피킹 및 배치 작업을 수행합니다. |
||
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉토리로 이동하여
|
||
필요한 프로젝트 |
Mech-Vision 프로젝트 |
||
사용 전제 조건 |
|
이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는 MM_S1_Vis_Basic 샘플 프로그램의 코드와 관련 설명입니다.
MODULE MM_S1_Vis_Basic
!--------------------------------------------------------------
! FUNCTION: trigger Mech-Vision project and get vision result
! Mech-Mind, 2023-12-25
!-------------------------------------------------------------
!define local num variables
LOCAL VAR num pose_num:=0;
LOCAL VAR num status:=0;
LOCAL VAR num label:=0;
LOCAL VAR num toolid:=0;
!define local joint&pose variables
LOCAL CONST jointtarget home:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL CONST jointtarget snap_jps:=[[0,0,0,0,90,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget camera_capture:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget pick_waypoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget pickpoint:=[[500,100,300],[0.00226227,-0.99991,-0.00439596,0.0124994],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget drop_waypoint:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
LOCAL PERS robtarget drop:=[[302.00,0.00,558.00],[0,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
!define local tooldata variables
LOCAL PERS tooldata gripper1:=[TRUE,[[0,0,0],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
PROC Sample_1()
!set the acceleration parameters
AccSet 50, 50;
!set the velocity parameters
VelSet 50, 1000;
!move to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1;
!initialize communication parameters (initialization is required only once)
MM_Init_Socket "127.0.0.1",50000,300;
!move to image-capturing position
MoveL camera_capture,v1000,fine,gripper1;
!open socket connection
MM_Open_Socket;
!trigger NO.1 Mech-Vision project
MM_Start_Vis 1,0,2,snap_jps;
!get vision result from NO.1 Mech-Vision project
MM_Get_VisData 1,pose_num,status;
!check whether vision result has been got from Mech-Vision successfully
IF status<>1100 THEN
!add error handling logic here according to different error codess
!e.g.: status=1003 means no point cloud in ROI
!e.g.: status=1002 means no vision result
Stop;
ENDIF
!close socket connection
MM_Close_Socket;
!save first vision point data to local variables
MM_Get_Pose 1,pickpoint,label,toolid;
!move to intermediate waypoint of picking
MoveJ pick_waypoint,v1000,z50,gripper1;
!move to approach waypoint of picking
MoveL RelTool(pickpoint,0,0,-100),v1000,fine,gripper1;
!move to picking waypoint
MoveL pickpoint,v300,fine,gripper1;
!add object grasping logic here, such as "setdo DO_1, 1;"
Stop;
!move to departure waypoint of picking
MoveL RelTool(pickpoint,0,0,-100),v1000,fine,gripper1;
!move to intermediate waypoint of placing
MoveJ drop_waypoint,v1000,z50,gripper1;
!move to approach waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move to placing waypoint
MoveL drop,v300,fine,gripper1;
!add object releasing logic here, such as "setdo DO_1, 0;"
Stop;
!move to departure waypoint of placing
MoveL RelTool(drop,0,0,-100),v1000,fine,gripper1;
!move back to robot home position
MoveAbsJ home\NoEOffs,v3000,fine,gripper1;
ENDPROC
ENDMODULE
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.

아래 표는 위 프로그램에 대한 설명입니다. 명령어 이름의 링크를 클릭하면 해당 명령의 상세 설명을 확인할 수 있습니다.
워크플로 | 코드와 설명 | ||
---|---|---|---|
변수를 정의하기 |
국부 변수를 정의합니다. 위 국부 변수들은 분 프로그램 내에서만 유효합니다. 사용자는 티칭을 통해 Home 포인트(Home 변수), Mech-Vision 프로젝트에 전송된 포즈(snap_jps 변수), 이미지 캡처 위치(camera_capture 변수), 피킹 웨이포인트(pick_waypoint 변수), 배치 웨이포인트(drop_waypoint 변수), 배치 웨이포인트(drop 변수)를 미리 설정해야 하며 툴 데이터(gripper1 변수)를 설정합니다.
|
||
가속도와 속도를 설정하기 |
|
||
Home포인트로 이동하기 |
따라서 전체 명령어는 로봇이 정확하게 설정된 Home 포인트로 이동하며 외부 축의 영향을 받지 않습니다.(속도: 3000mm/s) |
||
통신 파라미터를 초기화하기 |
로봇이 MM_Init_Socket명령어를 통해 통신 대상(IPC)의 IP 주소(127.0.0.1), 포트 번호(50000), 타임아웃 대기시간(300초)을 지정합니다.
|
||
카메라 이미지 캡처 위치로 이동하기 |
따라서 전체 명령어는 로봇이 직선 운동으로 정확하게 설정된 이미지 캡처 포인트로 이동합니다(속도: 1000mm/s). |
||
통신 구축하기 |
로봇은 MM_Open_Socket명령어를 통해 비전 시스템과 TCP 프로토콜 통신 연결을 설정합니다. |
||
Mech-Vision 프로젝트 실행을 트리거하기 |
따라서, 이 명령어는 로봇이 비전 시스템에 실행 번호 1인 Mech-Vision 프로젝트를 트리거하여 Mech-Vision 프로젝트가 모든 비전 포인트를 반환할 것으로 예상하는 것을 나타냅니다. |
||
비전 결과 획득하기 |
따라서, 이 명령어는 로봇이 Mech-Vision 프로젝트 1이 반환한 비전 결과를 획득하는 명령어입니다.
상태 코드 status가 1100일 경우 로봇이 모든 비전 결과를 성공적으로 획득합니다. 그렇지 않으면 비전 시스템이 오류사 발생합니다. 사용자는 구체적인 비정상 상태 코드에 따라 적절한 처리를 수행할 수 있습니다. |
||
통신을 종료하기 |
로봇은 MM_Close_Socket 명령어를 통해 비전 시스템과 TCP 프로토콜 통신 연결을 끊깁니다. |
||
비전 결과를 저장하기 |
따라서, 이 명령어는 첫 번째 비전 포인트의 TCP 포즈, 라벨 및 말단 장치 번호를 각각 지정된 변수로 전송하는 명령어입니다. |
||
중간 웨이포인트로 이동하기 |
따라서 이 전체 명령어는 로봇이 관절 각도 이동 방식을 사용하여 이미지 캡처 포인트와 피킹 접근 웨이포인트 사이의 특정 중간 웨이포인트로 이동합니다. 속도는 1000mm/s이고 회전 반경는 50mm입니다.
|
||
피킹 접근 웨이포인트로 이동하기 |
따라서, 이 명령어는 로봇이 피킹 웨이포인트 위로 100mm 직선 이동하는 것을 나타냅니다. 속도는 1000mm/s입니다.
|
||
피킹 웨이포인트로 이동하기 |
로봇은 직선 이동 방식으로 피킹 접근 포인트에서 피킹 포인트로 이동합니다. |
||
“DO 설정”을 통해 피킹을 수행하기 |
로봇이 피킹 웨이포인트로 이동한 후, DO 명령어(예: “setdo DO_1, 1;”)를 설정하여 말단 장치를 제어하고 피킹를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
피킹 출발 웨이포인트로 이동하기 |
로봇이 피킹 웨이포인트 위로 100mm 이동합니다. 즉 피킹 시 출발(departure) 웨이포인트로 이동합니다.
|
||
중간 웨이포인트로 이동하기 |
로봇이 피킹 시 출발 웨이포인트와 배치의 접근 웨이포인트 사이의 특정 중간점으로 이동하합니다.
|
||
배치 접근 웨이포인트로 이동하기 |
로봇이 배치 웨이포인트 위로 100mm 이동합니다. 즉 배치 접근 웨이포인트로 이동합니다.
|
||
배치 웨이포인트로 이동하기 |
로봇이 배치 접근 웨이포인트에서 배치 웨이포인트로 이동합니다. |
||
“DO 설정”을 통해 배치를 수행하기 |
로봇이 배치 웨이포인트로 이동한 후, DO 명령어(예: “setdo DO_1, 0;”)를 설정하여 말단 장치를 제어하고 배치를 수행합니다. 사용자는 실제 상황에 맞게 DO 설정 작업을 추가해야 합니다.
|
||
배치 출발 웨이포인트로 이동하기 |
로봇이 배치 웨이포인트 위로 100mm 이동합니다. 즉 배치 출발 웨이포인트로 이동합니다.
|
||
Home 포인트로 이동하기 |
로봇이 배치 출발 웨이포인트에서 다시 Home 인트로 이동합니다. |