Skip to content
UNCREW-30-Placement-of-UTM-interraction PathfinderErrorHandling

UNCREW-30-Placement-of-UTM-interraction PathfinderErrorHandling

Andi Lamprecht Andi Lamprecht ·· 2 min read· Accepted
ADR-0013 · Author: GitHub Service Account (Deactivated) · Date: 2025-01-15 · Products: uncrew
Originally UNCREW-30-Placement-of-UTM-interraction_PathfinderErrorHandling (v5) · Source on Confluence ↗

Handling of Pathfinder Errors

78a7339f8cfb87da7a12690685a43054-UNCREW-3285-getPath-sad.drawio.png

Temporary and Permanent Errors

Destination/Origin Not Navigable

According to Pathfinder a waypoint isn’t navigable if any of the requested cost functions thinks it’s not navigable. If one of those deals
with temporal obstacles it is worth asking if some of them are short lived. Practically this the resistance cost function
dealing with operational intents.

We instantiate the resistance cost function giving it resistance data. Resistance data is brought by the resistance airspace fetcher,
which holds airspaces. Its _underlying could
keep the airspaces for the lifetime of the scene and expose something that can enrich the error message with the list of airspaces intersecting with the feral waypoint.

The caller (or even pathfinder) could iterate through these airspaces and work out if all of them have schedule and when do all those schedules finish.
That would hint how much to delay the start and have a better chance of succeeding.

Now this is only this easy for the time coordinate of the origin. The destination collides with a scheduled airspace if it’s contained within this airspace
spatially and within the mission duration
time span following the start time.

It will not be difficult for the pathfinder to offer, along the Destination not navigable, a hint for what to do:

{
    "message': 'Destination within or too close to a restricted airspace',
    "point": [-94.2216115, 36.4047161],
    "type": "milestone_exception"}
+   "hint": {
+       "delay-start-by-sec": 120
+   }
+   "intersecting-airspaces': {
+      "operational-intents": [{
+         "mission_id": "29b00731-07c8-4724-856e-66d11eb820ba",
+         "start-time": "2024-10-24T10:58:57Z",
+         "end-time": "2024-10-24T10:59:41Z",
+         "ceiling-mts": 25,
+         "floor-mts": 32,
+         "coordinates": [[-94.22500645896399, 36.368244535886035], ...]
+      }]
+   }
}

No Route

It’s equally easy to work out whether the no route has a temporary character. Simply try again without operational-intents airspace filter and if it succeeds, then the problem should go away. It’s way more difficult to work out how much to delay the start. The expensive idea is to keep trying in successive increments of the start delay, but we could also try:

  • Pass the result of the 2nd call to pathfinder’s evaluate and count on it to produce the list of intersecting-airspaces. That’s still 3 calls and the hint has to be calculated by the caller.
  • If Pathfinder sees no-route, have it return all airsapces paged into the scene.
Last updated on