Mission Planner is a comprehensive ground control station (GCS) application designed primarily for vehicles using the ArduPilot open-source autopilot system. It provides a technical interface for mission planning, vehicle configuration, real-time monitoring, and control of autonomous vehicles including drones, planes, helicopters, rovers, boats, and submarines.
This documentation provides a technical overview of the Mission Planner software architecture, core components, and how they interact with each other. It explains the key systems within Mission Planner and serves as a starting point for understanding the codebase.
Mission Planner serves as the primary interface between human operators and autonomous vehicles. Its main capabilities include:
.bin) and Telemetry (.tlog) logs.Sources: Properties/AssemblyInfo.cs7-12 MissionPlanner.csproj1-39 ChangeLog.txt1-20
The following diagram illustrates the high-level architecture of Mission Planner, bridging the user interface to the underlying communication and state management entities.
Sources: MainV2.cs52-55 ExtLibs/Comms/MissionPlanner.Comms.csproj1-10 GCSViews/FlightData.cs40-42 MainV2.cs48-49
Data flows from the vehicle through various transport layers, is parsed by the MAVLink engine, and finally updates the CurrentState object which triggers UI updates.
Sources: MainV2.cs34-35 GCSViews/FlightData.cs44-46 ExtLibs/Controls/HUD.cs123-124 Program.cs4-6
CurrentState)The CurrentState class acts as the "Single Source of Truth" for a connected vehicle's real-time telemetry. It aggregates data from multiple MAVLink messages (e.g., VFR_HUD, GLOBAL_POSITION_INT, SYS_STATUS) into a unified object used by all UI components.
ch1percent and updated barometer types.Sources: ChangeLog.txt34-35 MainV2.cs34-35
FlightPlanner)The planning system manages Locationwp objects which represent waypoints, commands, and metadata.
MAV_CMD definitions to create mission sequences.geofenceoverlay.MissionPlanner.Gridv2 and MissionPlanner.SimpleGrid.Sources: GCSViews/FlightPlanner.cs58-61 GCSViews/FlightPlanner.cs109-110 ChangeLog.txt14-22
Mission Planner is highly extensible. It supports:
Script tab in FlightData.IPlugin interface to add custom UI or logic.Sources: GCSViews/FlightData.cs152-160 ChangeLog.txt84-133 ExtLibs/Controls/HUD.cs45
The project is primarily a .NET 4.7.2 application with multi-platform support:
WiX for MSI installers.Sources: MissionPlanner.csproj1-3 ChangeLog.txt2-3 ExtLibs/Controls/HUD.cs25-27 appveyor.yml1-10