Skip to content

Add marine plugins - #420

Open
gisleandre wants to merge 29 commits into
mavlink:mainfrom
mavlinkmarine:feature-marine-plugins
Open

Add marine plugins#420
gisleandre wants to merge 29 commits into
mavlink:mainfrom
mavlinkmarine:feature-marine-plugins

Conversation

@gisleandre

Copy link
Copy Markdown

Marine plugins: autonomy, payload, and subsea telemetry

Adds proto definitions for maritime/subsea vehicles (USVs and UUVs). Four new
plugins plus additions to the existing telemetry plugins.

New plugins

Autonomy / Autonomy Server

Control and monitoring of an onboard autonomy system. The client side queries
AutonomyStatus (state machine: idle / executing / paused / suspended /
completed / stopped / recovering) and issues AutonomyDemand transitions
(start, stop, pause, suspend, resume, go-to-recovery). The server side sets
state, streams incoming demands so the autonomy system can accept, deny, or
temporarily reject them, and reports per-component health for the subsystems
typically present on a subsea vehicle (ATR, SAS, MBES, FLS, camera, acoustic
comms, mission).

Payload / Payload Server

Registration and control of vehicle payloads. Payloads are enumerated with an
ID, name, and type (camera, LiDAR, winch, acoustic modem, SAS, MBES, FLS, plus
five generic slots), and each exposes a powered / armed / active state along
with a health flag. Clients list payloads, read status, and request state
changes; servers add and remove payloads and publish their status.

Telemetry additions

WaterCurrent and DopplerVelocityLog (DVL)

New messages with subscribe, set-rate, and publish calls in both plugins. Water
current covers raw and estimated current in NED plus sensor distance; DVL
covers bottom-lock, per-beam seabed altitude, and vehicle velocity in NED.

Wind

Adds timestamp_us (new field number, wire-compatible), the missing
SetRateWind, and the message plus PublishWind on the server side, which
previously had no way to publish wind.

julianoes and others added 29 commits June 16, 2026 11:59
With the MAVSDK auto-generation we can't properly use an enum as
bitflags as the enum is used as an enum only and the actual values are
ignored.

Therefore, let's just use boolean flags instead.
This way we don't need to internally fetch the latest values.
This is based on the MAVLink WIND_COV message.
@julianoes

Copy link
Copy Markdown
Collaborator

Thanks. Looks like this would be pending the outcome of mavlink/mavlink#2556.

@hamishwillee

Copy link
Copy Markdown

Thanks. Looks like this would be pending the outcome of mavlink/mavlink#2556.

FWIW that PR adds the dialect as a dialect to the mavlink repo - not as a managed definitions such as those in common.xml. For my information, what's MAVSDK approach for supporting non-standard definitions?

@julianoes

Copy link
Copy Markdown
Collaborator

MAVSDK will try to support what is out there, e.g. have a few quirks for PX4 and ArduPilot in order to be compatible, but MAVSDK likely won't add support for non-standard dialects for new/future messages.

@hamishwillee

Copy link
Copy Markdown

Makes sense. I assume though someone can add their own MAVSDK external plugins in their own repo should they wish?

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.

4 participants