Two new ROS2 packages implementing Issue #142: saltybot_terrain_msgs (ament_cmake) - Terrain.msg: stamp, surface_type, roughness, incline_rad, grip, slip_ratio, speed_scale saltybot_terrain_adaptation (ament_python, 50 Hz) - terrain_analyzer.py: IMU vibration RMS → roughness [0,1] + surface classification (smooth/tile/carpet/grass/gravel) with hysteresis-protected switching - incline_detector.py: quaternion pitch → first-order LPF → incline_rad; motor_bias() - slip_detector.py: cmd_vel vs odom → slip_ratio with EMA smoothing + speed gate - terrain_adapter.py: TerrainState, TerrainAdapter (speed_scale, pid_scales, motor_bias), TerrainHistory (rolling deque, JSON type-change log) - terrain_adaptation_node.py: 50 Hz node; IMU watchdog; publishes terrain JSON + typed msg, speed_scale, pid_scales (JSON), motor_bias, terrain_history (on type change) - config/terrain_params.yaml, launch/terrain_adaptation.launch.py Tests: 60/60 passing (TerrainAnalyzer, SlipDetector, InclineDetector, TerrainAdapter, TerrainHistory all covered) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6 lines
124 B
INI
6 lines
124 B
INI
[develop]
|
|
script_dir=$base/lib/saltybot_terrain_adaptation
|
|
|
|
[install]
|
|
install_scripts=$base/lib/saltybot_terrain_adaptation
|