Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.84 KB

firmware.md

File metadata and controls

37 lines (26 loc) · 1.84 KB

Firmware overview

Dataflow

Firmware dataflow diagram

The main loop is running at 1000 Hz. All the dataflow is happening through global variables (for simplicity):

  • t (float) — current step time, s.
  • dt (float) — time delta between the current and previous steps, s.
  • gyro (Vector) — data from the gyroscope, rad/s.
  • acc (Vector) — acceleration data from the accelerometer, m/s2.
  • rates (Vector) — filtered angular rates, rad/s.
  • attitude (Quaternion) — estimated attitude (orientation) of drone.
  • controls (float[]) — user control inputs from the RC, normalized to [-1, 1] range.
  • motors (float[]) — motor outputs, normalized to [-1, 1] range; reverse rotation is possible.

Source files

Firmware source files are located in flix directory. The key files are:

  • flix.ino — main entry point, Arduino sketch. Includes global variables definition and the main loop.
  • imu.ino — reading data from the IMU sensor (gyroscope and accelerometer), IMU calibration.
  • rc.ino — reading data from the RC receiver, RC calibration.
  • estimate.ino — drone's attitude estimation, complementary filter.
  • control.ino — drone's attitude and rates control, three-dimensional two-level cascade PID controller.
  • motors.ino — PWM motor outputs control.

Utility files include:

  • vector.h, quaternion.h — project's vector and quaternion libraries implementation.
  • pid.h — generic PID controller implementation.
  • lpf.h — generic low-pass filter implementation.

Building

See build instructions in build.md.