# 声源分析模块默认配置
# 本文件由 acoustic_node 通过 ros::param 或 Pipeline 直接加载

# ── 音频参数 ───────────────────────────────
audio:
  sample_rate: 16000
  chunk_duration: 2.0        # 分析窗口长度 (秒)
  hop_duration: 0.5          # 步进 (秒)
  n_channels: 4              # 麦克风数量

# ── 音频源选择 ──────────────────────────────
# [TEMP] 临时方案: 手机麦克风单通道测试
# [FINAL] 最终方案: 麦克风阵列多通道定位
# 可选值: "mic_array" (最终), "mobile_phone" (临时), "wav_file" (离线测试)
source:
  type: "mic_array"          # [FINAL] 最终方案：4 通道麦克风阵列
  # 临时方案参数 (手机音频)
  mobile_phone_topic: "/mobile_phone/audio"
  mobile_phone_timeout: 10.0  # 等待连接超时 (秒)
  # 离线测试参数
  wav_file_path: ""           # 若 type="wav_file"，填写 WAV 路径

# ── 麦克风阵列几何 (单位: 米) ──────────────
# layout 可选: cross, linear, circular, custom
# 使用 custom 时，需要填写 positions 数组 [x, y, z]
# [TEMP] 临时方案（手机单通道）：num_mics=1, layout 任意
# [FINAL] 最终方案（4 通道阵列）：num_mics=4, layout=cross
mic_array:
  num_mics: 4              # [FINAL] 4 通道十字阵列
  layout: "cross"          # 单通道时此值被忽略
  spacing: 0.15
  positions:
    - [0.0,   0.15, 0.0]    # Mic 1 (前)
    - [0.15,  0.0,  0.0]    # Mic 2 (右)
    - [0.0,  -0.15, 0.0]    # Mic 3 (后)
    - [-0.15, 0.0,  0.0]    # Mic 4 (左)

# ── 特征提取 ────────────────────────────────
features:
  n_mels: 64
  n_fft: 2048
  hop_length: 512
  f_min: 0.0
  f_max: 8000.0
  preemphasis: 0.97

# ── 分类器 ──────────────────────────────────
classifier:
  model_path: "$(find acoustic_analyzer)/models/gunshot_classifier.onnx"
  label_map_path: "$(find acoustic_analyzer)/models/label_map.json"
  threshold: 0.7
  smoothing_window: 3

# ── 定位 ────────────────────────────────────
localization:
  algorithm: "gcc_phat"
  max_tdoa: 0.00044          # 最大时延 (0.15m / 343m/s)
  interpolation_factor: 4    # 互相关插值倍数

# ── 距离估计 ─────────────────────────────────
distance:
  reference_spl:
    threat: 150              # [FINAL] 二分类模型统一使用 threat 参考 SPL
    gunshot: 150             # 兼容 4 类模型
    artillery: 180
    explosion: 170
  attenuation_alpha: 0.6
  kalman_process_noise: 0.01
  kalman_measurement_noise: 5.0

# ── 输出 ────────────────────────────────────
output:
  publish_rate: 10           # 最大输出频率 (Hz)
  min_event_interval: 0.3    # 同一威胁最小上报间隔 (秒)
