/**:
  ros__parameters:
    # Control loop rate (Hz)
    control_rate: 50.0

    # Odometry topic for slip detection
    odom_topic: "/saltybot/rover_odom"

    # ── TerrainAnalyzer ────────────────────────────────────────────────────────
    # RMS window length (seconds)
    vibration_window_s: 0.5
    # Normalisation ceiling for roughness score (m/s²)
    roughness_max_ms2: 3.0
    # Hysteresis: samples required before surface-type changes
    hysteresis_count: 5

    # ── InclineDetector ────────────────────────────────────────────────────────
    # Low-pass filter time constant for incline (seconds)
    incline_lpf_tau_s: 1.5
    # Incline at which incline_scale reaches minimum (~30°)
    max_incline_rad: 0.52

    # ── SlipDetector ───────────────────────────────────────────────────────────
    # Slip ratio above which is_slipping flag is raised
    slip_threshold: 0.30
    # Minimum commanded speed before slip detection is active (m/s)
    slip_min_speed_ms: 0.15
    # EMA smoothing factor for slip ratio
    slip_smoothing_alpha: 0.20

    # ── TerrainAdapter ─────────────────────────────────────────────────────────
    # Incline-to-motor-bias gain (multiplied by sin(incline_rad))
    k_bias: 1.0
    # Speed scale floor — never command below this fraction of max speed
    min_speed_scale: 0.15

    # ── Misc ───────────────────────────────────────────────────────────────────
    # Rolling history buffer size
    history_max_entries: 200
    # IMU silence timeout before safe-defaults are published (seconds)
    imu_timeout_s: 0.5
