doppler_track — DRIVE decide op

• Data kinds: signal → table

• Call: 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]' (implementation को सीधे call करना हो तो 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]', registry से लेना हो तो opsdrive.get("doppler_track"))

उपयोग

siren की आवाज़ से instantaneous frequency का अनुमान लगाता है और तय करता है कि वह पास आ रहा है या दूर जा रहा है।

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 हैं। इससे तेज़ दृष्टि-रेखा वेग ग़लत पहचाने जाते हैं (परीक्षणों में स्थिर किया गया)।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

इसी category के (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 operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.