Advanced Routing for Uncrewed Systems

Developer Blog

Advanced Routing for Uncrewed Systems


Published on: 2026-04-07

Tagged with: Analysis

When planning missions for uncrewed systems, whether uncrewed aerial vehicles (UAVs), uncrewed ground vehicles (UGVs), or other remote-controlled or autonomous platforms, route calculation is far more than simply connecting waypoints with straight lines. Mission success depends on intelligent routing that accounts for environmental constraints, safety considerations, and operational objectives.

In this article, we’ll explore Carmenta Engine’s routing capabilities through the AirRouteOperator and TerrainRouteOperator. It introduces concepts used in Carmenta UAS Mission Kit – a set of proven and reliable tools, training, and support specifically designed for the development of UAS applications.

Understanding Routing Operators

Carmenta Engine provides specialized routing operators designed for different mobility domains:

  • AirRouteOperator: Route planning for rotary-wing aircraft, focusing on nap-of-the-earth flight that avoids restricted airspace and exploits terrain for concealment
  • TerrainRouteOperator: Route planning for ground-based vehicles, accounting for terrain trafficability and obstacles

Side-by-side comparison of AirRouteOperator showing 3D aerial route avoiding restricted airspace volumes (left) and TerrainRouteOperator showing 2D ground route navigating around restricted areas (right)

  • AirRouteOperator (left), TerrainRouteOperator (right)

Both operators share a common philosophy: they balance multiple environmental and operational constraints to calculate routes that optimize for speed while respecting safety and mission requirements.

Key Routing Inputs

The routing operators transform simple waypoint lists into sophisticated flight or movement plans by considering:

  • Waypoints: Mandatory points of passage with mission objectives
  • Terrain data: Elevation data from digital terrain models (DTM) or digital surface models (DSM) as well as terrain types classification that define ground and surface heights
  • Vehicle characteristics: Speed profiles, climb/descent capabilities, and operational limits
  • Environmental constraints: Restricted areas, hazardous zones, and concealment factors
  • Situational awareness: Threat positions, friendly force locations, and tactical considerations

From Waypoints to Routes

Note: This section focuses on the AirRouteOperator, but the concepts apply broadly to TerrainRouteOperator as well.

Let’s examine how waypoints become routes. In Carmenta Engine, waypoints for a single route are typically represented as a Feature with a LineGeometry, where each node represents a mandatory point of passage.

The routing operator transforms this into a detailed route that takes terrain constraints into account, respects vehicle capabilities, and optimizes for mission parameters.

3D terrain view showing UAV flight path with waypoints routing around yellow and red restricted airspace volumes over mountainous terrain

Route Legs and Attributes

The operator returns one leg per waypoint pair, each containing attributes like:

  • routeFound (boolean): True if a route was found for this leg, otherwise False
  • legDistance (double): Horizontal travel distance along this leg, in meters
  • legTimeSeconds (double): Travel time along this leg, in seconds

These enable features like arrival time estimates, feasibility validation, and identifying segments that need replanning.

See the full attribute lists: AirRouteOperator Basic outputs | TerrainRouteOperator Basic outputs

Nap-of-the-Earth and Concealment

The AirRouteOperator specializes in nap-of-the-earth (NOE) routing — low-altitude flight using terrain as cover. Routes are guided by safety factors applied via lowFlightSafetyInput:

  • > 1.0: Safer areas (route encouraged)
  • = 1.0: Neutral
  • < 1.0: Risky areas (route discouraged)

Concealment rasters can be generated using VisibilityIndexOperator for terrain masking, ShadowOperator for shadow coverage, or from tactical factors like radio coverage and friendly force proximity.

When combining multiple constraints, use FunnelOperator for priority-based merging or RasterMergeOperator for arithmetic operations.

Airspace Deconfliction

Routes must respect airspace restrictions. The airspaceInput accepts 2D vector features (extruded into volumes) or volume-encoding rasters from LineOfSightOperator or AirspaceCoverageOperator.

Safety levels via airspaceSafety:

  • 0: forbidden
  • 0-1: restricted
  • >1: encouraged

Routing in Map Configurations

The typical pattern for using routing operators in a px-file:

  1. Set up elevation data: Configure a ReadOperator connected to your DTM/DSM dataset.
  2. Define vehicle characteristics:

    • AirRouteOperator: Create an AircraftType with speed profiles for different climb/descent angles.
    • TerrainRouteOperator: Create a VehicleType with speed profiles for different terrain conditions.
  3. Create restricted zone constraints:

    Define restricted zones as polygon features in a MemoryDataSet.

    • AirRouteOperator: Use attributes safety, topElevation, and bottomElevation for 3D airspace volumes.
    • TerrainRouteOperator: Use attributes safety and optionally name for tracking time/distance in named areas.
  4. Combine constraint inputs (optional):

    Use FunnelOperator to merge multiple constraint sources into a single input.

    • AirRouteOperator: Merge airspace volumes and threat coverage rasters into airspaceInput.
    • TerrainRouteOperator: Merge restricted area polygons into restrictedAreaInput.
  5. Generate threat coverage (air routing only): Use AirspaceCoverageOperator to create volume-encoding rasters from enemy sensor positions.
  6. Create low-flight safety raster (air routing only): Use VisibilityIndexOperator to identify terrain providing concealment for nap-of-the-earth flight.
  7. Configure terrain classification (terrain routing only): Set up groundConditionInput for soil strength and surfaceStructureInput for surface roughness. Optionally add road networks via roadInput.
  8. Create waypoints dataset: Set up a MemoryDataSet to hold waypoint line features (populated at runtime).
  9. Configure the routing operator: Connect inputs to AirRouteOperator or TerrainRouteOperator.
  10.  Visualize the route: Create LineVisualizers with conditions to differentiate successful routes (routeFound) from failed legs.
  11.  Place in a layer: Add to an OrdinaryLayer with DynamicAsync cache mode for dynamic updates.

