Flix: разработка полетного контроллера с нуля
2.02K subscribers
48 photos
31 videos
3 files
67 links
По всем вопросам @okalachev
Чат обсуждения: @opensourcequadcopterchat
GitHub: https://github.com/okalachev/flix
Учебник: https://quadcopter.dev
Download Telegram
Media is too big
VIEW IN TELEGRAM
Демонстрация полета flix на проектной школе в Гимназии им. Примакова
🔥155👍3🤯1
Channel name was changed to «Flix: разработка полетного контроллера с нуля»
🎉 Репозиторий с исходным кодом квадрокоптера опубликован: https://github.com/okalachev/flix.
🎉15👍7🤡3
О чем будет этот канал

Я собираюсь сделать блог по теории и практике создания полетного контроллера квадрокоптера. В процессе создания своего дрона на ESP32 я открыл для себя кучу интересного по теории автоматического управления, инженерии, и собираюсь этим поделиться.

Я буду разбирать решения конкретных задач автопилотирования, например, фильтрация данных с датчиков, регулирование, запись и анализ логов, выполнение акробатических маневров (например, флипов), автономный полет по точкам, взаимодействие с наземной станцией по MAVLink и т. д.

Моя итоговая цель: создание учебника (или даже учебного курса) по теме создания автопилотов БПЛА, который будет использовать мой дрон в качестве учебного пособия. Возможно, все это выльется в какой-нибудь коммерческий продукт. А, возможно, и не выльется, время покажет :)
🔥28👍132🤡1
А вот как выглядит мой квадрокоптер-прототип под «капотом». Виден используемый десятиосный модуль IMU GY-91 (MPU9250) и месиво из проводов. Знаю, что MPU9250 устарел, но тем не менее решил использовать именно его, как проверенную классику. Но не исключено, что стоит его и поменять: он обладает достаточно высоким уровнем шума.
👍16😁32
FAQ #1

Получил довольно много вопросов по проекту, большое спасибо вам за интерес! Напишу ответы на некоторые из вопросов, которые задавали больше одного раза.

Где и когда можно купить? Сейчас этот проект на стадии прототипа. Но вы можете купить такой же набор компонентов, которые указаны в таблице, и попробовать собрать этот квадрокоптер самим (на свой страх и риск). Мне будет крайне интересно получить такой фидбэк!
А вот потенциальное создание продукта — это одна из целей этого блога: посмотрим, что из этого получится.

Почему Arduino? Мне очень понравилось, как разработчики Arduino реализовали свою консольную утилиту для работы с Arduino-проектом: arduino-cli. Среди прочего там реализован файл метаданных проекта и зависимостей — sketch.yaml, который позволяет делать воспроизводимые сборки.
Кроме того, мне нравится идея, что прошивку STEM-квадрокоптера можно открыть в стандартной Arduino IDE, модифицировать в ней что угодно и практически одной кнопкой загрузить в квадрокоптер.
Да, Arduino обвиняют в незрелости и игрушечности, но мне кажется, что это куда более актуально для ее древней реализации для AVR, чем для относительно новых для ESP32 и STM.

Где полная схема? Пока еще не готова, но будет. Есть общая структурная схема соединения компонентов, а конкретные номера пинов пока можно найти в исходнике.
🔥14👍9
Симулятор — это один из наиболее интересных компонентов этого проекта. Кстати, далеко не у всех полетных контроллеров есть симуляция, так что это еще и его отличие от других. Проект использует Gazebo Classic в качестве платформы для симуляции. Это универсальная платформа, которая моделирует физическую среду. Она используется для разных типов роботов: роверов, самолетов, мультикоптеров, роботов-манипуляторов.

Изначально моя идея была в том, чтобы симуляция запускала оригинальный Arduino'вский полетный код, не требуя никакой его модификации. И вот как мне удалось это реализовать.

