AJ Santa CruzPortfolio · Rev 2026.1Cambridge, MA · MIT
← Work

P·02 · Mechanical · Electrical

360° Survey Drone for Crack Detection

An autonomous survey drone on an open ArduPilot stack, with its camera mounts and filtering reworked to stop vibration smearing the 360° footage.

At a glance

  • 2.5 Gpeak vertical acceleration
  • ~55 mphtop horizontal speed
  • 15–20 minflight time on a 4000 mAh pack with the survey payload
Where
Geolabs, Inc.
Role
Designer and builder
Status
Active
Tools and skills
  • Onshape
  • ANSYS Mechanical (FEA)
  • ArduPilot
  • ExpressLRS
  • EdgeTX
  • FFT harmonic notch filtering
  • IMU log analysis
  • OMAX abrasive waterjet
  • Carbon-fiber fabrication
  • TPU 3D printing
  • 3D scanning
Two carbon-fiber drones on a curb: the 360° capture build carrying an Insta360 camera, and a second quad

The problem

Geolabs, the largest geotechnical firm in Hawaii, documents sites and looks for structural cracks from the air. Commercial DJI drones did not fit their needs:

  • Compliance: government policy restricts DJI hardware on some of their projects.
  • Programmability: they wanted an open flight controller that runs custom autonomous missions and can take AI and computer-vision code.
  • Cost: it had to be clearly cheaper than a DJI system.
  • Endurance: 15 to 20 minutes of flight while carrying survey cameras.
  • Modularity: interchangeable cameras and sensors for different missions.

No off-the-shelf drone met all of these, so I designed and built one. This page covers the 7-inch 360° capture build. It is one of four drones in the Geolabs site-mapping program, which span 5- to 15-inch propellers. The motor controller I designed for the program has its own page, and so does the photogrammetry flow survey.

Approach

An open stack instead of DJI

The flight controller runs ArduPilot for autonomous waypoint missions, with a RadioMaster TX12 transmitter on the ExpressLRS protocol for long-range control. Both are open, which is what makes custom missions and onboard vision code possible.

The RadioMaster TX12 transmitter running EdgeTX
The RadioMaster TX12 running EdgeTX over an ExpressLRS link.

Components picked for clean data

  • Frame: an iFlight XL7 Evo in carbon fiber, chosen to minimize vibration so the IMU and gyroscope data stay accurate.
  • Propulsion: AOS Supernova 2807 low-KV motors on 7-inch propellers, for torque and efficiency under payload.
  • Battery: 4000 mAh, for 15 to 20 minutes of flight.
  • Cameras: a Caddx FPV camera for the live piloting feed, and an Insta360 at 5.6K for 360° site documentation.
The AOS Supernova motor on the frame arm, with the battery behind
An AOS Supernova 2807 low-KV motor on the carbon arm. The 4000 mAh pack sits behind it.

Everything modeled first

I modeled every component in Onshape, including the frame modifications for the camera mounts and the payload bay. For the ground station, I 3D-scanned the TX12 and designed a mount that holds a monitor directly on the transmitter, so the operator watches the feed without a separate screen.

Onshape CAD of the carbon-fiber airframe
The carbon-fiber airframe in Onshape.
Onshape assembly of an airframe with a payload bay
A full Onshape assembly with the payload bay (orange) and landing skid under the frame.

Engineering detail

Vibration: tuning it out

Motor and propeller vibration shakes the cameras and corrupts gyro data. I recorded raw IMU gyro data on test flights and ran frequency analysis to find the dominant vibration modes from the motor-propeller interaction. ArduPilot’s FFT-based harmonic notch filter then tracks those frequencies and their harmonics during flight and removes them. That cut the resonance reaching the cameras and removed the gyro noise that would otherwise degrade flight stability.

Wiring the flight controller and receiver on the bench
Mid-build on the bench: flight controller, wiring and the pink printed landing feet.

Vibration: the mount that flexed

My first camera mounts were 3D-printed PLA. Field testing showed they flexed under motor vibration, and the footage was visibly degraded. I ran FEA on the mount geometry in ANSYS under realistic loads, including a light-crash case. It showed the PLA part lacked the stiffness to stop micro-movement in flight and would fail on impact.

FEA of the PLA camera mount
ANSYS FEA of the PLA camera mount under a crash-type load. The stress it predicted meant the PLA part would fail on impact.

I rejected reprinting the mount in PLA and moved to carbon-fiber sheet. I learned to run an OMAX abrasive waterjet and cut the mounting plates from sheet, which gave the rigidity with little added weight. The Insta360 now sits on top of the frame on the carbon mounts, with TPU bumpers protecting the camera and lens. The FPV camera mounts at the front in a TPU housing, and the receiver antenna exits the rear through a TPU routing channel. The structure was validated in FEA before it flew.

Carbon-fiber sheet on the waterjet bed after cutting
Carbon-fiber sheet on the OMAX waterjet bed, with the mount plates cut out.
A finished waterjet-cut carbon-fiber mount plate
A finished carbon-fiber mount plate, cut on the waterjet.

Testing

AJ standing under an early test drone in flight
Early drone testing.
Test flight.
Height test.

Results

The finished 360° capture drone on a curb
The finished 360° build: Insta360 on the carbon top mount, FPV camera at the front, printed landing feet.

The finished drone reaches about 2.5 G of vertical acceleration and about 55 mph horizontally, and flies 15 to 20 minutes on a 4000 mAh pack with the survey payload. It flies programmable waypoint missions for repeatable documentation, captures 360° imagery, and its mounts accept thermal cameras, lidar or other sensors. The hardware and software are open, so it meets the projects’ DJI restrictions at a lower system cost than a commercial drone.

What did not work: the first PLA camera mounts, which flexed and smeared footage until I replaced them with carbon fiber.

My contribution

I selected the components, modeled the drone and its mounts in Onshape, designed the transmitter monitor mount from a 3D scan, tuned the notch filtering from flight logs, ran the mount FEA, cut the carbon parts on the waterjet, and built and flight-tested the drone.

Contact