sl-uwb 9d2b19104f feat: UWB geofence speed limiting (Issue #657)
Add saltybot_uwb_geofence ROS2 package — Jetson-side node that subscribes
to /saltybot/pose/authoritative (UWB+IMU fused PoseWithCovarianceStamped),
enforces configurable polygon speed-limit zones (YAML), and publishes
speed-limited /cmd_vel_limited with smooth ramp transitions.

Emergency boundary: if robot exits outer polygon, cmd_vel is zeroed and
/saltybot/geofence_violation (Bool) is latched True, triggering the
existing e-stop cascade.  Publishes /saltybot/geofence/status (JSON).

Pure-geometry helpers (zone_checker.py) have no ROS2 dependency;
35 unit tests pass (pytest).  ESP32 UWB firmware untouched.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-17 11:36:37 -04:00

28 lines
884 B
Python

from setuptools import setup, find_packages
setup(
name="saltybot_uwb_geofence",
version="0.1.0",
packages=find_packages(),
data_files=[
(
"share/ament_index/resource_index/packages",
["resource/saltybot_uwb_geofence"],
),
("share/saltybot_uwb_geofence", ["package.xml"]),
("share/saltybot_uwb_geofence/config", ["config/uwb_geofence_zones.yaml"]),
("share/saltybot_uwb_geofence/launch", ["launch/uwb_geofence.launch.py"]),
],
install_requires=["setuptools", "pyyaml"],
zip_safe=True,
author="SaltyLab UWB",
author_email="sl-uwb@saltylab.local",
description="UWB geofence speed limiter for SaltyBot (Issue #657)",
license="MIT",
entry_points={
"console_scripts": [
"uwb_geofence_node=saltybot_uwb_geofence.uwb_geofence_node:main",
],
},
)