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>
33 lines
987 B
Python
33 lines
987 B
Python
from setuptools import setup, find_packages
|
|
import os
|
|
from glob import glob
|
|
|
|
package_name = "saltybot_terrain_adaptation"
|
|
|
|
setup(
|
|
name=package_name,
|
|
version="0.1.0",
|
|
packages=find_packages(exclude=["test"]),
|
|
data_files=[
|
|
("share/ament_index/resource_index/packages",
|
|
[f"resource/{package_name}"]),
|
|
(f"share/{package_name}", ["package.xml"]),
|
|
(os.path.join("share", package_name, "config"),
|
|
glob("config/*.yaml")),
|
|
(os.path.join("share", package_name, "launch"),
|
|
glob("launch/*.py")),
|
|
],
|
|
install_requires=["setuptools"],
|
|
zip_safe=True,
|
|
maintainer="sl-controls",
|
|
maintainer_email="sl-controls@saltylab.local",
|
|
description="Surface detection and dynamic terrain adaptation for SaltyBot",
|
|
license="MIT",
|
|
tests_require=["pytest"],
|
|
entry_points={
|
|
"console_scripts": [
|
|
f"terrain_adaptation_node = {package_name}.terrain_adaptation_node:main",
|
|
],
|
|
},
|
|
)
|