Terrain routing note: While AirRouteOperator relies primarily on elevation data for terrain-following flight, TerrainRouteOperator benefits from additional terrain type inputs — ground condition and surface structure rasters — that model how different soil types and surface roughness affect vehicle mobility.

Carmenta Engine configuration diagram showing AirRouteOp operator chain with inputs from FunnelOp, ElevationReadOp, VisibilityIndexOp, AirspaceCoverageOp, and WaypointsReadOp

This configuration example air_route_operator.px can be found in the Sample Map Configurations folder within Carmenta Engine’s installation directory

Routing as a Service

While displaying routes in a map is valuable, many applications need to use routing results programmatically — for export, simulation, onboard re-routing, or integration with other systems.

Backend Routing with GetFeatures

All Carmenta Engine operators support the GetFeatures method, which retrieves calculated results without visualization:

// C++ example
ConfigurationPtr config = new Configuration("routing_config.px");

AirRouteOperatorPtr airRouteOp = dynamic_cast<AirRouteOperator*>(config->getPublicObject("AirRouteOp").get());

MemoryDataSetPtr waypointsMemDs = dynamic_cast<MemoryDataSet*>(airRouteOp->findChildObject("WaypointsMemoryDataSet").get());

waypointsMemDs->clear();

LineGeometryPtr routeGeometry = new LineGeometry();
routeGeometry->points()->add(start()->point());
routeGeometry->points()->add(destination()->point());
FeaturePtr routeFeature = new Feature(routeGeometry, Crs::wgs84LongLat());

{
    Guard guard(waypointsMemDs);
    waypointsMemDs->insert(routeFeature);
}

// Calculate Route-features
auto features = airRouteOp->getFeatures(Crs::wgs84LongLat());

// Process route legs
while (features->moveNext())
{
    FeaturePtr feature = features->current();
    // Access leg attributes like accumulatedTimeSeconds
    // Providing total travel time along this and all previous legs, in seconds.
    double travelTime = Util::getAttributeValueDouble(feature->attributes(), "accumulatedTimeSeconds", 0.0);
    // ...
}

This enables routing services that can run:

  • Onboard autonomous vehicles for dynamic re-routing
  • In backend servers for mission pre-planning
  • In microservices architectures for route optimization
  • Without any UI dependencies

The UAS Mission Kit: Putting It All Together

The concepts discussed here are implemented in Carmenta’s UAS Mission Kit — a comprehensive sample application for UAV mission planning.

UAS Mission Kit interface showing 3D mission planning with waypoint panel, terrain elevation contours, flight path, and vertical profile chart displaying route elevation changes

The Mission Kit demonstrates:

  • Modular architecture: Reusable C++ modules for routing, export, and analyses
  • 3D mission planning: Interactive waypoint creation and editing in a GlobeView
  • Advanced routing: Nap-of-the-earth calculation with concealment and deconfliction
  • Mission actions: Loiter times, camera orientation, photo/video capture at waypoints
  • Decision support: Vertical profiles, simulated flight, plus analyses for landing zone suitability, best observation locations, and radio coverage
  • Export capabilities: MAVLink format export for integration with ground control stations

The Mission Kit includes full source code, px-file configurations, and a comprehensive training course that teaches you to:

  • Customize routing for your specific vehicle types
  • Integrate your geodata (elevation, land cover, obstacles)
  • Build new analyses using Carmenta Engine operators
  • Export to your preferred mission formats

Why the UAS Mission Kit?

Building a mission planning system from scratch involves solving many complex challenges.

The Mission Kit accelerates your development by providing:

  • Complete implementations: Not just snippets, but functional end-to-end workflows
  • Expert training: Guided learning from Carmenta’s UAS specialists
  • Adaptable foundation: Designed for customization to your requirements
  • Beyond just UAVs: Concepts apply to UGVs and multi-domain operations

Conclusion

Intelligent routing is fundamental to autonomous system operations. Carmenta Engine’s routing operators provide the building blocks, while the UAS Mission Kit shows how to assemble them into a complete mission planning capability.

Whether you’re developing for defense, public safety, infrastructure inspection, or other autonomous operations, understanding these routing concepts will help you build systems that enhance safety, efficiency, and mission success.

Next Steps

For complex routing scenarios, don’t reinvent the wheel — leverage proven solutions and expert guidance to get to operational capability faster.