Архитектура прошивки
Главный цикл работает на частоте 1000 Гц. Передача данных между подсистемами происходит через глобальные переменные:
t
(float) — текущее время шага, с.dt
(float) — дельта времени между текущим и предыдущим шагами, с.gyro
(Vector) — данные с гироскопа, рад/с.acc
(Vector) — данные с акселерометра, м/с2.rates
(Vector) — отфильтрованные угловые скорости, рад/с.attitude
(Quaternion) — оценка ориентации (положения) дрона.controls
(float[]) — пользовательские управляющие сигналы с пульта, нормализованные в диапазоне [-1, 1].motors
(float[]) — выходные сигналы на моторы, нормализованные в диапазоне [-1, 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
— реализация общего фильтра нижних частот.