이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

mwait (수동 모드)

이 절에서는 수동(교시) 작업 중에 mwait를 사용하는 방법을 설명합니다. 이 함수는 3.1 공통에 정의되어 있지만, 교시 중 모션 단계를 동기화하고 다음 동작으로 넘어가기 전에 로봇이 완전히 멈췄는지 확인할 때 자주 사용합니다.

일반적인 사용법

  • 현재 모든 모션(예: 조그, 이동, 블렌딩)이 끝날 때까지 기다립니다.

  • 단계별 교시 중 명령이 겹치는 것을 막습니다.

  • stop, move_pause 또는 수동 조그 동작 후에 사용합니다.

참고

mwait()는 컨트롤러가 로봇이 정지했다고 보고할 때까지 프로그램 실행을 멈춥니다. 작업자가 육안으로 확인하거나 다음 이동을 시작하기 전에 모션이 안정되었음을 보장하려는 수동 교시 순서에서 유용합니다.

예제: 단계별 수동 교시

#include <thread>
#include <chrono>

// 연결, 수동 모드, 서보 온이 활성화되었다고 가정합니다.

// 1) 초기 위치로 이동
float pose1[6] = {500.0f, 200.0f, 400.0f, 180.0f, 0.0f, 90.0f};
float vel1[2] = {50.0f, 50.0f};
float acc1[2] = {50.0f, 50.0f};
drfl.movel(pose1, vel1, acc1);
drfl.mwait();  // 모션이 완료될 때까지 대기

// 2) 미세 조정을 위해 짧게 조그
drfl.jog(JOG_AXIS_TASK_Z, MOVE_REFERENCE_TOOL, -5.0f);
std::this_thread::sleep_for(std::chrono::milliseconds(500));
drfl.stop(STOP_TYPE_SLOW);
drfl.mwait();  // 다음 이동 전에 안정적으로 정지했는지 확인

// 3) 다음 교시 위치로 이동
float pose2[6] = {550.0f, 250.0f, 420.0f, 180.0f, 0.0f, 90.0f};
float vel2[2] = {40.0f, 40.0f};
float acc2[2] = {40.0f, 40.0f};
drfl.movel(pose2, vel2, acc2);
drfl.mwait();

팁

  • 명령이 겹치지 않도록 다음 모션을 내리기 전에 항상 mwait()를 호출하세요.

  • 수동 조그와 자동 이동을 섞은 교시 순서에서 특히 유용합니다.

  • 외부 제어(예: GUI나 음성 명령)와 통합할 때 mwait()로 안전한 실행 순서를 보장할 수 있습니다.