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

check_motion (자동 모드)

이 절에서는 자동(실행) 운전 중에 check_motion으로 현재 실행 중인 로봇 모션 명령의 실시간 상태를 확인하는 방법을 설명합니다.

이 함수는 로봇이 대기 중인지, 궤적(Trajectory)을 계획 중인지, 모션을 실행 중인지 알려 줍니다. 순차 자동화 흐름이나 조건 기반 자동화 흐름을 만들 때 유용합니다.

일반적인 사용법

  • 모션이 끝날 때까지 기다린 후 다음 명령을 시작합니다.

  • 로봇이 아직 궤적을 계획 중(바쁨 상태)인지 확인합니다.

  • 외부 시스템(비전, 컨베이어, PLC)을 로봇 동작과 동기화합니다.

  • 자동 모드에서 사용자 정의 비동기 모션 파이프라인을 만듭니다.

참고

반환값

  • 0: 모션 없음(대기)

  • 1: 모션 계획 중(궤적 계산)

  • 2: 모션 실행 중

예제: 모션이 끝날 때까지 기다린 후 다음 이동 실행하기

float targetA[6] = {0, 0, 90, 0, 90, 0};
float targetB[6] = {0, 0, 0,  0,  0,  0};

// 1) 첫 번째 동작 시작(비동기)
drfl.amovej(targetA, 60, 30);

// 2) 로봇이 유휴 상태가 될 때까지 동작 상태 폴링
while (true) {
    int status = drfl.check_motion();

    if (status == 0) {            // 유휴 → 이전 동작 완료
        drfl.movej(targetB, 60, 30);
        printf("First motion completed. Executing next motion.\n");
        break;
    }
}

이 예제에서는 로봇이 먼저 targetA로 비동기 이동합니다. 외부 애플리케이션은 로봇이 대기 상태(0)가 될 때까지 check_motion()을 반복해서 호출한 다음, 다음 모션을 실행합니다.

팁

  • 메인 스레드를 막지 않고 여러 모션을 연결할 때 적합합니다.

  • 1(계획 중)을 확인하면 컨트롤러가 궤적을 준비하고 있는 시점을 알 수 있습니다.

  • 로봇 이동을 카메라 촬영이나 센서 트리거와 맞출 때 유용합니다.

  • amovej, amovel 같은 비동기 명령과 함께 사용해 고급 자동 모드 작업 흐름을 만들 수 있습니다.