OpenUxAS LMCP v3
Flex interface specifications for the Lightweight Message Construction Protocol (LMCP) v3, as used by OpenUxAS — an open-source multi-UAV mission automation system from the Air Force Research Laboratory (AFRL/RQ).
Overview
LMCP (Lightweight Message Construction Protocol) defines the machine-to-machine communication data structures for UAV mission planning and autonomy. This package provides Flex specifications covering the full CMASI (Common Mission Automation Services Interface) message set, the IMPACT extended mission types, and UxAS-native routing, task coordination, and service control messages.
All types use MKSD units and WGS84 Earth coordinates, as defined in the upstream CMASI specification. This module is released to the public domain under the Air Force Open Source Agreement Version 1.0.
Module Structure
| File | Description |
|---|---|
afrl/cmasi.flex | Core CMASI types: geometry, zones, entity state/config, payloads, tasks, navigation actions, and automation request/response |
afrl/cmasi/perceive.flex | Entity perception and tracking actions |
afrl/impact.flex | IMPACT extension: multi-vehicle types, specialized tasks, batch planning, and operational infrastructure |
uxas/messages/route.flex | Route planning requests, responses, and graph structures |
uxas/messages/task.flex | Task lifecycle, assignment coordination, sensor footprints, and automation pipeline |
uxas/messages/uxnative.flex | UxAS service control: entity lifecycle, autopilot keepalive, bandwidth testing, and sub-task execution |
Key Types
afrl/cmasi.flex
Geometry — spatial primitives used across zones and tasks:
AbstractGeometry— abstract base for all geometric shapesLocation3D— WGS84 lat/lon point with altitude and altitude typeCircle,Polygon,Rectangle— concrete geometric shapesWedge— angular range constraint (azimuth/elevation centerline and extent)
Zones — operational boundaries:
AbstractZone— base with altitude bounds, time window, and affected aircraftKeepInZone— required operating areaKeepOutZone— prohibited area classified byZoneAvoidanceType(Physical, Regulatory, Acoustic, Threat, Visual)OperatingRegion— named combination of keep-in and keep-out zone IDs
Entity Configuration & State:
EntityConfiguration— base vehicle capabilities (speed, altitude, payload list)EntityState— full kinematic state: position, velocity, angular rates, energy, payload states, current commandAirVehicleConfiguration— air vehicle speed/altitude envelopes and available maneuver typesAirVehicleState— extendsEntityStatewith airspeed, vertical speed, and windFlightProfile— named operating mode with speed, pitch, climb rate, and energy rate
Payloads:
PayloadConfiguration,PayloadState,PayloadAction— abstract payload basesCameraConfiguration,CameraState,CameraAction— EO/IR sensor config, state, and FOV commandsGimbalConfiguration,GimbalState— gimbal mount constraints and current pointing stateGimbalAngleAction,GimbalScanAction,GimbalStareAction— gimbal control commandsVideoStreamConfiguration,VideoStreamState,VideoStreamAction— video stream management
Tasks — mission assignments:
Task— base with ID, label, eligible entities, priority, and parametersSearchTask— base sensor search with wavelength bands, dwell time, and GSDAreaSearchTask,LineSearchTask,PointSearchTask— geometric search patternsLoiterTask— holding pattern at a specified actionMustFlyTask— mandatory waypoint task
Navigation & Actions:
VehicleAction— abstract action base with associated task listNavigationAction— abstract navigation action baseVehicleActionCommand— command envelope with vehicle ID and statusWaypoint— routing point with speed, turn type, contingency waypoints, and action listMissionCommand— ordered waypoint list sent to a vehicleFollowPathCommand— timed path with repeat modeGoToWaypointAction,LoiterAction,FlightDirectorAction,StopMovementAction— concrete navigation commands
Automation Interface:
AutomationRequest— task and vehicle constraints submitted to the plannerAutomationResponse— mission commands and vehicle action commands returned by the plannerServiceStatus— planner progress and error messagesSessionStatus— simulation run state and timing
Enums: WavelengthBand, NavigationMode, FOVOperationMode, GimbalPointingMode, ZoneAvoidanceType, LoiterType, LoiterDirection, SpeedType, TurnType, CommandStatusType, AltitudeType, SimulationStatusType, TravelMode, WaypointTransferMode, ServiceStatusType
afrl/cmasi/perceive.flex
Entity Perception & Tracking — imports from afrl.cmasi:
EntityPerception— perceived entity position, velocity, and attitude with uncertainty estimatesTrackEntityAction— command a sensor to track a specific entity by IDTrackEntityTask— persistent tracking task with sensor modality and GSD requirements
afrl/impact.flex
Vehicle Types — extends EntityConfiguration/EntityState:
GroundVehicleConfiguration,GroundVehicleState— ground vehicle with road graph IDSurfaceVehicleConfiguration,SurfaceVehicleState— surface (water) vehicleRadioTowerConfiguration,RadioTowerState— fixed communication relay infrastructure
Specialized Tasks — extends CMASI task types:
EscortTask— escort a supported entity along a prescribed routeCommRelayTask— relay communications between an entity and a towerImpactPointSearchTask,ImpactLineSearchTask— search tasks keyed to interest-region IDsPatternSearchTask— area search with explicit spiral, sector, or sweep patternWatchTask,MultiVehicleWatchTask— sensor stare on a specific entityBlockadeTask,CordonTask— constrain entity movement with standoff vehiclesAngledAreaSearchTask— sweep-angle search from a defined start point
Payloads & Power:
ImpactPayloadConfiguration— multi-payload configuration withImpactPayloadTypeenum (EO, FLIR, GMTI, CommRelay, LaserDesignator, and others)PowerConfiguration,PowerPlantState— power plant type (Gasoline, JP5, JP8, FuelCell, Hybrid) and runtime stateRadioConfiguration,RadioState— communication relay payload
Batch Planning:
ImpactAutomationRequest,ImpactAutomationResponse— sandboxed automation trials with play/solution IDsBatchRoutePlanRequest,BatchRoutePlanResponse— multi-vehicle, multi-task route cost computationBatchSummaryRequest,BatchSummaryResponse— task assignment feasibility summaryTaskSummary,VehicleSummary— per-vehicle time, energy, and comms estimates
Interest Regions & Environment:
AreaOfInterest,PointOfInterest,LineOfInterest— named geographic featuresWaterZone,WaterReport— water area boundaries and current/wave conditionsDeployImpactPayload— action to deploy a specific payload against a target
Component Lifecycle: ImpactHeartbeat, ImpactComponentJoin, ImpactComponentLeave
Enums: ImpactPayloadType, PowerPlant, AreaSearchPattern
uxas/messages/route.flex
Route Planning — imports Waypoint, KeyValuePair, Location3D from afrl.cmasi:
RouteConstraints— start/end location and heading constraints for a single route segmentRouteRequest— multi-vehicle, multi-segment planning requestRoutePlanRequest— single-vehicle planning requestRoutePlan— waypoint sequence with cost and error fieldsRoutePlanResponse,RouteResponse— nested plan results per vehicle
Graph Structures — for road/airspace network representation:
GraphNode,GraphEdge— nodes with coordinates and edges with intermediate waypointsGraphRegion— named graph of nodes and edges
Egress Planning:
EgressRouteRequest— request escape routes from a start point within a radiusEgressRouteResponse— list of egress node locations and headings
uxas/messages/task.flex
Task Lifecycle — imports from afrl.cmasi:
TaskInitialized,TaskActive,TaskComplete,TaskPause,TaskResume,CancelTask— task state machine messagesTaskProgress,TaskProgressRequest— real-time percent-complete reporting
Assignment & Coordination:
TaskOption— a feasible execution option for a task (vehicle, cost, start/end pose)TaskPlanOptions— all options for a task with compositional relationship stringTaskOptionCost— inter-task travel cost between optionsAssignmentCostMatrix— full cost matrix for the assignment solverTaskAssignment,TaskAssignmentSummary— final vehicle-to-task bindingAssignmentCoordinatorTask— coordination task for distributed assignmentAssignmentCoordination— pairing of a coordinated request with a vehicle planning state
Implementation Pipeline:
TaskImplementationRequest,TaskImplementationResponse— request and return waypoints for a specific task option
Automation Wrappers:
UniqueAutomationRequest,UniqueAutomationResponse— stamped automation request/response with sandbox flagTaskAutomationRequest,TaskAutomationResponse— task-level automation wrappersCoordinatedAutomationRequest— multi-vehicle coordinated request with planning statesPlanningState— vehicle position and heading at planning time
Sensor Footprints:
FootprintRequest,SensorFootprintRequests— request camera footprint geometrySensorFootprint,SensorFootprintResponse— footprint dimensions, GSD, and slant range
uxas/messages/uxnative.flex
Service Control — imports EntityState, Location3D, Task from afrl.cmasi:
CreateNewService,KillService— dynamic service instantiation and teardownStartupComplete— abstract startup acknowledgment
Entity Lifecycle:
EntityJoin,EntityExit— entity appears in or leaves the simulationEntityLocation— lightweight position-only entity updateAutopilotKeepAlive— heartbeat enabling autopilot and gimbal control
Sub-Task Execution:
SubTaskExecution— ordered or unordered list of sub-tasks to executeSubTaskAssignment— sub-task list paired with neighboring entity states
Diagnostics:
BandwidthTest,BandwidthReceiveReport— inter-entity communication bandwidth measurementOnboardProcessorIsAlive— vehicle processor heartbeat
Utilities:
IncrementWaypoint— advance a vehicle to its next waypointVideoRecord— start/stop video recording
Usage
// Import core geometry and automation types
import OpenUxAS::LMCP::v3.afrl.cmasi (
Location3D, AutomationRequest, AutomationResponse, MissionCommand
)
// Import IMPACT extended tasks
import OpenUxAS::LMCP::v3.afrl.impact (
ImpactAutomationRequest, ImpactAutomationResponse, TaskSummary
)
// Import route planning
import OpenUxAS::LMCP::v3.uxas.messages.route (
RouteRequest, RouteResponse
)
// Import task coordination
import OpenUxAS::LMCP::v3.uxas.messages.task (
UniqueAutomationRequest, UniqueAutomationResponse, TaskAssignmentSummary
)Dependencies
All modules within this package are self-contained. Internal dependencies:
afrl/cmasi/perceive.flex→OpenUxAS::LMCP::v3.afrl.cmasiafrl/impact.flex→OpenUxAS::LMCP::v3.afrl.cmasiuxas/messages/route.flex→OpenUxAS::LMCP::v3.afrl.cmasiuxas/messages/task.flex→OpenUxAS::LMCP::v3.afrl.cmasiuxas/messages/uxnative.flex→OpenUxAS::LMCP::v3.afrl.cmasi
References
License
Released to the public domain under the Air Force Open Source Agreement Version 1.0.