You've already forked OpenUxAS-SoI
mirror of
https://github.com/AdaCore/OpenUxAS-SoI.git
synced 2026-02-12 13:04:49 -08:00
581 lines
33 KiB
XML
581 lines
33 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE MDM SYSTEM 'MDM.DTD'>
|
|
|
|
<!--
|
|
<h2>Introduction</h2>
|
|
IMPACT message definitions. Defines data relevant to flexible, automation-assisted play calling.
|
|
|
|
<h2>Changes</h2>
|
|
<h3>23 Oct 2015</h3>
|
|
<ul>
|
|
<li>Added request/response IDs to Batch messages</li>
|
|
<li>Created ImpactAutomationRequest to add ID and alt/speed override</li>
|
|
</ul>
|
|
|
|
<h3>29 Sept 2015</h3>
|
|
<ul>
|
|
<li>Added message for deploying IMPACT specific payloads</li>
|
|
<li>Re-worked batch requests to include summary information</li>
|
|
<li>Tasks for scout, multi-vehicle overwatch, and cordon/blockade added</li>
|
|
</ul>
|
|
|
|
<h3>18 May 2015</h3>
|
|
<ul>
|
|
<li>Added batch route planning messages</li>
|
|
</ul>
|
|
|
|
<h3>18 March 2015</h3>
|
|
<ul>
|
|
<li>All ID fields updated from uint32 to int64</li>
|
|
<li>All time fields converted to integer milliseconds</li>
|
|
<li>Route plan requests rely on operating region rather than lists of zones</li>
|
|
<li>GroundVehicle and SurfaceVehicle extend from Entity</li>
|
|
</ul>
|
|
|
|
<h3>04 April 2017</h3>
|
|
<ul>
|
|
<li>Moved ground vehicle, surface vehicle, and stationary sensor definitions to separate MDM</li>
|
|
</ul>
|
|
|
|
<h4>06 July 2017</h4>
|
|
<ul>
|
|
<li>Added is background boolean to PointOfInterest, LineOfInterest, and AreaOfInterest </li>
|
|
<li>Changed VehicleSummary RozIDs to int64[] from AreaOfInterest[] </li>
|
|
<li>Added power plant of "Electric" to PowerPlant enum </li>
|
|
</ul>
|
|
-->
|
|
|
|
<MDM>
|
|
<SeriesName>IMPACT</SeriesName>
|
|
<Namespace>afrl/impact</Namespace>
|
|
<Version>13</Version>
|
|
|
|
<EnumList>
|
|
|
|
<!-- Area Search Pattern -->
|
|
<Enum Name="AreaSearchPattern">
|
|
<!-- Spiral search -->
|
|
<Entry Name="Spiral" Value="0"/>
|
|
<!-- Sector -->
|
|
<Entry Name="Sector" Value="1"/>
|
|
<!-- Sweep -->
|
|
<Entry Name="Sweep" Value="2"/>
|
|
</Enum>
|
|
|
|
<!-- Vehicle Power Plant -->
|
|
<Enum Name="PowerPlant">
|
|
<!-- Conventional gasoline -->
|
|
<Entry Name="Gasoline" Value="0"/>
|
|
<!-- Heavy Fuel (JP5) -->
|
|
<Entry Name="JP5" Value="1"/>
|
|
<!-- Heavy Fuel (JP8) -->
|
|
<Entry Name="JP8" Value="2"/>
|
|
<!-- Fuel Cell (Hydrogen) -->
|
|
<Entry Name="FuelCell" Value="3"/>
|
|
<!-- Hybrid electric/gasoline -->
|
|
<Entry Name="Hybrid" Value="4"/>
|
|
<!-- Primarily electric -->
|
|
<Entry Name="Electric" Value="5"/>
|
|
</Enum>
|
|
|
|
<!-- Fusion Area Actions -->
|
|
<Enum Name="AreaActionOptions">
|
|
<!-- Object of interest created -->
|
|
<Entry Name="Created" Value="0"/>
|
|
<!-- Object of interest destroyed -->
|
|
<Entry Name="Destroyed" Value="1"/>
|
|
<!-- Object of interest modified -->
|
|
<Entry Name="Modified" Value="2"/>
|
|
</Enum>
|
|
|
|
<!-- Impact specific payload types -->
|
|
<Enum Name="ImpactPayloadType">
|
|
<!-- Unknown -->
|
|
<Entry Name="Unknown" Value="0"/>
|
|
<!-- EO -->
|
|
<Entry Name="EO" Value="1"/>
|
|
<!-- Forward Looking Infra Red -->
|
|
<Entry Name="FLIR" Value="2"/>
|
|
<!-- Mid Wave Infra Red -->
|
|
<Entry Name="MWIR" Value="3"/>
|
|
<!-- LFIR -->
|
|
<Entry Name="LFIR" Value="4"/>
|
|
<!-- Auto-tracking payload -->
|
|
<Entry Name="Track" Value="5"/>
|
|
<!-- Placement of physical tag for tracking -->
|
|
<Entry Name="Tag" Value="6"/>
|
|
<!-- Megaphone -->
|
|
<Entry Name="Megaphone" Value="7"/>
|
|
<!-- Siren -->
|
|
<Entry Name="Siren" Value="8"/>
|
|
<!-- Search Light -->
|
|
<Entry Name="SearchLight" Value="9"/>
|
|
<!-- Browning .50 caliber weapon -->
|
|
<Entry Name="FiftyCal" Value="10"/>
|
|
<!-- M240B -->
|
|
<Entry Name="M240B" Value="11"/>
|
|
<!-- Flashbang -->
|
|
<Entry Name="Flashbang" Value="12"/>
|
|
<!-- Tear Gas -->
|
|
<Entry Name="TearGas" Value="13"/>
|
|
<!-- Taser -->
|
|
<Entry Name="Taser" Value="14"/>
|
|
<!-- Heat Beam -->
|
|
<Entry Name="HeatBeam" Value="15"/>
|
|
<!-- Scan Eagle Guided Munition -->
|
|
<Entry Name="SEGM" Value="16"/>
|
|
<!-- Comm Relay -->
|
|
<Entry Name="CommRelay" Value="17"/>
|
|
<!-- Ground Moving Target Indicator -->
|
|
<Entry Name="GMTI" Value="18"/>
|
|
<!-- Laser Designator -->
|
|
<Entry Name="LaserDesignator" Value="19"/>
|
|
<!-- LWIR -->
|
|
<Entry Name="LWIR" Value="20"/>
|
|
</Enum>
|
|
|
|
</EnumList>
|
|
|
|
<StructList>
|
|
|
|
<!-- Indicates the power plant configuration carried by a vehicle -->
|
|
<Struct Name="PowerConfiguration" Extends="PayloadConfiguration" Series="CMASI" >
|
|
<!-- Power generation system (used for acoustic signature) -->
|
|
<Field Name="NominalPowerConfiguration" Type="PowerPlant" Default="Gasoline" />
|
|
</Struct>
|
|
|
|
<!-- Indicates the radio specification carried by an entity -->
|
|
<Struct Name="RadioConfiguration" Extends="PayloadConfiguration" Series="CMASI" >
|
|
<!-- The range of the radio -->
|
|
<Field Name="Range" Type="real32" Units="meters" Default="1500.0" />
|
|
<!-- The vehicle's rally point during loss of comm contingency. When set to null, no defined loss of comm behavior. -->
|
|
<Field Name="RallyPoint" Type="Location3D" Series="CMASI" Default="null" Optional="true" />
|
|
<!-- Time after loss of communications the vehicle should return to its rally point -->
|
|
<Field Name="Timeout" Type="int64" Units="milliseconds" Default="120000" />
|
|
</Struct>
|
|
|
|
<!-- Indicates a radio tower -->
|
|
<Struct Name="RadioTowerConfiguration" Extends="EntityConfiguration" Series="CMASI" >
|
|
<!-- The position of the tower. A valid RadioTowerConfiguration must define Position (null not allowed) -->
|
|
<Field Name="Position" Type="Location3D" Series="CMASI" Optional="false" />
|
|
<!-- The range of the radio -->
|
|
<Field Name="Range" Type="real32" Units="meters" Default="1500.0" />
|
|
<!-- Whether the radio is enabled -->
|
|
<Field Name="Enabled" Type="bool" Default="true" />
|
|
</Struct>
|
|
|
|
<!-- Indicates the radio state -->
|
|
<Struct Name="RadioState" Extends="PayloadState" Series="CMASI" >
|
|
<!-- Whether the radio is enabled -->
|
|
<Field Name="Enabled" Type="bool" Default="true" />
|
|
<!-- Whether the vehicle is in communications range -->
|
|
<Field Name="InRange" Type="bool" />
|
|
</Struct>
|
|
|
|
<!-- Indicates a radio tower state -->
|
|
<Struct Name="RadioTowerState" Extends="EntityState" Series="CMASI" >
|
|
<!-- Whether the radio is enabled -->
|
|
<Field Name="Enabled" Type="bool" Default="true" />
|
|
</Struct>
|
|
|
|
<!-- Indicates the IMPACT specific payloads carried by an entity -->
|
|
<Struct Name="ImpactPayloadConfiguration" Extends="PayloadConfiguration" Series="CMASI" >
|
|
<!-- Payloads available for this entity -->
|
|
<Field Name="AvailablePayloads" Type="ImpactPayloadType[]" MaxArrayLength="16" />
|
|
</Struct>
|
|
|
|
<!-- Indicator for use of an IMPACT payload -->
|
|
<Struct Name="DeployImpactPayload" Extends="CMASI/VehicleAction">
|
|
<!-- IMPACT vehicle from which to deploy payload -->
|
|
<Field Name="VehicleID" Type="int64" />
|
|
<!-- Payload to deploy -->
|
|
<Field Name="DeployedPayload" Type="ImpactPayloadType" />
|
|
<!-- Entity to which the payload will be deployed. If zero, then
|
|
payload is assumed deployed at the current position of the deploying
|
|
vehicle. -->
|
|
<Field Name="TargetEntityID" Type="int64" />
|
|
</Struct>
|
|
|
|
<!-- Describes the current state of the power system -->
|
|
<Struct Name="PowerPlantState" Extends="PayloadState" Series="CMASI" >
|
|
<!-- The active power plant -->
|
|
<Field Name="ActivePowerPlant" Type="PowerPlant" Default="Gasoline" />
|
|
</Struct>
|
|
|
|
<!-- Batch Route plan request. Plans from current vehicle locations to the start of
|
|
each task in 'TaskList' -->
|
|
<Struct Name="BatchRoutePlanRequest" >
|
|
<!-- Request ID for correlating with response -->
|
|
<Field Name="RequestID" Type="int64" />
|
|
<!-- An array of vehicles (by ID) to consider when planning -->
|
|
<Field Name="Vehicles" Type="int64[]" MaxArrayLength="16" />
|
|
<!-- List of task IDs to be planned to -->
|
|
<Field Name="TaskList" Type="int64[]" MaxArrayLength="16" />
|
|
<!-- Operating region to be considered during planning -->
|
|
<Field Name="OperatingRegion" Type="int64" />
|
|
<!-- Flag to report timing between tasks -->
|
|
<Field Name="ComputeTaskToTaskTiming" Type="bool" Default="false" />
|
|
<!-- Flag to report timing between incremental progress on task and subsequent tasks -->
|
|
<Field Name="ComputeInterTaskToTaskTiming" Type="bool" Default="false" />
|
|
<!-- List of task percentages along task to plan from -->
|
|
<Field Name="InterTaskPercentage" Type="real32[]" MaxArrayLength="32" />
|
|
</Struct>
|
|
|
|
<!-- Batch Route plan response with vehicle-to-task timing reported. -->
|
|
<Struct Name="BatchRoutePlanResponse" >
|
|
<!-- Response ID matching request from ({@link BatchRoutePlanRequest}) -->
|
|
<Field Name="ResponseID" Type="int64" />
|
|
<!-- Set of task-to-task timings for each requested vehicle -->
|
|
<Field Name="VehicleTiming" Type="TaskTimingPair[]" MaxArrayLength="8192" />
|
|
</Struct>
|
|
|
|
<!-- Single task/vehicle timing information capturing the estimated time for
|
|
the specified vehicle to travel to or between tasks -->
|
|
<Struct Name="TaskTimingPair" >
|
|
<!-- Corresponding Vehicle ID -->
|
|
<Field Name="VehicleID" Type="int64" />
|
|
<!-- Initial task ID (if zero, corresponds to current vehicle location) -->
|
|
<Field Name="InitialTaskID" Type="int64" />
|
|
<!-- Normalized progress along initial task (0.0 .. 1.0) -->
|
|
<Field Name="InitialTaskPercentage" Type="real32" />
|
|
<!-- Destination task ID -->
|
|
<Field Name="DestinationTaskID" Type="int64" />
|
|
<!-- Timing corresponding to travel between tasks. If time is less than zero, no feasible path exists between tasks. If 'DestinationTaskID' is equal to 'InitialTaskID' then 'TimeToGo' is the time to complete the task when performed by 'VehicleID' -->
|
|
<Field Name="TimeToGo" Type="int64" Units="milliseconds" />
|
|
</Struct>
|
|
|
|
<!-- Batch summary request whereby vehicle-to-task information is requested -->
|
|
<Struct Name="BatchSummaryRequest" >
|
|
<!-- Request ID for correlating with response -->
|
|
<Field Name="RequestID" Type="int64" />
|
|
<!-- An array of vehicles (by ID) to consider when planning -->
|
|
<Field Name="Vehicles" Type="int64[]" MaxArrayLength="16" />
|
|
<!-- List of task IDs to be planned to -->
|
|
<Field Name="TaskList" Type="int64[]" MaxArrayLength="16" />
|
|
<!-- string containing the relationship between requested tasks. If empty, all tasks are to be completed in any order. The
|
|
format of the string is specific to the automation service. This relationship string is the mechanism for incorporating
|
|
task precedence, priority, timing, etc. -->
|
|
<Field Name="TaskRelationships" Type="string"/>
|
|
<!-- List of task percentages along task to plan from -->
|
|
<Field Name="InterTaskPercentage" Type="real32[]" MaxArrayLength="32" />
|
|
<!-- Operating region to be considered during planning -->
|
|
<Field Name="OperatingRegion" Type="int64" />
|
|
</Struct>
|
|
|
|
<!-- Batch summary response as a list of all vehicle-to-task information -->
|
|
<Struct Name="BatchSummaryResponse" >
|
|
<!-- Response ID matching request from ({@link BatchSummaryRequest}) -->
|
|
<Field Name="ResponseID" Type="int64" />
|
|
<!-- Set of vehicle-to-task and task-to-task summaries including timing, communication, and remaining energy -->
|
|
<Field Name="Summaries" Type="TaskSummary[]" MaxArrayLength="512" />
|
|
</Struct>
|
|
|
|
<!-- Summary information that describes a particular way to carry out the task.
|
|
In general, multiple task summaries for each task will be sent corresponding to
|
|
each eligible vehicle completing the task. In the case where a task is completed
|
|
by multiple vehicles simultaneously, then each TaskSummary will include the set of
|
|
vehicles that would be used to complete the task. -->
|
|
<Struct Name="TaskSummary" >
|
|
<!-- ID of task in consideration -->
|
|
<Field Name="TaskID" Type="int64" />
|
|
<!-- Summary of information for each vehicle used simultaneously to complete this task.
|
|
If there are zero performing vehicles, then 'TaskID' cannot be completed with any set of
|
|
available vehicles in the system. -->
|
|
<Field Name="PerformingVehicles" Type="VehicleSummary[]" MaxArrayLength="16" />
|
|
<!-- Task cannot be completed as specified and is using best effort. Estimated percent
|
|
achieved while using best effort strategy. -->
|
|
<Field Name="BestEffort" Type="real32" Units="%" Default="100.0" />
|
|
</Struct>
|
|
|
|
<!-- Single vehicle-to-task summary information -->
|
|
<Struct Name="VehicleSummary" >
|
|
<!-- ID of vehicle considered to complete 'DestinationTaskID' -->
|
|
<Field Name="VehicleID" Type="int64" />
|
|
<!-- ID of task for which 'VehicleID' is considered to perform -->
|
|
<Field Name="DestinationTaskID" Type="int64" />
|
|
<!-- ID of task from which 'VehicleID' is considered leave from. If zero, from current position of vehicle -->
|
|
<Field Name="InitialTaskID" Type="int64" />
|
|
<!-- Percentage along initial task that vehicle should plan from -->
|
|
<Field Name="InitialTaskPercentage" Type="real32" />
|
|
<!-- Estimated time from start of task to task-percentage location -->
|
|
<Field Name="EstimateTimeToTaskPercentage" Type="int64" Units="milliseconds" />
|
|
<!-- Travel time from the current vehicle location to the start of the task. -->
|
|
<Field Name="TimeToArrive" Type="int64" Units="milliseconds" />
|
|
<!-- Time for this task to be completed by the specified vehicle -->
|
|
<Field Name="TimeOnTask" Type="int64" Units="milliseconds" />
|
|
<!-- Energy remaining for vehicle after task has been completed,
|
|
expressed in terms of the percentage of maximum capacity -->
|
|
<Field Name="EnergyRemaining" Type="real32" Units="%" />
|
|
<!-- Flag for indicating that the vehicle will leave communication range
|
|
either enroute or during the task -->
|
|
<Field Name="BeyondCommRange" Type="bool" Default="false" />
|
|
<!-- Flag for indicating that the vehicle will conflict with ROZ
|
|
enroute or during the task -->
|
|
<Field Name="ConflictsWithROZ" Type="bool" Default="false" />
|
|
<!-- IDs of ROZs that the vehicle will conflict with -->
|
|
<Field Name="ROZIDs" Type="int64[]" MaxArrayLength="64" />
|
|
<!-- The list of waypoints associated with this mission task. Waypoints are linked, but the waypoint list may
|
|
contain waypoints that are not necessarily linked. Multiple linked routes may be sent in a single waypoint list.
|
|
Waypoints are not necessarily ordered in the list.
|
|
-->
|
|
<Field Name="WaypointList" Type="Waypoint[]" MaxArrayLength="1024" Units="None" Series="CMASI" />
|
|
<!-- ID of the first waypoint in the plan. -->
|
|
<Field Name="FirstWaypoint" Type="int64"/>
|
|
</Struct>
|
|
|
|
<!-- Component heartbeat expected to be sent out @ 1Hz-->
|
|
<Struct Name="ImpactHeartbeat" >
|
|
<!-- Label of system component sending heartbeat -->
|
|
<Field Name="ComponentLabel" Type="string" />
|
|
<!-- Time at which this heatbeat was sent (milliseconds since 1 Jan 1970 00:00 GMT) -->
|
|
<Field Name="HeartbeatTime" Type="int64" Units="milliseconds"/>
|
|
</Struct>
|
|
|
|
<!-- Component Join -->
|
|
<Struct Name="ImpactComponentJoin" >
|
|
<!-- Label of component joining network -->
|
|
<Field Name="ComponentLabel" Type="string" />
|
|
</Struct>
|
|
|
|
<!-- Component Leave -->
|
|
<Struct Name="ImpactComponentLeave" >
|
|
<!-- Label of component leaving network -->
|
|
<Field Name="ComponentLabel" Type="string" />
|
|
</Struct>
|
|
|
|
<!-- Data structure for associating a vehicle to a particular altitude and speed -->
|
|
<Struct Name="SpeedAltPair" >
|
|
<!-- ID of vehicle for which altitude and speed is attached -->
|
|
<Field Name="VehicleID" Type="int64" />
|
|
<!-- ID of task for which altitude and speed is attached. If TaskID is zero, then alt/speed setting applies to all tasks in the automation request -->
|
|
<Field Name="TaskID" Type="int64" Default="0"/>
|
|
<!-- The speed attached to this vehicle -->
|
|
<Field Name="Speed" Type="real32" Units="meter/sec" />
|
|
<!-- Altitude attached to this vehicle -->
|
|
<Field Name="Altitude" Type="real32" Units="meter"/>
|
|
<!-- Altitude type for specified altitude -->
|
|
<Field Name="AltitudeType" Type="CMASI/AltitudeType" Default="AGL" />
|
|
</Struct>
|
|
|
|
<!-- Automation request specific to IMPACT (includes 'sandbox' feature and play/soln IDs) -->
|
|
<Struct Name="ImpactAutomationRequest" >
|
|
<!-- Request ID for correlating with response -->
|
|
<Field Name="RequestID" Type="int64" />
|
|
<!-- Standard CMASI Automation request. A valid ImpactAutomationRequest must define TrialRequest (null not allowed). -->
|
|
<Field Name="TrialRequest" Type="AutomationRequest" Series="CMASI" Optional="false" />
|
|
<!-- Override nominal speed/alt. If a vehicle is not in list, its nominal speed/alt is used -->
|
|
<Field Name="OverridePlanningConditions" Type="SpeedAltPair[]" MaxArrayLength="16" />
|
|
<!-- Associated play ID -->
|
|
<Field Name="PlayID" Type="int64" />
|
|
<!-- Associated solution ID -->
|
|
<Field Name="SolutionID" Type="int64" />
|
|
<!-- Flag indicating 'sandbox', i.e. not to be implemented -->
|
|
<Field Name="Sandbox" Type="bool" Default="false" />
|
|
</Struct>
|
|
|
|
<!-- Automation response with specific IMPACT supporting fields -->
|
|
<Struct Name="ImpactAutomationResponse" >
|
|
<!-- Response ID matching request from ({@link ImpactAutomationRequest}) -->
|
|
<Field Name="ResponseID" Type="int64" />
|
|
<!-- Automation response from the request. A valid ImpactAutomationResponse must define TrialResponse (null not allowed). -->
|
|
<Field Name="TrialResponse" Type="AutomationResponse" Series="CMASI" Optional="false" />
|
|
<!-- Associated play ID -->
|
|
<Field Name="PlayID" Type="int64" />
|
|
<!-- Associated solution ID -->
|
|
<Field Name="SolutionID" Type="int64" />
|
|
<!-- Flag indicating 'sandbox', i.e. not to be implemented -->
|
|
<Field Name="Sandbox" Type="bool" Default="false" />
|
|
<!-- Set of vehicle-to-task summaries that will be implemented by this automation response. Including timing, communication, and remaining energy -->
|
|
<Field Name="Summaries" Type="TaskSummary[]" MaxArrayLength="512" />
|
|
</Struct>
|
|
|
|
<!-- Point of interest -->
|
|
<Struct Name="PointOfInterest" >
|
|
<!-- ID for points of interest -->
|
|
<Field Name="PointID" Type="int64" />
|
|
<!-- Point of interest location. A valid PointOfInterest must define Location (null not allowed). -->
|
|
<Field Name="Location" Type="Location3D" Series="CMASI" Optional="false" />
|
|
<!-- Action that updated this point of interest (e.g. created, destroyed, modified) -->
|
|
<Field Name="PointAction" Type="AreaActionOptions" Default="Created" />
|
|
<!-- Human readable label for point of interest -->
|
|
<Field Name="PointLabel" Type="string" />
|
|
<!-- Background Behavior point is true if point is for background behavior -->
|
|
<Field Name="BackgroundBehaviorPoint" Type="bool" Default="false" />
|
|
</Struct>
|
|
|
|
<!-- Line of interest -->
|
|
<Struct Name="LineOfInterest" >
|
|
<!-- ID for lines of interest -->
|
|
<Field Name="LineID" Type="int64" />
|
|
<!-- List of points to search -->
|
|
<Field Name="Line" Type="Location3D[]" MaxArrayLength="1024" Series="CMASI" />
|
|
<!-- Action that updated this line of interest (e.g. created, destroyed, modified) -->
|
|
<Field Name="LineAction" Type="AreaActionOptions" Default="Created" />
|
|
<!-- Human readable label for line of interest -->
|
|
<Field Name="LineLabel" Type="string" />
|
|
<!-- Background Behavior line is true if point is for background behavior -->
|
|
<Field Name="BackgroundBehaviorLine" Type="bool" Default="false" />
|
|
</Struct>
|
|
|
|
<!-- Area of interest -->
|
|
<Struct Name="AreaOfInterest" >
|
|
<!-- ID for area of interest -->
|
|
<Field Name="AreaID" Type="int64" />
|
|
<!-- Geometry describing the area. A valid AreaOfInterest must define Area (null not allowed). -->
|
|
<Field Name="Area" Type="AbstractGeometry" Series="CMASI" Optional="false" />
|
|
<!-- Action that updated this area of interest (e.g. created, destroyed, modified) -->
|
|
<Field Name="AreaAction" Type="AreaActionOptions" Default="Created" />
|
|
<!-- Human readable label for area of interest -->
|
|
<Field Name="AreaLabel" Type="string" />
|
|
<!-- Background Behavior area is true if point is for background behavior -->
|
|
<Field Name="BackgroundBehaviorArea" Type="bool" Default="false" />
|
|
</Struct>
|
|
|
|
<!-- Impact Point Search Task -->
|
|
<Struct Name="ImpactPointSearchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- Point to search (from available points of interest). Only valid if ID is non-zero -->
|
|
<Field Name="SearchLocationID" Type="int64" />
|
|
<!-- Defines coordinates directly, only used when SearchLocationID is non-zero -->
|
|
<Field Name="SearchLocation" Type="Location3D" Series="CMASI" Default="null" Optional="true" />
|
|
<!--Minimum distance that an aircraft must maintain from the point of interest. -->
|
|
<Field Name="StandoffDistance" Type="real32" Units="meter" Default="0" />
|
|
<!-- A list of acceptable look-angles for this task. Each wedge is defined relative to true North. To be a valid look angle, a sensor must be looking from a direction within the bounds of the wedge. -->
|
|
<Field Name="ViewAngleList" Type="Wedge[]" MaxArrayLength="64" Series="CMASI" />
|
|
<!-- Loiter action to complete to fulfill task. If null, then simply points camera but main trajectory does not change. Otherwise, completes the specified loiter action. -->
|
|
<Field Name="DesiredAction" Type="LoiterAction" Series="CMASI" Default="null" Optional="true" />
|
|
</Struct>
|
|
|
|
<!-- Search task with specified search pattern -->
|
|
<Struct Name="PatternSearchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- Point at which to search is centered (from available points of interest) -->
|
|
<Field Name="SearchLocationID" Type="int64" />
|
|
<!-- Defines coordinates directly, only used when SearchLocationID is non-zero -->
|
|
<Field Name="SearchLocation" Type="Location3D" Series="CMASI" Default="null" Optional="true" />
|
|
<!-- Search pattern to use -->
|
|
<Field Name="Pattern" Type="AreaSearchPattern" Default="Spiral" />
|
|
<!-- Pattern extent -->
|
|
<Field Name="Extent" Type="real32" Units="meters" Default="0.0" />
|
|
</Struct>
|
|
|
|
<!-- Area search task with specified direction -->
|
|
<Struct Name="AngledAreaSearchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- Area to search (from available areas of interest) -->
|
|
<Field Name="SearchAreaID" Type="int64" />
|
|
<!-- Sweep angle defined from true North in clockwise manner -->
|
|
<Field Name="SweepAngle" Type="real32" Units="degrees" />
|
|
<!-- Optional start point that must be reached before beginning search -->
|
|
<Field Name="StartPoint" Type="Location3D" Series="CMASI" Default="null" Optional="true" />
|
|
</Struct>
|
|
|
|
<!-- Defines a line search task.
|
|
A line search is a list of points that forms a polyline. The ViewAngleList determines
|
|
from which direction the line may be viewed. View angles are specified using the {@link Wedge} type. If the
|
|
UseInertialViewAngles option is true, then wedges are defined in terms of North-East coordinates, otherwise
|
|
wedges are defined relative to the line segment currently being viewed (a vector from point i through point i+1).
|
|
To be a valid look angle, the line segment must be viewed from an angle within the bounds of the wedge.
|
|
-->
|
|
<Struct Name="ImpactLineSearchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- ID of line to search (from available lines of interest) -->
|
|
<Field Name="LineID" Type="int64" />
|
|
<!-- Defines a list of acceptable look-angles for this task. See the documentation above for details. -->
|
|
<Field Name="ViewAngleList" Type="Wedge[]" MaxArrayLength="64" Series="CMASI" />
|
|
<!-- If true, the ViewAngleList specifies inertial (North-East) angles. See documentation above. -->
|
|
<Field Name="UseInertialViewAngles" Type="bool" Default="false"/>
|
|
</Struct>
|
|
|
|
<!-- Vehicle Watch task -->
|
|
<Struct Name="WatchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- Entity ID to follow and watch -->
|
|
<Field Name="WatchedEntityID" Type="int64" />
|
|
</Struct>
|
|
|
|
<!-- Multi vehicle overwatch task -->
|
|
<Struct Name="MultiVehicleWatchTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- Entity ID to follow and watch -->
|
|
<Field Name="WatchedEntityID" Type="int64" />
|
|
<!-- Number of vehicles to simultaneously overwatch the target -->
|
|
<Field Name="NumberVehicles" Type="byte" Default="1" />
|
|
</Struct>
|
|
|
|
<!-- Task for providing comm relay support -->
|
|
<Struct Name="CommRelayTask" Extends="Task" Series="CMASI" >
|
|
<!-- ID of entity which requires comm relay support -->
|
|
<Field Name="SupportedEntityID" Type="int64" />
|
|
<!-- Destination location for supported entity, if known. -->
|
|
<Field Name="DestinationLocation" Type="CMASI/Location3D" Default="null" Optional="true" />
|
|
<!-- ID of entity to which communication will be delivered (i.e. Tower ID) -->
|
|
<Field Name="TowerID" Type="int64" />
|
|
</Struct>
|
|
|
|
<!-- Task for using multiple ground vehicles to block access to an area. Given a
|
|
point to secure and a standoff distance, task identifies number (K) routes that must
|
|
be blocked to successfully deny access to the area. If there are not enough eligible
|
|
vehicles, then this task will use the maximum number of eligible vehicles in a best
|
|
effort strategy which attempts to maximize radial coverage. -->
|
|
<Struct Name="CordonTask" Extends="Task" Series="CMASI" >
|
|
<!-- Block road access to this location. A valid CordonTask must define CordonLocation (null not allowed) -->
|
|
<Field Name="CordonLocation" Type="CMASI/Location3D" Optional="false" />
|
|
<!-- Distance away from 'CordonLocation' that access should be blocked -->
|
|
<Field Name="StandoffDistance" Type="real32" Units="meters" Default="100" />
|
|
</Struct>
|
|
|
|
<!-- Task for using multiple vehicles to surround an entity, for example,
|
|
multiple surface vehicles surrounding incoming enemy ship. -->
|
|
<Struct Name="BlockadeTask" Extends="Task" Series="CMASI" >
|
|
<!-- Entity to surround and deny access -->
|
|
<Field Name="BlockedEntityID" Type="int64" />
|
|
<!-- When in blocking formation, the distance that vehicles should stand off. -->
|
|
<Field Name="StandoffDistance" Type="real32" Units="meters" Default="0" />
|
|
<!-- Number of vehicles to simultaneously block the target -->
|
|
<Field Name="NumberVehicles" Type="byte" Default="1" />
|
|
<!-- Biases the blockade so that more vehicles are between enemy and protected
|
|
location. If null location is given, then blockade attempts to block in direction
|
|
of enemy travel -->
|
|
<Field Name="ProtectedLocation" Type="CMASI/Location3D" Default="null" Optional="true" />
|
|
</Struct>
|
|
|
|
<!-- Task for targeting surveillance at an offset of a moving entity, for example to
|
|
scout ahead of a convoy. -->
|
|
<Struct Name="EscortTask" Extends="SearchTask" Series="CMASI" >
|
|
<!-- ID of entity which will provide the basis for the escort. Tasked vehicle
|
|
will attempt to stay 'StandoffDistance' ahead of this entity on its route. -->
|
|
<Field Name="SupportedEntityID" Type="int64" />
|
|
<!-- ID of line which describes the route that the 'SupportedEntityID' is following.
|
|
If the 'SupportedEntityID' is one of the controlled entities, such as a taskable ground
|
|
vehicle, then 'RouteID' can be zero and this task will use current, known route for that
|
|
vehicle. Otherwise, 'RouteID' must be an ID for a previously described '{@link LineOfInterest}'. -->
|
|
<Field Name="RouteID" Type="int64" />
|
|
<!-- Waypoints that the supported entity is presumed to be following if 'RouteID' is zero -->
|
|
<Field Name="PrescribedWaypoints" Type="CMASI/Waypoint[]" MaxArrayLength="1024" />
|
|
<!-- Distance ahead (positive) or behind (negative) that the vehicle will provide
|
|
surveillance relative to 'SupportedEntityID's location on route 'RouteID' -->
|
|
<Field Name="StandoffDistance" Type="real32" Units="meters" Default="100" />
|
|
</Struct>
|
|
|
|
<!-- Requests the latest configurations for vehicles in the system -->
|
|
<Struct Name="ConfigurationRequest">
|
|
<!-- Vehicle IDs for which the corresponding configuration should be sent. If the list is empty, all available configurations should be sent in response. -->
|
|
<Field Name="VehicleID" Type="int64[]" MaxArrayLength="16" />
|
|
</Struct>
|
|
|
|
<!-- Reports on navigability of the water in the "Area". Based on the WeatherReport CMASI message, designed to allow changes during execution. -->
|
|
<Struct Name="WaterReport">
|
|
<!-- Area for which this report is valid. A valid WaterReport must define Area (null not allowed) -->
|
|
<Field Name="Area" Type="AbstractGeometry" Series="CMASI" Optional="false" />
|
|
<!-- Speed of the current, e.g. due to tides or river flow -->
|
|
<Field Name="CurrentSpeed" Type="real32" Units="meters/sec"/>
|
|
<!-- Direction of the current -->
|
|
<Field Name="CurrentDirection" Type="real32" Units="degree"/>
|
|
<!-- Wave direction of travel. Generally in the direction of the wind, except near sea coasts-->
|
|
<Field Name="WaveDirection" Type="real32" Units="degree"/>
|
|
<!-- Average wave height -->
|
|
<Field Name="WaveHeight" Type="real32" Units="meters"/>
|
|
</Struct>
|
|
|
|
<!-- Region that defines water areas navigable for surface vehicles. Ground vehicles
|
|
should not enter this zone. -->
|
|
<Struct Name="WaterZone" Extends="CMASI/AbstractZone" />
|
|
|
|
</StructList>
|
|
</MDM>
|