Implements node watchdog ROS2 node that monitors heartbeats from critical systems and triggers safety fallback when motor driver is lost >2s. Features: - Monitor heartbeats from: balance, motor_driver, emergency, docking - Alert on /saltybot/node_watchdog (JSON) if heartbeat lost >1s - Safety fallback: zero cmd_vel if motor driver lost >2s - Republish cmd_vel on /saltybot/cmd_vel_safe with safety checks - 20Hz monitoring and publishing frequency - Configurable heartbeat timeout thresholds Heartbeat Topics: - /saltybot/balance_heartbeat (std_msgs/UInt32) - /saltybot/motor_driver_heartbeat (std_msgs/UInt32) - /saltybot/emergency_heartbeat (std_msgs/UInt32) - /saltybot/docking_heartbeat (std_msgs/UInt32) - /cmd_vel (geometry_msgs/Twist) Published Topics: - /saltybot/node_watchdog (std_msgs/String) - JSON status - /saltybot/cmd_vel_safe (geometry_msgs/Twist) - Safety-checked velocity Package: saltybot_node_watchdog Entry point: node_watchdog_node Launch file: node_watchdog.launch.py Tests: 20+ unit tests covering: - Heartbeat reception and timeout detection - Motor driver critical timeout (>2s) - Safety fallback logic - cmd_vel zeroing on motor driver loss - Health status JSON serialization - Multi-node failure scenarios Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
29 lines
1016 B
XML
29 lines
1016 B
XML
<?xml version="1.0"?>
|
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
|
<package format="3">
|
|
<name>saltybot_node_watchdog</name>
|
|
<version>0.1.0</version>
|
|
<description>
|
|
Node watchdog monitor for SaltyBot critical systems. Monitors heartbeats from balance,
|
|
motor driver, emergency, and docking nodes. Publishes alerts on heartbeat loss >1s.
|
|
Implements safety fallback: zeros cmd_vel if motor driver lost >2s. Runs at 20Hz.
|
|
</description>
|
|
<maintainer email="sl-controls@saltylab.local">sl-controls</maintainer>
|
|
<license>MIT</license>
|
|
|
|
<depend>rclpy</depend>
|
|
<depend>geometry_msgs</depend>
|
|
<depend>std_msgs</depend>
|
|
|
|
<buildtool_depend>ament_python</buildtool_depend>
|
|
|
|
<test_depend>ament_copyright</test_depend>
|
|
<test_depend>ament_flake8</test_depend>
|
|
<test_depend>ament_pep257</test_depend>
|
|
<test_depend>python3-pytest</test_depend>
|
|
|
|
<export>
|
|
<build_type>ament_python</build_type>
|
|
</export>
|
|
</package>
|