1. Модель. Я разработал физическую модель своего дрона для Gazebo.
2. Плагин для Gazebo. Я написал плагин для Gazebo, который получает инпут с обычного USB-пульта, считывает данные с виртуальных датчиков, передает эту информацию в код для Arduino, а затем рассчитывает силы, которые создают пропеллеры. Исходный код этого плагина находится в файле simulator.cpp.
3. Имитация Arduino. В файле Arduino.h находится частичная реализация API Arduino, которая работает в контексте запущенной в Gazebo симуляции.

Таким образом, я могу модифицировать свой полетный код, используя любые функции Arduino, и сразу проверять его в симуляторе. Если понадобятся какие-либо функции Arduino, которые еще не реализованы в симуляторе, то их можно будет добавить. То есть эта штука потенциально расширяема, и в ней можно будет тестировать и других роботов на основе Arduino, например, роверов.

Сейчас любой желающий может запустить симулятор flix у себя на машине с Linux и macOS (Windows, к сожалению, толком поддерживается Gazebo). Для этого нужно склонировать репозиторий, установить зависимости и запустить симуляцию согласно инструкции. А если возникнут вопросы или проблемы при запуске, смело пишите мне или создавайте Issue на Github — все это очень сильно помогает мне дорабатывать проект!
👍26🔥154
🎄 Всех с наступившим 2024-м годом! 🎉 В этом году мое начинание с образовательным дроном и этим каналом приобретет поистине грандиозные масштабы :)

Из новостей: реализован общий для симуляции и реального дрона механизм калибровки пульта управления. Теперь можно запускать симулятор (или реальный дрон), калибровать ваш пульт и летать (до этого можно было «откалибровать» пульт только вручную).

Моим проектом заинтересовались люди из МГУ, Государственного университета «Дубна» и Московского авиационного института. Спасибо за ваш интерес!

Как минимум один читатель уже заказал комплектующие для сборки и тестирования моего квадрокоптера. И про нескольких я знаю, что они собирались. Будет очень интересно узнать, что получится!

У канала теперь есть официальный чат, и там уже идет довольно много интересных и детальных обсуждений, вступайте, кто хочет поучаствовать: @opensourcequadcopterchat.
👍16🎉10🔥711
Новости

Подписчик @peter_ukhov создал свою версию подробной принципиальной схемы квадрокоптера, по которой он сам собирается его собрать. Там пока есть кое-какие неточности, но тем не менее я добавил ссылку на нее в README, потому что до этого принципиальной схемы вообще не было.

Этот же подписчик задал справедливый вопрос об отсутствии хэндлинга зависимости проекта от MAVLink: эту библиотеку можно было скачать только вручную. Мне не нравится использовать git-сабмодули (почему-то любой сложный репозиторий, в котором есть сабмодули, в конечном итоге приходит в какое-то полусломанное состояние, такова уж моя статистика). Поэтому я просто решил создать новую библиотеку: MAVLink для Arduino. Это обычный C MAVLink (v2), но который вы легко можете добавить в свой Arduino-проект стандартными средствами Arduino. Его можно поставить из Library Manager в Arduino IDE либо установить при помощи Arduino-CLI. При этом, благодаря GitHub Actions, сама версия протокола MAVLink будет автоматически обновляться (раз в месяц) и при обновлении будет автоматически выпускаться новая версия MAVLink-Arduino. Удивительно, но до этого такой штуки не было, а теперь, вот, будет.

Поскольку решена проблема с зависимостью от MAVLink, а также другая проблема со сломанным релизом необходимой мне версии библиотеки для IMU MPU9250, теперь есть полная инструкция по сборке прошивки в Arduino IDE. Не требуется использование консоли и какой-либо магии, прошивка собирается в обычной Arduino IDE с библиотеками, доступными в Library Manager.

Буду признателен за любой фидбэк от тех, кто собирается собрать такой квадрокоптер. Будь то отметка в комментариях или в личных сообщениях. Хочется понимать, сколько вас, первых рисковых пользователей :)
👍19🔥41