Skip to content
Caden Nubel

Projects

Autonomous flight, control design, and embedded hardware. UAS and controls work first, followed by earlier coursework.

In progress

Autonomous UAS quadcopter

Personal project

An autonomous multirotor built to find and follow people, aimed at search and rescue. PX4 runs flight control on a Pixhawk 6X in a Holybro X500 V2 frame, and an NVIDIA Jetson Orin Nano runs onboard detection with a YOLO26n model, sending velocity commands back to PX4 through MAVSDK.
  • Developing an autonomous sUAS using PX4, QGroundControl, and NVIDIA Jetson
  • Implementing and testing autonomous flight and control functionality
  • Carrying over UAS experience from 10 years of assembly.
  • PX4
  • MAVSDK
  • NVIDIA Jetson Orin Nano
  • YOLO26n
  • Gazebo SITL
Follow the build log for current progress.
2016 to present

UAS design, build, and flight control

Personal

I have designed, built, and flown more than ten multirotors, from airframe assembly through flight tuning, and raced them locally. The work taught me flight controllers and control loops from the inside: every build ends with PID tuning against how the aircraft actually flies.
  • Configured Betaflight flight controllers and tuned PID rates
  • Diagnosed motor, ESC, and RF link faults; troubleshot FPV video and radio transmitter links
  • Soldered and repaired power distribution, motor, and video and telemetry wiring
  • Applied analog and digital filtering.
Two quadcopter builds side by side on a workbench
Two freestyle builds on the bench.
Quadcopter with red propellers
A completed build ready for tuning flights.
Fall 2026, in progress

Gantry crane control design

Modern Control Design (ROBO 566), Colorado School of Mines

A graduate controls project, completed individually: model a gantry crane whose hoist velocity is commanded by a servo, then design a discrete-time controller that moves the suspended load to a setpoint on the full nonlinear plant.
  • Built the nonlinear pendulum-on-a-trolley model in Simulink from the equations of motion, using integrator blocks rather than derivative blocks to keep the simulation numerically clean
  • Linearized the system with the small angle approximation around a hanging load and derived the transfer function from hoist velocity to load position
  • Identified the cable length from supplied experimental data and matched the simulated response to the measured oscillation
  • Designed a compensator in the root locus editor, reaching about 10% overshoot with the load settling at the 1 m setpoint, then discretized it with a zero-order hold for implementation
  • Next: close the loop on the nonlinear plant, keep hoist speed under 1 m/s, and verify the time-delay margin predicted by the phase margin
  • MATLAB
  • Simulink
  • Root locus
  • Discrete-time control
Senior design, 2024

RAD-GUARD: wearable microwave exposure alarm

Capstone for the Nevada National Security Sites

NNSS developed a slide coated in thermochromic paint that changes color under microwave radiation, but it only gives a visual cue that is easy to miss. Our eight-person team, the EMF Shield Squad, built a badge that watches the slide and sounds an alarm when it changes. Constraints included a unit cost goal under $35, a wearable form factor, timestamped events, and no signal capture or analysis.

What we built

  • A custom PCB, taken through three revisions, around an STM32L0 microcontroller chosen by decision matrix for low power and onboard flash
  • A Vishay VEML6040 RGBW color sensor over I2C reading the slide, with a red LED and buzzer alert and an RTC for timestamping
  • Firmware in C with modular ColorData and ColorComparator components: a moving-average filter builds a baseline and an alert fires when readings leave the threshold band
  • A 3D printed badge housing with a TPE gasket, TPU latch tabs, a USB weather plug, and a diffused status LED

Characterizing the sensor

Most of the second semester went into understanding the sensor. Early readings were luminance values, not RGB colors, and raw data was noisy enough to cause false alarms. We ran slide color-change, heat, ambient light, and walking tests, found that shielding the gap between slide and sensor and adding a moving-average filter made the signal usable, and prototyped the alarm logic in Python against logged data before porting it to the STM32. Both working prototypes were delivered to NNSS after the final design review, along with the PCB design files and programming instructions.
  • STM32
  • Embedded C
  • I2C
  • PCB design
  • Python
Aug to Dec 2024

Autonomous course-navigating robot

Colorado School of Mines

A team of engineering students designed, built, and programmed a two-motor ground robot to navigate a predefined course on its own. I owned the controls and localization subsystem.
  • Implemented and tuned a PID loop in C on an Arduino to hold heading and speed
  • Tuned for fast response with no overshoot
  • Integrated control with a separate Raspberry Pi computer vision subsystem and validated end-to-end runs
  • The robot completed the course and earned full points
Two-wheeled autonomous robot with Arduino and wiring
The robot with its drive and control electronics.
Project team holding the finished robot
The team after a successful run.
Coursework

Power supply PCB

PCB Design (EENG 393), Colorado School of Mines

Took a board from breadboard to finished hardware in Eagle: prototyped circuits on the bench, drew the power supply schematic, built a custom component library, laid out and routed the board with copper pours and design rule checks, then soldered and tested the fabricated PCB. Course materials
  • Eagle
  • Schematic capture
  • Layout and routing
  • Soldering
Fall 2026

HTTP web server in C++

Computer Networks (CSCI 560), Colorado School of Mines

A web server written from the socket layer up in C++17 on Linux, with no web framework.
  • Opens a TCP socket, binds, and listens, stepping to the next port automatically if one is already in use
  • Parses HTTP/1.0 request headers by hand and handles GET, HEAD, and POST
  • Streams HTML and JPEG files with correct Content-Type and Content-Length headers, and saves POST bodies to disk with 200 or 201 responses
  • Returns 400 for malformed requests and 404 for anything outside a regex whitelist of served files
  • Leveled logging and clean shutdown on SIGINT
  • C++17
  • POSIX sockets
  • HTTP
  • Linux
CAD

Drone motor, reverse-engineered

SolidWorks

I measured a brushless drone motor with precision measuring tools and rebuilt it as a fully dimensioned SolidWorks model.
SolidWorks drone motor, front view
Front
SolidWorks drone motor, top view
Top
SolidWorks drone motor, isometric view
Isometric

Other projects

Earlier coursework

Refrigeration capillary tube

Sized a one-meter capillary tube for a refrigeration cycle under power, heat transfer, and temperature constraints, using iterative solutions in Engineering Equation Solver (EES).

Probabilistic forecasting

Built a forecasting model with Fourier series decomposition and FFT on training data, then used cross-correlation to match the model against test data.

Embedded systems lab

Blinked a Morse code message on a PIC microcontroller LED in C. Read the lab post.

Hiring for UAS, controls, or embedded work?

I am looking for UAS engineering internships while I complete my M.S. at Mines.

cadennubel@gmail.com