set_robot_control
이 함수는 로봇 컨트롤러의 현재 운용 상태를 설정하고 변경합니다.
정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션
bool set_robot_control(ROBOT_CONTROL eControl) { return _set_robot_control(_rbtCtrl, eControl); };
매개변수
매개변수 이름 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
eControl |
로봇 컨트롤러에 적용할 제어 명령입니다. |
반환값
값 |
유형 |
설명 |
|---|---|---|
0 |
int |
오류 — 제어 상태를 변경하지 못했습니다. |
1 |
int |
성공 — 제어 상태를 변경했습니다. |
사전 조건
이 표의 상태는 이 클라이언트에 마지막으로 보고된 로봇 상태입니다. 그 밖의 상태에서는 메시지 없이 false를 반환합니다.
eControl |
허용 상태 |
|---|---|
CONTROL_INIT_CONFIG |
새 CDRFLEx 객체에서, 컨트롤러가 안전 모드를 보고하기 전이고 모드를 바꾸는 호출(예: |
CONTROL_ENABLE_OPERATION |
안전 모드가 INITIALIZE일 때만 가능합니다. |
CONTROL_SERVO_ON |
SAFE_OFF 또는 SAFE_OFF2에서 가능합니다. STANDBY에서는 아무것도 하지 않고 true를 반환합니다. |
CONTROL_RESET_SAFE_STOP |
SAFE_STOP 또는 SAFE_STOP2에서만 가능합니다. SAFE_STOP에서는 상태가 바뀔 때까지 기다립니다. |
CONTROL_RECOVERY_SAFE_STOP 및 CONTROL_RECOVERY_SAFE_OFF |
SAFE_STOP, SAFE_STOP2, SAFE_OFF 또는 SAFE_OFF2에서 가능합니다. |
CONTROL_RECOVERY_BACKDRIVE |
SAFE_STOP2 또는 SAFE_OFF2에서만 가능합니다. |
CONTROL_RESET_RECOVERY |
RECOVERY에서만 가능합니다. |
주의
연결이 끊기면 CDRFLEx 객체는 안전 모드를 AUTONOMOUS로 기록하므로, 재연결한 객체에서는 CONTROL_INIT_CONFIG가 false를 반환합니다. 연결이 끊긴 후 CONTROL_INIT_CONFIG를 사용하려면 새 CDRFLEx 객체를 만드세요.
예제
if (drfl.get_robot_state() == STATE_SAFE_OFF) {
// 서보 온(SAFE OFF 상태에서 복귀)
drfl.set_robot_control(CONTROL_RESET_SAFET_OFF);
}
else if (drfl.get_robot_state() == STATE_SAFE_OFF2) {
// 복구 모드 진입
drfl.set_robot_control(CONTROL_RECOVERY_SAFE_OFF);
}
이 예제는 로봇의 안전 오프(safe-off) 상태를 확인하고 그에 맞는 제어 명령을 보냅니다. 서보 전원을 리셋하거나 복구를 실행해, 로봇을 제어할 수 있는 상태로 되돌립니다.
참고
복구 모드에서는 jog, multi_jog와 모션 함수(movej, movel, movec, moveb, movejx, movesj, movesx, move_spiral, move_periodic, 각 함수의 amove 버전, movesj_g, movesx_g)가 false를 반환하고 “this command cannot be used in recovery mode. please change to auto mode as robot mode”를 출력합니다. 복구 모드에서 벗어나려면 set_robot_control(CONTROL_RESET_RECOVERY)을 호출한 다음 set_robot_mode(ROBOT_MODE_MANUAL) 또는 set_robot_mode(ROBOT_MODE_AUTONOMOUS)를 호출하세요. set_robot_mode를 호출하기 전까지 이 함수들은 계속 false를 반환합니다.