The Problem

Most open-source quadcopter projects are designed for seasoned developers or rely on complex, proprietary hardware. This creates a barrier for educators, students, and hobbyists who want to build and customize a quadcopter from scratch without deep embedded systems expertise.

What This Does

Flix is an open-source ESP32-based quadcopter designed for education and research. It uses general-purpose components and provides a simple, clean firmware (<2k lines in Arduino) for stability and control. The project includes comprehensive documentation, simulation with Gazebo, and tools for scripting and analyzing flights.

Key components:

  • Firmware: Minimal Arduino code (flix/firmware.ino) for flight control and MAVLink protocol communication.
  • Simulation: Gazebo-based simulator (gazebo/) that runs the original firmware for testing.
  • Python Tools: CLI (tools/cli.py) and library (tools/pyflix/) for scripting and analyzing flight data.
  • Documentation: Extensive guides (docs/) covering assembly, usage, troubleshooting, and log analysis.

How It Is Wired

The control flow starts with the firmware (flix/firmware.ino), which:

  1. Reads sensor data from the IMU (IMU.h).
  2. Processes input from the gamepad or remote control (flix/controls.h).
  3. Applies PID control to stabilize the quadcopter (flix/pid.h).
  4. Sends commands to the motors via PWM (flix/motors.h).
  5. Communicates with the ground station using MAVLink over Wi-Fi or ESP-NOW (flix/mavlink.h).

The Python tools (tools/) provide a CLI (cli.py) for command-line interaction and a library (pyflix/) for scripting and data analysis. The Gazebo simulator (gazebo/) uses the same firmware for accurate simulation.

How To Use It

  1. Setup: - Clone the repository: git clone https://github.com/moses-y/flix - Install dependencies: pip install -r tools/requirements.txt - Build and flash the firmware to your ESP32 board using the Arduino IDE or esptool.py.
  1. Configuration: - Configure the IMU and motor connections in flix/config.h. - Set up MAVLink communication in flix/mavlink.h.
  1. Running it: - Start the Gazebo simulator: cd gazebo && make - Use the CLI to control the quadcopter: python tools/cli.py

Real-World Use

Flix is ideal for educational institutions and hobbyists who want to learn about quadcopter design and control. For example, a university robotics lab could use Flix to teach students about PID control, sensor fusion, and wireless communication. The Gazebo simulator allows students to test their code before flying a physical quadcopter.

Code Health & Issues

  • Medium/SDLC: No LICENSE file - unclear usage/redistribution rights - root
  • Low/Risk: Dependencies declared without a lockfile - non-reproducible builds - tools/pyproject.toml

The Bottom Line

Flix is a well-documented, educational quadcopter project that uses general-purpose components and provides a simple firmware for stability and control. It is ideal for educators, students, and hobbyists who want to build and customize a quadcopter from scratch. However, the lack of a LICENSE file and dependency lockfile could be improved for better reproducibility and legal clarity.