decide op• 데이터 종류: signal → table
• 호출: import fullseye as fs; fs.ledger.doppler_track(signal, fs, *, f_high: 'float' = 960.0, f_low: 'float' = 770.0, c: 'float' = 343.0, smooth: 'float' = 0.005, guard: 'float' = 0.01, edge: 'float' = 0.05, v_tol: 'float' = 1.0, verdict_window: 'float' = 0.5) -> 'Dict[str, object]'(구현을 직접 호출하려면 import drivedecide; drivedecide.doppler_track(signal, fs, *, f_high: 'float' = 960.0, f_low: 'float' = 770.0, c: 'float' = 343.0, smooth: 'float' = 0.005, guard: 'float' = 0.01, edge: 'float' = 0.05, v_tol: 'float' = 1.0, verdict_window: 'float' = 0.5) -> 'Dict[str, object]', 원장에서 가져오려면 opsdrive.get("doppler_track"))
사이렌 소리로부터 순간 주파수를 추정하고 접근 중인지 / 멀어지는 중인지를 판정합니다.
1. 해석 신호(FFT 의 Hilbert 변환)의 위상차 → 순간 주파수 f(t) = arg(z[n+1] z̄[n]) fs / 2π.
2. 폭 smooth 초의 이동 중앙값.
3. 각 시각에서 공칭 2 음(f_high / f_low) 중 비가 가까운 쪽을 "낸 음" 으로 보고, 도플러 계수 D = f / f_nom, 시선 속도 v_r = c (1 − 1/D)(doppler_shift 를 v_r 에 대해 푼 것).
4. 음이 바뀌는 곳(중앙값의 도약 > 20 Hz)의 전후 guard 초와 양 끝 edge 초는 무효(valid = False).
5. 판정: 마지막 verdict_window 초의 유효한 v_r 의 중앙값이 +v_tol 보다 크면 → "approaching", −v_tol 보다 작으면 → "receding", 그 사이 → "abeam". state 는 각 시각의 같은 판정(무효한 곳은 "unknown").
공칭음 오인의 한계: 배분의 경계는 기하평균 √(f_h f_l). 낮은 음이 다가와 경계를 넘는 것은 v_r = c (1 − √(f_l/f_h)), 높은 음이 멀어져 넘는 것은 v_r = −c (√(f_h/f_l) − 1). 960/770 Hz 에서는 +35.8 m/s(129 km/h)와 −40.0 m/s. 이보다 빠른 시선 속도는 오인한다(테스트로 고정).
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py
table 를 입력으로 받는 것)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
decide)mirror_reflection_matrix · mirror_virtual_camera · mirror_aim_normal · convex_mirror_fov · mirror_blind_zone · check_sequence_score · signal_phase_plan · signal_state
*Provenance: drivedecide.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.