mirror of
https://github.com/okalachev/flix.git
synced 2025-07-27 17:49:33 +00:00
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
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
— реализация общего фильтра нижних частот.