This repository contains an out-of-tree Crazyflie firmware application that interfaces with an external FPGA over SPI to run the flight controller off-board from the STM32 control loop.
The project targets the Bitcraze Crazyflie platform and provides the firmware-side integration needed to exchange state data with the FPGA, receive motor commands asynchronously, and deploy the controller on the quadrotor.
This work was developed within the master's thesis:
Hardware-Algorithm Co-Design for Real-Time Linear Model Predictive Control. FPGA Implementation and Deployment on a Resource-Constrained Quadrotor
Author: Andrea Grillo
Period: 2025-2026
Refer to the official Crazyflie documentation for the standard out-of-tree firmware build and flashing workflow used by this project:
src/: firmware sources for the FPGA controller, SPI communication layer, and FPGA deck supportapp-config: out-of-tree application configuration used during Crazyflie firmware buildscrazyflie-firmware/: bundled Crazyflie firmware tree used as the build baseKbuild: top-level build integration for the out-of-tree applicationMakefile: entry point for building and flashing the firmware
- FPGA controller repository: ADMM_FPGA
- FPGA deck hardware repository: Crazyflie_FPGA_Deck
- Base Crazyflie firmware repository: crazyflie-firmware