LESNAR AI Engineering company · Nairobi

Work Autonomous systems

Operation Sentinel

An autonomy stack that flies a PX4 aircraft through a mission, stops for what is really there, and answers to an operator. Built and proven in simulation.

Prototype PX4/Gazebo software-in-the-loop · no physical flight

The corrected stack flies the mission it once froze on

A follow camera in Gazebo tracks the x500 as our autonomy stack flies Run 2's sealed mission: a 25 m box at 10 m, between buildings, walls and poles. Recorded on 31 October 2026 from the corrected code, in real PX4 software-in-the-loop. Simulation, not flight evidence.

  1. 0:01Takeoff and climb to cruise
  2. 0:07Turn at the first waypoint
  3. 0:15Passes the exact spot where the original code held the aircraft still for 8.8 minutes, within 0.15 m
  4. 0:22Turn at the second waypoint, about 9.5 m from the wall
  5. 0:29Back over home, and touchdown

Three spans of one recording, joined by short dissolves; nothing else added. 100.4 m flown.

Four parts are ours. The aircraft, the autopilot and the world are not.

Autonomy bridge

Turns a mission into offboard velocity commands over MAVSDK, and refuses to navigate until PX4 has actually accepted offboard control.

Mission logic

Waypoints, an A* grid and an avoidance field built from the world's real geometry, with a hard stop at the lidar.

Telemetry pipeline

Position, attitude, commands, the full 72-ray scan, battery and mission state, about five times a second, sealed with the run.

Operator console

Dispatches the mission, shows it live, and reports its link to the backend as measured rather than assumed.

Upstream, and credited: PX4 Autopilot flies the aircraft, Gazebo simulates the world, and MAVSDK carries the commands.

One mission, end to end

  1. IdeaFly a mission with no cloud dependency in flight, and eventually without GPS.
  2. ObserveA 72-ray lidar scan and the PX4 estimator.
  3. Model180 obstacles read from the world file the run flew in.
  4. EngineerWaypoints become offboard velocity commands, steered by the grid and the avoidance field.
  5. ProtectA lidar hard stop, a heading guard, and an abort if offboard control cannot be engaged.
  6. Human reviewAn operator dispatches the mission and watches it run.
  7. ActPX4 flies the x500 in Gazebo.
  8. ProveThe run is sealed: a manifest with a SHA-256 for every file, the mission, the bridge log, the telemetry and the world.

7 sealed runs. The first two failed.

Every run flew the console's training mission: a 25 m box at 10 m. Two timed out after 631 s. After two fixes, 5 of 5 completed, in 126–216 s. Each run number opens its sealed record on GitHub.

Seven sealed SITL runs, in the order flown
RunFlownBridge codeOutcomeDuration
128 Sep, 19:47906a465 original bridgeTimed out631 s
228 Sep, 20:376a40f0f offboard fixTimed out631 s
328 Sep, 20:59bcf9e52 geometry fixCompleted126 s
429 Sep, 08:203ba2677 stack on plain LinuxCompleted126 s
529 Sep, 08:403ba2677 stack on plain LinuxCompleted216 s
630 Sep, 07:173ba2677 stack on plain LinuxCompleted126 s
730 Sep, 07:423ba2677 stack on plain LinuxCompleted126 s

The drone stopped for a wall that was not there.

Run 1 never left its hover. The bridge asked PX4 for offboard control in a gap between setpoints, PX4 refused, and the bridge carried on as if it were navigating. It now sends a setpoint before every request, retries, and aborts the mission if control cannot be engaged.

Run 2 flew the north leg, turned east, and stopped 1.6 m from an obstacle. It held there for 8.8 minutes.

The simulated lidar modelled every box as a disc half as wide as its longest side. Wall_1, 1 m thick and 38 m long, became a 19 m disc reaching into the flight path. The real wall was 20.7 m away, beyond the sensor's range.

The fix intersects each ray with each obstacle in that obstacle's own frame, rotation included. It agreed with brute-force ray marching on 3,000 random shapes before it flew. Every run since has completed.

Plan view of the training box, sealed runs 2 and 3 Run 2 flies north 25 metres, turns east and stops at 13.6 metres east, 24.3 metres north. Its recorded scan there reads 0 to 2.4 metres across the 125 degrees ahead of it, and 20 metres, its range, everywhere else. The nearest real obstacle, Wall_1, is a wall 1 by 38 metres centred at 35, 25. The pre-fix lidar model treated it as a disc of radius 19 metres. Run 3 flies the whole box. home waypoint 2 Wall_1 · 1 × 38 m the old model: a 19 m disc held here its scan
Run 2, and the 72-ray scan it recorded where it stopped Run 3, after the fix Wall_1 as the old model saw it. Drawn from the runs' telemetry and world files; north is up.
Ground speed against mission time, runs 2 and 3 Run 3 finishes the mission in 126 seconds. Run 2 holds at under 0.1 metres per second, airborne, from 68 to 599 seconds, 8.8 minutes, until the mission times out at 631 seconds. 0 min 2 min 4 min 6 min 8 min 10 min 0 1 2 8.8 minutes at a standstill
Ground speed in metres per second against mission time, from the same two runs.

Before the missions: 87 perception runs

Perception diagnostics, 87 runs, 13 to 16 April 2026 34 of 87 runs recorded detections. 17,842 of 71,813 events were proximity alerts. Column height is the square root of each run's event count. 13 Apr 14 Apr 15 Apr 16 Apr
Diagnostic runs of the perception stack, 13 to 16 April 2026. Thirty-four recorded detections; fifty-three recorded none, the short ticks along the base. The solid foot of each column is proximity alerts, 17,842 of 71,813 events. Heights use a square-root scale so the smaller runs stay visible.

GPS-denied flight is configured, not yet shown.

The estimator carries the parameters for flying without satellites. The sealed runs fly with simulated GPS and a compass. Flying the same mission with GPS fusion off is the next proof, not a result.

  • EKF2_GPS_CTRL GPS fusion disabled
  • EKF2_AID_MASK optical-flow aiding
  • EKF2_HGT_MODE range sensor for height

What this page does not show

  • Any physical aircraft. None has been flown.
  • A field test, a range or an endurance figure.
  • More than one aircraft at a time.
  • Height in the lidar model: the scan is flat.
  • Flight evidence in the film's opening or its layered space; both are explanatory renderings, and its operator surface is a recorded replay.

Sources and credits

Source and every sealed run: github.com/lesnargitonga/LesnarAI. Airframe model: PX4 Gazebo x500_base, BSD 3-Clause, Copyright © 2022 Rudis Laboratories, author Benjamin Perseghetti, derived from the NXP HoverGames development kit. PX4, Gazebo and MAVSDK are the work of their own maintainers.

Building autonomy, simulation or telemetry?

We can start from your mission, your aircraft model or your logs.

Start a conversation All work