A platform someone else could start from
The earlier project already supplied a research mission and a software bridge that sends mission commands to ArduPilot and returns flight data. I developed it further around a Skywalker X8 fixed-wing airframe with a Cube Orange Plus flight controller and an onboard Raspberry Pi computer, while reorganizing the repository so another student could understand the architecture and bring it up without relying on oral instructions.
The X8’s internal space and repairable foam airframe made it a useful base for a research aircraft that would be modified and tested repeatedly. I designed the power circuitry and wiring schematics, configured the flight controller and companion computer, and adapted the software that turns MOOS heading, speed, and altitude requests into flight-controller commands. ArduPilot handles the aircraft’s low-level flight control while MOOS-IvP supplies the mission decisions.
I improved launch and configuration guides, adapted MOOS-IvP example missions for aircraft, and documented the commands and messages that cross between the mission software and ArduPilot. The same project can be exercised with a lightweight MOOS simulator, ArduPilot’s software-in-the-loop simulator (SITL), which runs the autopilot without aircraft hardware, or connected hardware. That range mattered because much of the autonomy work had to progress when flying outdoors wasn’t possible.
I configured a Point-to-Point Protocol (PPP) link over the RFD900x long-range telemetry radios, turning their serial connection into an IP network between the ground station and the aircraft’s Raspberry Pi. I assigned fixed addresses to both ends and added a startup service with persistent connection settings, so the onboard computer was network-accessible after boot without nearby Wi-Fi or manual link setup. The project documentation covers the broader hardware and software architecture, configuration, and mission-launch procedures.
A refueling and replacement mission
I built a simulated search mission to explore how a team could maintain coverage as individual aircraft run low on range and need replacements. The software tracks distance traveled, issues replacement requests, and supports bids for who should take over. Task reservations prevent an aircraft from committing to competing replacement requests.
Scout aircraft divide the search area into cells, while reserve aircraft stay available for replacement. When a scout finds a point of interest, it can keep observing it until a replacement arrives. Distance traveled acts as a range-budget proxy in this simulation; a deployed version would need actual battery or fuel information.
Testing simultaneous replacement requests exposed a coordination problem: two auctions could compete for the same available aircraft. When those aircraft were already committed to one auction, they could all abstain from a second, and the inherited auction logic could incorrectly treat every participant as a winner.
To handle that case, I added an explicit unawarded outcome, so a replacement request could retry rather than silently disappear. I kept the retry policy in the mission-level application. That fixed the failure without building a larger auction queue into the shared behavior code, and left retry timing adjustable for different missions.
The video below shows the refuel-replacement simulation in action. It is a simulation of the tasking logic, not footage of autonomous refueling in flight.
What flew and what comes next
We assembled and manually flew the aircraft. Winter conditions limited flight testing during the McGill project, so I tested the autonomous missions, including refuel replacement, in simulation. The setup guides and reusable missions give the next student a starting point for continuing that work in the air.
The project now gives later aircraft work a documented base rather than a one-off demo. Parts of the platform and its questions about aircraft interfaces have continued in related master’s research at MIT. My work with PEARL, MIT’s robotic boat and mobile docking platform for drones, pushed the bridge in a different direction for a quadcopter and a boat.
