이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 1.33.5에서 확인하세요.
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이면 모션이 완료되어 로봇이 다음 명령을 받을 준비가 된 것입니다.