My undergraduate research focused essentially on developing a flight controller for a quadcopter prototype. I used a Beaglebone Black (BBB) Rev C with Debian 8 Jessie as a development board. The software had three layers, divided as follows:
- Low level: sonar altitude measurements. This layer was written in Assembly and designed for the BBB's programmable real-time unit (PRU).
- Middle level: motor PWM signals. This layer was written in C and compiled as shared libraries.
- High level: calibration and reading of sensors, control law, and motor output. This layer was written in Python.
I also contributed to the development of a BBB Device Tree Source, as I needed a custom management of the board's I/O pins in my project. The source files can be found here.