Skip to content

OpenMower ROS firmware heartbeats #14

Description

@jkaflik

Context

Upstream OpenMower LowLevel relies on a heartbeat from the high-level stack. If no heartbeat is received within 500 ms, firmware marks ROS as not running and latches emergency. This firmware has micro-ROS agent reconnect handling, but no high-level heartbeat/failsafe contract yet.

Upstream Reference Behavior

OpenMower LowLevel:

  • Receives ll_heartbeat packets from the high-level stack.
  • Uses a 500 ms heartbeat timeout.
  • Latches emergency when heartbeat is missing.
  • Allows high-level code to request emergency latch.
  • Allows high-level code to request emergency release.
  • Tracks ROS-running state for LEDs, UI, sound, and safety behavior.

Acceptance Criteria

  • Define ROS 2 API for firmware heartbeat from OpenMower ROS.
  • Track last heartbeat timestamp independently from micro-ROS agent connection state.
  • Latch emergency when heartbeat timeout expires.
  • Publish firmware/high-level connection state.
  • Support high-level emergency request.
  • Support high-level emergency release request, coordinated with physical emergency inputs.
  • Make timeout configurable or clearly document the default.
  • Add LED/status indication for heartbeat timeout.
  • Document the heartbeat contract so OpenMower ROS can implement the matching publisher/client.

Notes

This should complement micro-ROS agent reconnect. Agent connected does not necessarily mean the mower high-level controller is alive and safe.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions