mirror of
https://github.com/okalachev/flix.git
synced 2026-01-11 21:46:55 +00:00
3.2 KiB
3.2 KiB
Архитектура прошивки
Главный цикл работает на частоте 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— реализация общего фильтра нижних частот.