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)과 함께 사용하면 효과적입니다.경로를 취소하지 않고 모션을 중단해야 하는 작업 흐름에 적합합니다.
검사 단계, 정렬 대기, 안전을 고려한 감속에 사용합니다.