이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.
최신 버전 정보는 1.33.5에서 확인하세요.
get_state_led_rule (자동 모드)
이 절에서는 자동 운전 중에 get_state_led_rule을 사용하는 방법을 설명합니다. 이 함수는 LED 규칙을 반환합니다(0 = 기본, 1 = 상태별 사용자 지정, 2 = 명령별 사용자 지정). 호출이 거부된 경우에도 0을 반환합니다.
자동 모드에서만, 컨트롤러 v3.4 이상에서 사용할 수 있습니다. 다른 모드이거나 이전 버전 컨트롤러이면 0을 반환합니다. 모드는 get_robot_mode가 반환하는 값으로 확인합니다.
일반적인 사용법
사용자 지정 색상을 제어하기 전이나 후에 현재 적용된 LED 규칙을 확인합니다.
외부 UI 표시등을 로봇의 LED 동작과 맞춥니다.
진단을 위해 LED 규칙을 로그로 남깁니다.
예제
LED 함수는 다른 모드에서 거부되므로, 예제에서는 LED 함수를 호출하기 전에 제어권(Control Authority)을 얻고 자동 모드로 설정합니다.
#include <atomic>
#include <chrono>
#include <cstdio>
#include <thread>
std::atomic<bool> g_bHasControlAuthority(false);
void OnMonitoringAccessControlCB(const MONITORING_ACCESS_CONTROL eAccess)
{
if (eAccess == MONITORING_ACCESS_CONTROL_GRANT)
g_bHasControlAuthority = true;
}
drfl.set_on_monitoring_access_control(OnMonitoringAccessControlCB);
if (!drfl.open_connection("192.168.137.100")) return 1;
drfl.manage_access_control(MANAGE_ACCESS_CONTROL_FORCE_REQUEST);
while (!g_bHasControlAuthority)
std::this_thread::sleep_for(std::chrono::milliseconds(100));
// 자동 모드가 아니면 LED 함수가 거부됩니다
if (!drfl.set_robot_mode(ROBOT_MODE_AUTONOMOUS)) return 1;
unsigned char rule = drfl.get_state_led_rule();
printf("[LED] Current LED rule: %d\n", rule);
if (rule == 0)
printf("LED rule: Default\n");
else if (rule == 1)
printf("LED rule: Custom by state\n");
else if (rule == 2)
printf("LED rule: Custom by command\n");
이 함수로 컨트롤러가 현재 적용 중인 LED 규칙을 확인할 수 있어, 일관된 시각 표시 정책을 유지하는 데 도움이 됩니다.
팁
LED가 기본 규칙을 따르는지 사용자 지정 규칙을 따르는지 확인할 때 유용합니다.
필요하면 state_led_reset과 함께 사용해 기본 LED 규칙으로 되돌리세요.
set_state_led_color나 set_state_led_off를 호출한 후에는 규칙이 2(명령별 사용자 지정)가 됩니다.