decide op• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.siren_signal(duration: 'float', fs: 'float', *, f_high: 'float' = 960.0, f_low: 'float' = 770.0, period: 'float' = 1.3, source_start=(-60.0, 10.0), source_velocity=(15.0, 0.0), mics=((0.0, 0.0),), c: 'float' = 343.0, spreading: 'bool' = True, mic_velocity=(0.0, 0.0), mic_track=None) -> 'Dict[str, object]' (implementation को सीधे call करना हो तो import drivedecide; drivedecide.siren_signal(duration: 'float', fs: 'float', *, f_high: 'float' = 960.0, f_low: 'float' = 770.0, period: 'float' = 1.3, source_start=(-60.0, 10.0), source_velocity=(15.0, 0.0), mics=((0.0, 0.0),), c: 'float' = 343.0, spreading: 'bool' = True, mic_velocity=(0.0, 0.0), mic_track=None) -> 'Dict[str, object]', registry से लेना हो तो opsdrive.get("siren_signal"))
चलती ambulance का siren (दो सुरों का बारी-बारी से बजना) एक स्थिर microphone पर जैसा सुनाई देता है, वैसी आवाज़ synthesise करता है।
स्रोत p(τ) = source_start + source_velocity·τ (2D, एकसमान सरल-रेखीय गति); उत्सर्जित ध्वनि sin φ(τ) है, जहाँ φ एक सतत कला है जो ऊँचे स्वर f_high और नीचे स्वर f_low को period/2 के लिए बारी-बारी से बजाती है। माइक्रोफ़ोन m समय t पर जो ध्वनि सुनता है वह उस उत्सर्जन समय τ पर sin φ(τ) है जो
c (t − τ) = |p(τ) − m| ⇔ (c² − |u|²) s² + 2 (q·u) s − |q|² = 0, s = t − τ ≥ 0, q = p(t) − m
को संतुष्ट करता है (spreading होने पर आयाम r_ref / r, r_ref = प्रारंभिक दूरी)। डॉप्लर सूत्र का उपयोग नहीं किया गया (केवल आगमन-समय की ज्यामिति), इसलिए यह doppler_track के गेट के लिए एक स्वतंत्र पथ है।
mic_velocity = माइक्रोफ़ोन (या उसे ले जाने वाले अपने वाहन) का स्थिर वेग (वायु = ज़मीन के सापेक्ष; हवा नहीं)। माइक्रोफ़ोन m(t) = m₀ + u_L t के अनुसार चलता है। ऊपर का समीकरण q = p(t) − m(t) रखने पर उसी रूप में सत्य रहता है (c(t − τ) = |p(τ) − m(t)|, p(τ) = p(t) − u s)। द्विघात समीकरण में केवल प्राप्ति-समय पर माइक्रोफ़ोन की स्थिति आती है (स्रोत एकसमान वेग से चलता है), इसलिए माइक्रोफ़ोन किसी भी पथ पर चल सकता है:
प्रति नमूना mic_track = (स्थिति (k, n, 2), वेग (k, n, 2)) देने पर mics / mic_velocity के बदले उसका उपयोग होता है (धीमा होकर बाईं ओर हटते अपने वाहन पर लगा माइक्रोफ़ोन; वेग केवल dτ/dt के बंद-रूप के लिए प्रयुक्त होता है)।
लौटाया गया मान: t (n,), signals (माइक्रोफ़ोनों की संख्या, n), tau (वही), f_emit (वही, उत्सर्जित आवृत्ति), v_radial (वही, निकट आने की दिशा में दूरी के परिवर्तन की दर −d|p(τ) − m(t)|/dt को "स्रोत की दृष्टि-रेखा गति में बदला गया मान" c(1 − 1/D), D = dτ/dt। माइक्रोफ़ोन स्थिर हो तो उत्सर्जन-समय के −ṙ के समान), range_rate (वही, प्राप्ति-समय पर ज्यामितीय दूरी |p(τ) − m(t)| का समय-अवकलज; ऋणात्मक = निकट आ रहा), f_true (वही, = f_emit · dτ/dt। बंद-रूप dτ/dt = (c + r̂·u_L)/(c + r̂·u_S), r̂ = (p(τ) − m(t))/r इकाई सदिश)।
• 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 में दिए गए हैं।
• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py
table को input के रूप में लेते हैं)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 operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.