Case study · in progress

Geometry-Aware Autonomous FPV Drone

A cheap FPV camera drone, a companion Android app, and nothing else. The goal: a policy that perceives depth from onboard cameras and flies the drone end to end, trained in simulation and transferred to the real hardware.

the drone, as it will see itself: from cameras only
Hardware
Sub-$50 FPV drone, two cameras
Recovered
Control, video, camera switch
Tools
scapy, tcpdump, jadx, OpenCV
Next
PPO in sim, sim-to-real
The movement packetconfirmed byte for byte against the decompiled app
chk = b6 ⊕ b7 ⊕ b8 ⊕ b9XOR checksum over the four axes. Wrong checksum, no movement.
arm → launchThe physical remote's two-stage safety gesture, replayed over WiFi. First real liftoff.

How it came apart.

Every step was a guess, tested on hardware, then confirmed in source. Nothing here came from documentation, because there wasn't any.

  1. Capture the handshakemacOS Wireless Diagnostics into pcap, read with tcpdump and scapy. Found the gateway and a UDP registration handshake.packet capture
  2. Guess the movement packetReconstructed a candidate layout from a related OEM drone hack.hypothesis
  3. Confirm it in sourceDecompiled the Android app with jadx. Roll, pitch, throttle, yaw in bytes 6 to 9, plus XOR checksum.jadx
  4. Lift offReplayed the arm-then-launch gesture over WiFi.first flight
  5. Fix the videoOne deliberately wrong byte per frame, traced to an undocumented XOR step in the app.main.py
  6. Find the second cameraA downward-facing camera, switched by a 7-byte UDP command.hidden hardware
  7. Train PPO in simulationPhysical parameters and measured flight response mapped into the sim in place of telemetry.next
telemetry_probe.py · armed, disarmed, mid-flightZero bytes came back.

The plan was to read IMU data over WiFi. The drone never sends any. That's a result, not a gap: camera perception is the only real-world state this hardware has, and the whole sim-to-real strategy is built around it.

What it sees next.

downward camera

Height from optical flow

Ground distance during takeoff and landing, from the hidden second camera.

forward camera

Lightweight obstacle detection

A geometry-aware state built entirely from vision.

policy

PPO over SAC

Chosen for its sim-to-real record on quadrotors under heavy domain randomisation.

Next case studyMulti-view Generative Augmented 3D Reconstruction Pipeline