move_resume (자동 모드)

이 절에서는 자동(실행) 운전 중에 move_resume으로 move_pause로 일시 정지한 로봇 모션을 재개하는 방법을 설명합니다.

이 함수는 모션이 멈춘 지점부터 같은 궤적(Trajectory)을 그대로 이어 갑니다. 모션을 취소하지 않고 잠시 멈춰야 하는 조건 기반 작업 흐름이나 센서 기반 작업 흐름에 유용합니다.

일반적인 사용법

  • 간단한 검사나 비전 기반 정렬이 끝난 후 모션을 재개합니다.

  • 외부 조건이 다시 충족되면 이동을 계속합니다.

  • 작업자가 작업 영역을 확인한 후 로봇 모션을 재개합니다.

  • 비동기 모션 명령과 함께 사용해 이벤트 기반 자동화를 구현합니다.

참고

  • 일시 정지한 모션이 없으면 무시됩니다.

  • 모션만 재개합니다. DRL 프로그램 전체는 이와 별개로 계속 실행됩니다.

예제: 조건부 일시 정지 후 모션 재개하기

#include <thread>
#include <chrono>

float target[6] = {0, 0, 90, 0, 90, 0};

// 1) 비동기 동작 시작
drfl.amovej(target, 20, 40);

// 2) 3번 조인트가 임계값에 도달하면 일시 정지
while (true) {
    LPROBOT_POSE pos = drfl.get_current_pose(ROBOT_SPACE_JOINT);
    if (!pos) continue;

    if (pos->_fPosition[2] >= 45) {
        drfl.move_pause();
        printf("Motion paused at J3 >= 45 degrees.\n");
        std::this_thread::sleep_for(std::chrono::milliseconds(3000));  // 3초 대기
        break;
    }
}

// 3) 일시 정지한 동작 재개
if (!drfl.move_resume()) {
    printf("Failed to resume motion.\n");
    return -1;
}

printf("Motion resumed.\n");

이 예제에서는 실시간 조인트 위치 피드백에 따라 로봇이 모션 도중 일시 정지한 후, move_resume()으로 멈춘 궤적을 이어 갑니다.

팁

  • 정지와 재개를 완전히 제어하려면 항상 move_pause와 함께 사용하세요.

  • 이벤트 기반 시퀀스에서 비동기 이동(amovej, amovel)과 함께 사용하면 효과적입니다.

  • 경로를 취소하지 않고 모션을 중단해야 하는 작업 흐름에 적합합니다.

  • 검사 단계, 정렬 대기, 안전을 고려한 감속에 사용합니다.