move_pause (자동 모드)

이 절에서는 자동(실행) 운전 중에 move_pause로 DRL 프로그램 자체는 멈추지 않고 실행 중인 로봇 모션을 일시 정지하는 방법을 설명합니다.

센서 조건, 검사 요구 사항, 외부 시스템과의 동기화에 따라 모션을 즉시 멈춰야 할 때 유용합니다.

일반적인 사용법

  • 센서 값이 임계값에 도달하면 궤적(Trajectory) 도중에 이동을 일시 정지합니다.

  • 비전 정렬이나 작업자 개입을 위해 모션을 잠시 멈춥니다.

  • 비동기 이동과 함께 사용해 조건부 모션 제어를 구현합니다.

  • 외부 이벤트에 따라 모션 시점이 정해지는 고급 자동화에 사용합니다.

참고

  • 실행 중인 모션이 없으면 이 함수는 무시됩니다.

  • 모션만 일시 정지합니다. DRL 프로그램 흐름은 모션이 재개되면 계속 진행됩니다.

예제: 조인트 각도가 임계값에 도달하면 모션 일시 정지하기

#include <thread>
#include <chrono>

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

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

// 2) 동작 중 조인트 위치 감시
while (true) {
    LPROBOT_POSE pose = drfl.get_current_pose(ROBOT_SPACE_JOINT);
    if (!pose) continue;

    // 3번 조인트가 45°를 넘으면 동작 일시 정지
    if (pose->_fPosition[2] >= 45) {
        drfl.move_pause();
        printf("Motion paused at J3 >= 45 deg.\n");
        std::this_thread::sleep_for(std::chrono::milliseconds(3000));  // 3초 대기
        break;
    }
}

// 3) 일시 정지한 동작 재개
drfl.move_resume();
printf("Motion resumed.\n");

이 예제에서는 로봇이 비동기 모션 중에 조인트 위치를 계속 확인합니다. 3번 조인트가 임계값에 도달하면 move_pause()로 궤적을 일시 정지하고, 잠시 후 move_resume()으로 모션을 이어 갑니다.

팁

  • move_resume과 함께 사용하면 정지와 재개를 동적으로 제어할 수 있습니다.

  • amovej, amovel 같은 비동기 명령과 함께 사용할 때 가장 효과적입니다.

  • 센서 기반 모션 조정, 검사, 동기화 루틴에 적합합니다.

  • DRL 프로그램 전체를 멈추지 않고 모션만 일시 정지해야 할 때 유용합니다.