Skip to content

asv: add MAVLink actuator safety gateway - #890

Draft
dc-tw wants to merge 1 commit into
osrf:jazzyfrom
dc-tw:agent/asv-actuator-safety
Draft

asv: add MAVLink actuator safety gateway#890
dc-tw wants to merge 1 commit into
osrf:jazzyfrom
dc-tw:agent/asv-actuator-safety

Conversation

@dc-tw

@dc-tw dc-tw commented Aug 14, 2026

Copy link
Copy Markdown

Summary

Adds an experimental WAM-V MAVLink actuator safety boundary without replacing
VRX's existing Gazebo thruster systems or MAVROS transport stack.

  • Reuses MAVROS for MAVLink UDP, framing, CRC, and connection state.
  • Adds a VRX-specific gateway with a 0.2 s actuator-command freshness watchdog,
    latched zero-thrust fault state, explicit reset, and controlled re-arm flow.
  • Adds an independent MAVLink Determine method for specifying the 'seastate' of the simulation. #93 producer, native Gazebo Transport setpoint
    monitor, stock-vs-gateway A/B harness, and transparent CSV analysis.
  • Adds a Docker workflow for Ubuntu 24.04 / ROS 2 Jazzy / Gazebo Harmonic.
  • Vendors only the unchanged upstream MAVROS 2.14 hil.cpp plugin with minimal
    build metadata because the Jazzy binary MAVROS package does not register it.

Why

Stock VRX thrusters retain their most recent force setpoint. A producer can
therefore stop publishing while nonzero thrust remains commanded. This gateway
also covers the realistic case where MAVLink heartbeat remains healthy while
the actuator-control thread has stopped.

Validation completed

  • asv_safety_scripts/run_unit_tests.sh — 4/4 safety-policy tests pass.
  • MAVROS 2.14 core plus the HIL overlay built successfully in a compatibility
    Docker check.

Review limitation: native benchmark pending

Native Ubuntu 24.04 x86_64 latency validation has not been performed because
the current Apple Silicon development host under amd64 emulation is not a
representative safety-timing environment. The headless repeated-run harness is
included so this can be reproduced on the target platform:

./asv_safety_scripts/run_repeated_gateway_latency_test.sh --runs 50

Pending measurements are headless VRX A/B results for T_zero_wall, P95/max
latency, and dual-thruster I_stale. No unmeasured latency value is presented
as an empirical result, and Apple Silicon/QEMU timing is explicitly excluded
from safety-latency claims. Maintainer feedback and/or native x86_64 execution
of the supplied harness would be welcome.

@dc-tw
dc-tw marked this pull request as ready for review August 14, 2026 14:12
@dc-tw
dc-tw marked this pull request as draft August 15, 2026 06:33
@dc-tw

dc-tw commented Aug 15, 2026

Copy link
Copy Markdown
Author

I am narrowing this change after review. The current PR mixes the runtime gateway, assignment-specific validation tooling, Docker workflow, and a vendored MAVROS HIL overlay. I am moving the gateway plus focused unit tests to a new, smaller PR; the validation harness remains in the assignment submission, and the MAVROS HIL packaging gap will be tracked upstream in MAVROS. Marking this PR as draft while the replacement is prepared.

@dc-tw

dc-tw commented Aug 15, 2026

Copy link
Copy Markdown
Author

The focused replacement is now available as #891. It contains only the actuator safety gateway, MAVROS configuration, package metadata, and unit tests (415 added lines); assignment-specific Docker, producers, monitors, benchmark tooling, reports, and vendored MAVROS source are excluded. During the split I also confirmed that Jazzy officially packages the HIL plugin in ros-jazzy-mavros-extras, so the replacement declares mavros_extras as a dependency instead of opening an incorrect missing-plugin issue or carrying an overlay. Keeping this PR in Draft as the historical full-assignment prototype.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant