flix/docs/book/firmware.md
Oleg Kalachev 52819e403b Major rework of rc subsystem
Implement channels mapping calibration.
Store mapping in parameters.
Get rid of `controls` array and store control inputs in `controlRoll`, `controlPitch`, ... variables.
Move `channels` variable to rc.ino, channels are not involved when controled using mavlink.
'Neutral' values are renamed to 'zero' - more precise naming.
`controlsTime` is renamed to `controlTime`.
Use unsigned values for channels.
Make channel values in simulation more alike to real world: unsigned values in range [1000, 2000].
Send RC_CHANNELS_RAW instead of RC_CHANNELS_SCALED via mavlink
Don't send channels data via mavlink if rc is not used
2025-07-14 12:01:29 +03:00

3.2 KiB
Raw Blame History

Архитектура прошивки

Firmware dataflow diagram

Главный цикл работает на частоте 1000 Гц. Передача данных между подсистемами происходит через глобальные переменные:

  • t (float) — текущее время шага, с.
  • dt (float) — дельта времени между текущим и предыдущим шагами, с.
  • gyro (Vector) — данные с гироскопа, рад/с.
  • acc (Vector) — данные с акселерометра, м/с2.
  • rates (Vector) — отфильтрованные угловые скорости, рад/с.
  • attitude (Quaternion) — оценка ориентации (положения) дрона.
  • controlRoll, controlPitch, ... (float[]) — команды управления от пилота, в диапазоне [-1, 1].
  • motors (float[]) — выходные сигналы на моторы, в диапазоне [0, 1].

Исходные файлы

Исходные файлы прошивки находятся в директории flix. Ключевые файлы:

  • flix.ino — основной входной файл, скетч Arduino. Включает определение глобальных переменных и главный цикл.
  • imu.ino — чтение данных с датчика IMU (гироскоп и акселерометр), калибровка IMU.
  • rc.ino — чтение данных с RC-приемника, калибровка RC.
  • mavlink.ino — взаимодействие с QGroundControl через MAVLink.
  • estimate.ino — оценка ориентации дрона, комплементарный фильтр.
  • control.ino — управление ориентацией и угловыми скоростями дрона, трехмерный двухуровневый каскадный PID-регулятор.
  • motors.ino — управление выходными сигналами на моторы через ШИМ.

Вспомогательные файлы включают:

  • vector.h, quaternion.h — реализация библиотек векторов и кватернионов проекта.
  • pid.h — реализация общего ПИД-регулятора.
  • lpf.h — реализация общего фильтра нижних частот.