Adds saltybot_speed_controller ROS2 package — sits between person_follower (/cmd_vel_raw) and cmd_vel_bridge (/cmd_vel), providing adaptive speed profiles tuned for balance stability during outdoor follow-me up to 8 m/s (EUC ride mode). Key features: - walk/jog/ride profiles (1.5/3.0/8.0 m/s) selected via UWB target velocity - Hysteresis-based switching (5 ticks up, 15 ticks down) prevents oscillation - Trapezoidal accel/decel ramps per profile; ride accel 0.3 m/s² (balance-safe) - Emergency decel (2.0 m/s²) triggered by sudden target stop or hard decel - GPS runaway protection: if GPS > commanded×1.5 AND > 50% profile_max → brake - 52/52 unit tests (no ROS2 runtime required) Topics: /cmd_vel_raw → [speed_controller] → /cmd_vel, /speed_controller/profile Launch: ros2 launch saltybot_speed_controller outdoor_speed.launch.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
from setuptools import setup
|
|
|
|
package_name = "saltybot_speed_controller"
|
|
|
|
setup(
|
|
name=package_name,
|
|
version="0.1.0",
|
|
packages=[package_name],
|
|
data_files=[
|
|
("share/ament_index/resource_index/packages", [f"resource/{package_name}"]),
|
|
(f"share/{package_name}", ["package.xml"]),
|
|
(f"share/{package_name}/launch", ["launch/outdoor_speed.launch.py"]),
|
|
(f"share/{package_name}/config", ["config/speed_profiles.yaml"]),
|
|
],
|
|
install_requires=["setuptools"],
|
|
zip_safe=True,
|
|
maintainer="sl-controls",
|
|
maintainer_email="sl-controls@saltylab.local",
|
|
description=(
|
|
"Outdoor adaptive speed controller: walk/jog/ride profiles "
|
|
"with trapezoidal accel limits and GPS runaway protection"
|
|
),
|
|
license="MIT",
|
|
tests_require=["pytest"],
|
|
entry_points={
|
|
"console_scripts": [
|
|
# Adaptive speed profile node: /cmd_vel_raw → /cmd_vel
|
|
"speed_controller_node = saltybot_speed_controller.speed_controller_node:main",
|
|
],
|
|
},
|
|
)
|