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
Курс в 548 школе завершился (напишу свои выводы позже), но проектная работа продолжилась, и есть крутой результат!

Удалось завести одновременную работу с камерой и управление полетом на дроне с платой ESP32-S3-CAM.

То есть одна и та же прошивка:

🔸 Работает с камерой и передает видеострим по Wi-Fi.
🔸 Реализует полетный контроллер, собственно, управление моторами.

Работа с камерой и http-сервер запускаются в отдельных тасках FreeRTOS. Мы увеличили приоритет таски полетного алгоритма (loopTask), чтобы работа с камерой его не «перебивала», и стабильный полет был возможен.

Я делаю большую ставку на такое использование Flix, потому что это позволит реализовывать алгоритмы компьютерного зрения на маленьком и дешевом дроне, используя всего лишь один ESP32. Простейшие — прямо на борту, более сложные — с передачей видео на компьютер.
👍35🔥163🏆1
Подвожу итоги Курса в школе 548

1️⃣ Получилось более основательное мероприятие, чем смена в Роболагере. Было значительно больше времени на домашние задания и работу над проектами.

2️⃣ Вырисовывается достаточно логичный курс из 5-6 лекций и 3-4 практических занятий: вводная лекция по БПЛА, рассказ про проект Flix, дизайн рамы (домашнее задание), электроника беспилотника, сборка и настройка, доскональный разбор прошивки и дальнейшая свободная работа над проектами участников. Все участники сами собирали прошивку, многие — вносили существенные модификации.

3️⃣ Дети взялись за работу с большим энтузиазмом, большинство быстро справилось с проектированием и сборкой. Правда, потом по разными причинам перерывы между занятиями увеличились (до 2-4 недель), и энтузиазм немного поутих. Думаю, что такой курс лучше проводить «в один присест», с занятиями раз в неделю, либо интенсивом, как в Роболагере.

4️⃣ Также при наличии формальной защиты проектов/результатов (как это было в Роболагере), мотивацию участников сохранить легче, чем без нее (как было здесь).

5️⃣ Благодаря использованию самых базовых компонентов, бюджет закупок был очень небольшим.

6️⃣ Получилось несколько крутых проектов — среди них самодельный пульт на ESPNOW, и дрон на ESP32S3 с камерой. Обе эти фичи (поддержка ESPNOW и камеры) будут добавлены в прошивку.

7️⃣ Больше материалов о мероприятии, включая STL'ки, опубликованы в дневнике использования проекта в GitHub-репозитории.

Спасибо представителю школы Константину Юрьевичу Сергееву за предложение сделать такой курс. Это внесло большой вклад в развитие проекта. Если у вас есть образовательное учреждение и вы хотите организовать у себя что-то подобное — пишите, обсудим!
🔥35👍1610
Настройка ориентации IMU и калибровка горизонта

С определенным опытом применения моего полетника реальными людьми, стало понятно, что слишком многие застревают на том, чтобы корректно настроить ориентацию IMU, и дрон не летит.

Делалось это модификацией функции rotateIMU в коде. В том числе потому, что залезание в код в принципе предусматривается, как часть пользовательского опыта. Но практика показала, что вращение в ней задано слишком неочевидно и это слишком сложно для пользователей.

В порядке приведения полетника в более user-friendly вид (но сохраняя минимализм):

❇️ Добавил настройку ориентации IMU при помощи параметров: IMU_ROT_ROLL, IMU_ROT_PITCH, IMU_ROT_YAW. Параметры меняются из QGroundControl. Значения задаются в радианах, что не особо удобно, но радианы это дефолт, а стоит ли менять вообще все на градусы ради удобства — пока не уверен, что думаете?

❇️ Сделал диаграмму со значениями углов для всех обычных способов установки IMU (см. пикчу).

❇️ C появлением этих параметров появилась возможность относительно легко добавить калибровку горизонта (как в больших полетниках). Она опциональна и компенсирует неидеально горизонтальное расположение IMU на раме.

Для этой калибровки дрон устанавливается в строго горизонтальное положение, и затем вызывается команда cl. Она вычисляет разницу между вектором «строго вверх» и вектором «вверх» текущей attitude. Эта разница добавляется к параметрам ориентации IMU.

Изменения находятся в ветке imu-rot. Надеюсь, теперь пользователи не будут застревать на этапе выставления корректной ориентации IMU, и больше людей смогут довести Flix до полета. Почитать обновленную документацию.
22🔥12👍9
Итоги года

Главный итог этого года — это, конечно, то, что образовательный курс из теоретической задумки стал реальным мероприятием, точнее двумя: проектная смена в «Роболагере» и Курс в 548 школе.

За год пользователи собрали несколько десятков дронов. Среди них первый Flix на бесколлекторных моторах, дрон с управлением по ESPNOW и на ESP32S3 с камерой. Сделан первый автономный полет. А еще возникла целая отдельная китайская версия на плате, у которой есть множество реальных пользователей и отдельное китайское сообщество.

Каким-то невероятным образом в последний день года на канале оказалось ровно 1999 подписчиков, ждем 2000-го! :)

Не успелось: версия на плате и задуманные главы учебника (сейчас опубликовано только 2 главы) — на этом я сконцентрируюсь в следующем году. А еще в следующем году я ожидаю новые мероприятия, нововведения, эксперименты — все это будет освещено в канале!

🎄 Всех с новым годом! 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
50🔥14👍12🏆12🎄2
Flix становится серьезным проектом, а главное, что должно быть у серьезного проекта — это, конечно же, логотип. Я нарисовал вот такой.

Как вам? Пожалуйста, проголосуйте реакцией на пост. Если будет больше положительных реакций, логотип будет принят.
👍135👎16🔥71
Решил опубликовать промежуточный результат проектирования платы. Дорожки почти не рисовал, но распределил компоненты. Разъем для камеры все-таки вернул обратно (раз уж она работает!), будет совместно использовать почти все GPIO с гребенки.

Все рекомендовали 4-слойную плату. Вот я как их использовал:

🔹Верхний слой: условно «сигнальный». ESP32, IMU (U5) очень близко центру + стабилизатор (U4), барометр (U6), индикатор питания (LED1) и RGB-светодиод (LED2), кнопка Boot, USB-C.
🔹2-й слой: полностью земля — это общая рекомендация для большинства плат.
🔹3-й слой: оставлен под питание 3.3V и сигналы.
🔹Нижний слой: силовая часть. Buck-Boost (U3) и его обвязка (включая индуктивность L1) и силовые цепи моторов. Туда я же ставлю разъем для камеры CAM1 и его обвязку — на верхнюю сторону платы он не помещается.

Что думаете? Хотелось бы узнать ваши советы и комментарии перед тем, как продолжать! #pcb
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥322🏆1