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같은 비동기 명령과 함께 사용해 고급 자동 모드 작업 흐름을 만들 수 있습니다.