The WASP I is a quadcopter navigation system that establishes absolute position without GPS and without any radio link to the ground. A downward-facing camera photographs the terrain, and every frame is matched against georeferenced satellite imagery downloaded before takeoff. Because each fix is tied to a map tile rather than to the previous estimate, error never compounds.
Built and flight-tested with partner: Marcus Wahila.
GNSS signals are extremely weak by the time they reach the ground, so they degrade in dense urban areas, indoors, under heavy precipitation, and behind masking terrain, and both the satellite signal and the control link can be attacked outright by jamming that drowns them out or spoofing that replaces them with false data. Existing countermeasures each carry a penalty: fiber-optic tethers limit range and snag in flight, frequency hopping demands heavy hardware and still loses to wide-band jamming, and directional antennas introduce blind spots and mounting constraints.
Odometry avoids the link entirely — visual odometry and inertial dead reckoning are both self-contained and immune to jamming, but each estimate is referenced to the one before it, so per-observation errors accumulate and drift grows without bound. A system that is both self-contained and drift-free has to fix its position against something external and fixed, without depending on a transmitted signal. Pre-downloaded satellite imagery is exactly that.
The flight camera and the satellite tile both look down at the same ground plane, so the two views are related by a homography, a 3×3 transform capturing rotation, translation, scale, and perspective. Solving it against known ground coordinates recovers the camera’s position in meters.
Reference imagery — a 3×3 mosaic of zoom-20 tiles is loaded at launch, centered on the flight origin, since a single tile covers only 28% of a frame. At the 50 m operating altitude, the camera’s ground sample distance is 0.115 m/px, matched deliberately to the tiles’ 0.1136 m/px so features resolve at the same scale in both images.
Feature matching — ORB keypoints, 2000 per camera frame against 5000 per mosaic, filtered by Lowe’s ratio test at 0.75 to discard repeated textures like tree canopy and rows of similar rooftops, then geometrically verified by RANSAC.
Pose recovery — a homography fitted from ground coordinates, validated by a 5 px reprojection gate plus altitude and tilt plausibility checks before the fix is published.
Image preparation — lens distortion correction and downscaling folded into a single lookup table built once at startup, and CLAHE contrast normalization on an 8×8 grid applied identically to frame and mosaic so descriptors see comparable brightness across times of day and seasons.
The whole pipeline runs onboard as a ROS 2 system, in real time.
The platform is a pre-owned DJI Phantom 3 with an NVIDIA Jetson Orin Nano companion computer and an Arducam IMX477 camera. None of it fits together as bought, and the Phantom’s flight controller is pre-programmed and cannot be retuned — so the payload mount had to work within the airframe’s existing behavior rather than against it.
Payload budget — removing the factory camera and gimbal freed 170 g and exposed usable mounting holes. A coin-slot dead-load rig, loaded incrementally between flights, established 560 g as the most the aircraft could carry and still hold stable flight.
Material — carbon-fiber-reinforced nylon 12 (PAHT-CF), 3D printed, selected over PLA, ABS, and PC on strength-to-weight and stiffness after SOLIDWORKS stress analysis.
Vibration isolation — motor rotation excites the payload at 90–115 Hz in loaded hover and blade passage at twice that. Six dampers in a hexagonal pattern carry the 285 g isolated mass at 0.6 N/mm each, placing the mount’s natural frequency at 18 Hz (ζ = 0.12) — low enough to sit a factor of five below both excitation bands, high enough to resist sway during maneuvers. Transmissibility works out to 0.065 at motor frequency, and 0.026 at blade pass.
Structure — static analysis at 11.2 N, a 4× gravity case standing in for a rough landing, gave a maximum deflection of 0.2138 mm at 4.636 MPa against a 139 MPa yield strength. M3 screws into brass heat-set inserts, M2 for the camera strut, every thread Loctited against vibration.
Seven flights and several hours of flight time with no damage or loosening, and no noticeable loss of agility from the added mass. Across those flights, the system produced 13 successful camera-to-satellite match events. The final two flights — flown over well-featured ground with current tiles — returned absolute position fixes within 10 m of the flight origin, at a mean horizontal error of 8 m measured against the aircraft’s own GNSS receiver, which is itself only specified to ±3 m. Test sites were Mellon Park and Schenley Park in Pittsburgh.
Prototype 1 flew with a camera and no usable IMU, so the full 8-DOF homography had to be estimated from image correspondences alone, with no independent measurement of attitude or scale. The Phantom’s hard 50 m ceiling also pinned the system to zoom-20 tiles, which commercial providers frequently upsample from coarser source imagery, and made it impossible to test performance at other altitudes and frame footprints.
Prototype 2 is in design and addresses all three: a rangefinder for automatic tile scaling, IMUs for aircraft orientation, and a two-axis camera gimbal. Together they reduce the estimation problem to a 2D transformation, which should improve both robustness and throughput.
SOLIDWORKS (static FEA, assembly design) · vibration and modal analysis · 3D printing in carbon-fiber nylon · ROS 2 · OpenCV / ORB feature matching · NVIDIA Jetson · projective geometry
Produced Assembly
With the design validated to a maximum displacement of 0.2mm under the worst load case (4x Gravity), the final modifications were made, and the full assembly was created.
Final Jetson Nano and IMX-477 mount design made for vibration reduction
Prototype 2 -(To be built and modified further)
Our Findings - Report