An exploration into the world of autonomous flight control systems with Ardupilot and the Tiny Trainer.

Objective
The goal of this project was to build an system capable of automated takeoff assist and fully automated takeoff and land as a way to learn about autonomous control systems. I also wanted to explore FPV flight, so this was added as an optional stretch goal.
Airframe
I chose the Flite Test Tiny Trainer as a base airframe. This was the optimal choice for cost, ease of repair/modification, and expandability. After assembling the base airframe, I made small modifications to accommodate the extra electronics: holes for antennae and a USB-C data port and mounts for the FPV camera and external GPS module.
Control Electronics & Sensorium

To achieve autonomous flight I leveraged the powerful Ardupilot flight control firmware, running on a Matek F405-Wing controller board. This package conveniently provides an IMU, barometric altimeter, SD card interface, motor and servo controllers, an ELRS receiver module, and and on-screen display unit for rendering a head-up style overlay on the video feed coming in from the FPV camera. To this I added a GPS/compass module, 5.8GHz video transmitter module, micro camera, ESP8266 Wi-Fi board for real-time telemetry and remote configuration, 5g micro servos for control surface actuation, brushless motor and controller for thrust, and a 3S LiPo battery for system power.
With this setup, I was able to collect data about groundspeed, heading, altitude, location, and attitude, all of which are required for successful flight by waypoints. Once the avionics system was installed, I spent several hours calibrating the system in preparation for flight.
First Flight
As this was my first foray into fixed wing R/C flight, my very first flight test was completely manual, with the flight control in passthrough mode. As will not be surprising for anyone who has flown model planes before, these first several flights were quite short. After familiarizing myself with the system though, I engaged Ardupilot’s Fly-by-Wire mode, which attempts to keep the plane flat and level while allowing the pilot to give high-level commands: turn right, climb, etc. The difference was incredible. My hours of calibration paid off, as with only small tweaks the plane was suddenly completely capable of flying itself without issue.
Autonomy
The next day, I tested autonomy. I started by binding a switch on my transmitter to the autonomous flight modes, allowing me to quickly switch into manual control or a safe “loiter” mode if something went wrong. After programming a short waypoint course around the perimeter of my flight park, I launched the plane in launch assist mode (which used the accelerometer to detect when the plane had been thrown and would take over control to climb to a predetermined altitude). After confirming that the launch went correctly, I switched into waypoint mode and was overjoyed to see the plane begin flying in a neat rectangle around the park, entirely unassisted. Success!
Future
I completed this project in 2023, but have been eager for the chance to take on a similar project. In fall of 2024, I joined a team attempting an even more ambitious project: dropping an autonomous plane from a moving remote controlled one and lang both in predefined target areas. I am excited to work with a team to continue my explorations into autonomous vehicle control.