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

stop (자동 모드)

이 절에서는 자동(실행) 운전 중에 stop으로 현재 실행 중인 로봇 모션을 멈추는 방법을 설명합니다.

정지 방식은 선택한 STOP_TYPE(예: 빠른 정지, 느린 정지, 홀드)에 따라 달라집니다. 비상 정지(Emergency Stop)와 달리 이 함수는 로봇 시스템 전체가 아니라 현재 모션 구간에만 영향을 줍니다.

일반적인 사용법

  • 센서 조건이 발생하면 진행 중인 모션을 중단합니다.

  • 작업을 안전하게 전환하도록 느린 정지를 실행합니다.

  • 모션을 긴급히 취소해야 할 때 급정지(Quick Stop)를 실행합니다.

  • 궤적(Trajectory) 도중에 모션을 취소해야 할 수 있는 적응형 자동화에 사용합니다.

참고

  • STOP_TYPE_QUICK: 빠르게 감속해 즉시 정지

  • STOP_TYPE_SLOW: 부드럽게 감속해 저크 최소화

  • STOP_TYPE_HOLD: 정지 후 현재 위치 유지

  • 현재 모션에만 영향을 주며, DRL 프로그램 자체를 취소하거나 정지하지 않습니다

예제: 느린 정지로 모션 중단하기

#include <thread>
#include <chrono>

// 1) 비동기 직선 동작 시작
float target[6] = {784, 543, 970, 0, 180, 0};
float tvel[2] = {100, 100};
float tacc[2] = {200, 200};
drfl.amovel(target, tvel, tacc);
printf("Motion started.\n");

// 2) 동작을 정지하기 전에 2초 대기
std::this_thread::sleep_for(std::chrono::milliseconds(2000));

// 3) 부드럽게 감속하도록 느린 정지 실행
if (!drfl.stop(STOP_TYPE_SLOW)) {
    printf("Failed to stop motion.\n");
    return -1;
}

printf("Motion stopped with slow deceleration.\n");

이 예제에서는 로봇이 목표 포즈로 비동기 이동을 시작합니다. 잠시 후 프로그램이 느린 정지 명령을 보내 모션을 부드럽게 멈춥니다. 로봇은 따라가던 경로를 유지하며 감속합니다.

팁

  • 타이밍이 중요할 때는 급정지로 빠르게 중단하세요.

  • 일반적인 자동화 흐름에서는 느린 정지로 움직임을 부드럽게 유지하세요.

  • 끝점에서 정밀하게 안정된 상태가 필요하면 홀드 정지를 사용하세요.

  • check_motion과 함께 사용하면 정지 시점을 상황에 맞게 정할 수 있습니다.

  • 실시간 조건에 따라 모션 도중 개입해야 하는 안전 중심 자동화에 유용합니다.