uwb_imu_fusion:
  ros__parameters:
    # ── Topics ────────────────────────────────────────────────────────────────
    imu_topic:          /imu/data
    uwb_bearing_topic:  /uwb/bearing
    uwb_pose_topic:     /saltybot/uwb/pose
    use_uwb_pose:       true    # true = use absolute /saltybot/uwb/pose
                                # false = use relative /uwb/bearing

    # ── TF ────────────────────────────────────────────────────────────────────
    publish_tf:   true
    map_frame:    map
    base_frame:   base_link

    # ── EKF noise parameters ──────────────────────────────────────────────────
    # Increase sigma_uwb_pos_m if UWB is noisy (multipath, few anchors)
    # Increase sigma_imu_* if IMU has high vibration noise
    sigma_uwb_pos_m:      0.12   # UWB position std-dev (m)   — DW3000 ±10 cm + geometry
    sigma_imu_accel:      0.05   # IMU accel noise (m/s²)
    sigma_imu_gyro:       0.003  # IMU gyro noise (rad/s)
    sigma_vel_drift:      0.10   # velocity drift process noise (m/s)
    dropout_vel_damping:  0.95   # velocity decay factor per second during dropout

    # ── Dropout ───────────────────────────────────────────────────────────────
    max_dead_reckoning_s: 10.0   # suppress fused pose output after this many
                                 # seconds without a UWB update
