siren_signal — DRIVE decide op

• 데이터 종류: 없음 → table(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)

• 호출: 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]'(구현을 직접 호출하려면 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]', 원장에서 가져오려면 opsdrive.get("siren_signal"))

사용법

움직이는 구급차 사이렌(두 음의 교대)을 정지한 마이크로 들은 소리를 합성합니다.

음원 p(τ) = source_start + source_velocity·τ(2D, 등속 직선), 내는 소리는 sin φ(τ), φ 는 높은 음 f_high 와낮은 음 f_low 를 period/2 씩 번갈아 울리는 연속 위상. 마이크 m 이 시각 t 에 듣는 소리는, 발음 시각 τ 가

c (t − τ) = |p(τ) − m| ⇔ (c² − |u|²) s² + 2 (q·u) s − |q|² = 0, s = t − τ ≥ 0, q = p(t) − m

을 만족할 때의 sin φ(τ)(진폭은 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). 2 차 방정식에 들어가는 것은 수신 시의 마이크 위치뿐(음원은 등속)이므로 마이크는 임의의 경로로 움직여도 된다:

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 의 단위 벡터).

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(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.