check_motion

이 함수는 로봇 컨트롤러의 현재 모션 상태를 확인합니다. 모션이 진행 중인지, 계산 중인지, 완전히 정지했는지 판단할 때 사용합니다. 주로 폴링 루프에서 호출해 연속된 로봇 명령을 동기화합니다.

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

int check_motion() { return _check_motion(_rbtCtrl); };

매개변수
없음

반환값

값

설명

0

실행 중인 모션 없음(유휴 상태)

1

모션 계산 중(경로 계획 또는 준비 단계)

2

모션 동작 중(궤적 실행 중)

참고

이 함수는 컨트롤러가 응답할 때까지 기다립니다.

예제

// 조인트 목표 위치 2개 정의
float q0[6]  = {0, 0, 90, 0, 90, 0};
float q99[6] = {0, 0, 0, 0, 0, 0};

// 1) 첫 번째 조인트 모션 시작
drfl.movej(q0, 60, 30);

// 2) 완료될 때까지 모션 상태 폴링
while (true) {
    int state = drfl.check_motion();
    if (state == 0) {   // 모션 완료
        printf("[check_motion] Motion finished, starting next move...\n");
        break;
    }
    else if (state == 1)
        printf("[check_motion] Motion being calculated...\n");
    else if (state == 2)
        printf("[check_motion] Motion in progress...\n");

    std::this_thread::sleep_for(std::chrono::milliseconds(200));
}

// 3) 이전 동작이 완료된 후에만 다음 모션 실행
drfl.movej(q99, 60, 30);

이 예제는 check_motion()을 사용하는 폴링 기반 모션 동기화 방법을 보여 줍니다.
이 함수로 다음 동작을 실행하기 전에 이전 모션이 끝났는지 확인할 수 있습니다.
반환값이 0이면 모션이 완료되어 로봇이 다음 명령을 받을 준비가 된 것입니다.