Jonathan Earp Résumé

Jonathan Earp

Electrical and Mechanical Engineering, University of Edinburgh

Download PDF FAA Part 107 Remote Pilot U.S. Citizen

Tailor to a role

Pick one to put the most relevant work first and hide the points that don't apply.

First-year Electrical and Mechanical Engineering student at the University of Edinburgh and FAA Part 107 remote pilot. I build and fly my own drones, and since 2024 I've worked at Lawrence Berkeley National Laboratory on StoveCam, a camera sensor for a childhood asthma study.

01

Experience

Lawrence Berkeley National Laboratory — Student Research Assistant

StoveCam: low-cost camera sensor for an indoor air quality and childhood asthma study

  • Built a Raspberry Pi 5 unit with RGB and thermal cameras that captures the cooktop every 60 s in occupied homes, then reworked the mounts, wiring and capture scripts until it ran reliably across different kitchens.
  • Wrote a three-stage Python labeling pipeline: an on-device brightness gate, a low-cost cooking screen, then Gemini vision for food, method, burner and cookware. 40,000+ RGB/thermal pairs from three homes at $0.018 per analyzed pair.
  • Validated the output against 506 hand-graded pairs: mean score 8.1/10, with zero burner or cooking-method errors. Most failures traced to residual-heat false positives. Abstract submitted to ISES 2026.

Write-up ↗

02

Projects

FPV and UAS Builds — Personal

Betaflight, ArduPilot, ExpressLRS
  • Built 8 multirotors from 45 mm to 5 in. Selected the motors, STM32-based ESCs and props, then soldered and integrated the flight controller, receiver, GPS and video system on each.
  • Calibrate GPS, compass, barometer and IMU on every build, and tune PID loops over repeated test flights using flight logs.
  • 400+ flight hours, including car-chase, real estate and music video shoots. All crash repairs and rebuilds done myself.

Reel and gallery ↗

3D Reconstruction from FPV Flight Data — S.P.L.O.O.G.E

Python, COLMAP, Rust, WebGL
  • Built a pipeline from raw DJI O4 Pro video and gyro telemetry to one 3D Gaussian Splatting model of two flights six days apart: 7,470 of 7,471 frames registered at 0.82 px mean reprojection error.
  • Estimated the uncalibrated lens focal length by regressing optical flow against gyro rotation (R² = 0.967), and cut video-to-render misalignment from 72.3 px to 0.89 px by undistorting the footage.
  • Confirmed 13,482 verified image matches linked the two sites before committing to an 18-hour mapping run.
  • Traced a rendering defect to the viewer's near-plane cull after measuring four other fixes, including a depth-distortion loss I implemented in Rust. Holes fell from 51.2% to 4.4%, with no regressions across 56 test poses.

Write-up ↗ Code ↗

Head-Royce VEX Robotics — Team Captain

  • Designed and built robot mechanisms, then tuned PID control with the programmers over repeated test runs.
  • State Champion, Worlds Division Finalist, 2× Tournament Champion, 2× Excellence, 3× Build, 2× Amaze, 1× Design.

Automated Video Rendering Pipeline — P.E.T.E.R

Python, OpenCV, Playwright, ffmpeg
  • Wrote a 4,100-line Python pipeline that renders video clips as Desmos equations and uploads them. 4.4M plays.
  • Profiled rendering (94% capture, 4% tracing) and parallelized capture for a 1.55× speedup, then found a timing bug corrupting 39 of 40 frames and fixed it by sweeping the wait threshold until output converged.

Write-up ↗ Code ↗