Матеріали для вивчення основ програмування БПЛА

💡 Усі статті, обговорення, новини про оборонні технології — в одному місці. Приєднуйтесь до Defence tech спільноти!

Передмова

Хочу поділитись оглядом книг та матеріалів для ґрунтовного вивчення сфери програмного забезпечення для безпілотних літальних апаратів (БПЛА). В інтернеті є неймовірна кількість матеріалів на цю тему. Ця стаття покликана зберегти ваш час та перейти до вивчення з перевірених джерел.

Хто автор? Працюю інженером машинного навчання та комп’ютерного зору у сфері не пов’язаній із БПЛА. Маю обмежений волонтерський досвід в розробці системи візуальної одометрії (англ. Visual Odometry — VO) та візуально-інерційної одометрії (англ. Visual intertial Odometry — ViO) для БПЛА літакового типу. Під час розробки поглиблювався в аспекти і поза VO / ViO. Тому більшість матеріалів, які є в підбірці, використовував сам.

Для кого стаття? В першу чергу для початківців, які хочуть розібратись в сфері і почати робити власні проекти. Також сподіваюсь, що досвідчені інженери БПЛА зможуть знайти корисні матеріали. Всі матеріали є англомовними та містять велику кількість математики. Для повторення математики та інтуїції навколо неї, раджу 3Blue1Brown. Там є необхідні нам теми лінійної алгебри.

Книги

Почну огляд із фундаментальних книг.

Small Unmanned Aircraft: Theory and Practice, by Randy Beard and Tim McLain

([Джерело зображення.](https://press.princeton.edu/books/hardcover/9780691149219/small-unmanned-aircraft))

Посилання на GitHub книги. Книга детально розглядає аспекти польоту БПЛА літакового типу. Ціллю книги є надати знання для побудови автопілоту (не плутати із автономністю) БПЛА. Вона включає теоритичні основи фізики польоту. Також розглядаються математичні моделі бортових сенсорів, будова автопілоту, принципи керування та навігації за допомогою інерціальної системи та візуальної одометрії.

Також в репозиторіях до неї ви знайдете практичні завдання для закріплення теорії з книги. Якщо книга вам резонує, закривайте статтю і починайте опрацьовувати книгу. Вона буде достатньою для отримання фундаментальних знань.

VTOL book, by Randal W. Beard

([Джерело зображення.](https://github.com/randybeard/vtolbook/blob/main/textbook/chap1_intro/figures/architecture.png))

Як ви помітили, обгортки немає і книга є не завершеною, тому що фінальні її розділи ще в роботі. В будь-якому разі, розділи книги є глибокими і можуть слугувати першим посібником для початку роботи із БПЛА. Книга розширює попередню для безпілотників вертикального злету та посадки (англ. vertical take-off and landing — VTOL). Розділи побудовані навколо зображення вище і описують всі блоки автопілота та системи навігації.

Basic Knowledge on Visual SLAM: From Theory to Practice, by Xiang Gao, Tao Zhang, Qinrui Yan and Yi Liu

Книга по основах візуальної навігації та картографування (англ. simultaneous localization and mapping — SLAM). Вона охоплює 14 лекцій. В цій книзі є основи лінійної алгебри та теорії груп, яких достатньо аби повторити забуте. Також в кожному розділі є практичні завдання на C++. С++ не має вас зупиняти, ті ж самі завдання можна зробити і з Python, використовуючи ті ж бібліотеки. В репозиторію є і pdf версія.

Кілька інших книг

«Introduction to Robotics and Perception» by Frank Dellaert and Seth Hutchinson. Посилання GitHub та сайт книга, де є .ipynb ноутбуки із завданнями та практикою. В книга фокусується використанні факторних графів.

Kalman and Bayesian Filters in Python. Під час роботи над VO/ViO чи SLAM ви швидко зіткнетесь із фільтрами Калмана (англ. Kalman Filter — KF). Тому варто розібратись для початку із KF та EKF (англ. Extendet Kalman Filter — EKF). Книга має інтуїтивні пояснення та візуалізації, які можна запускати в .ipynb ноутбуках. До слова, EKF використовується і в Ardupilot, і в Px4 та в інших автопілотах для корекції стану дрона.

Інші матеріали

Додам кілька курсів із хорошими матеріалами та поясненнями, частину яких використовував за потреби.

  • Visual Navigation for Autonomous Vehicles (VNAV) від MIT. Посилання.
  • Курси від StachnissLab Photogrammetry & Robotics із Боннського університету. Посилання. Лектор курсів є автором YouTube каналу, в якому є серія із короткими поясненнями базових алгоритмів комп’ютерного зору для навігації.

Перед і під час занурення у вивчення основ автопілотів та/чи візуальної навігації раджу відразу подивитись як влаштовані імплементації популярних проєктів із відкритим кодом. Подивіться на їх основні блоки. Це допоможе вам бути в контексті практики.

Найбільш популярні автопілоти

Оскільки ці проекти мають великий функціонал, вони досить складні для розуміння. Тому достатньо подивитись їхні блоки та в документації почитати про їх концепт. Наприклад, для Px4.

І на завершення кілька проектів з імплементаціями майже мінімальних автопілотів. Раджу передивитись їх повністю і розібратись в коді. Почніть з функції main() чи loop() та відслідкуйте код від зчитування сирих даних до оновлення поточної оцінки позиції дрона. Потім перейдіть від вхідних команд до їх опрацювання і перетворення в рух дрона.

  • dRehmFlight. Також має pdf із описом процесу створення автопілота та логіки обробки даних.
  • ESP-Drone. Автопілот для малих навчальних дронів.
  • Crazyflie Firmware. Як і попередній.

Матеріалів в інтернеті величезний об’єм і цей список може бути продовжений ще ви точно можете знайти щось краще, і потім ще краще. Разом з тим, найкращим буде почати вчитись вже.

Що далі?

Визначати вам, попри це — перше, оберіть єдиний матеріал для вивчення. Паралельно практикуйтесь, здобуваючи досвід без відволікань на постійний пошук кращих матеріалів чи курсів. Друге, знайдіть колег у цій справі. Постійно обмінюйтесь досвідом і кооперуйтеся для побудови більших проектів.

В якості подяки автору, підтримайте збройні сили через проєкт Повернись живим «РЕБнемо так РЕБнемо». Моя дружня банка.

Чекатиму ваших коментарів. Доповнення, поради та конструктивна критика — вітаються.

PS. В наступній статті хотів би зробити розбір рівнянь EKF фільтра з Px4. Пишіть в коментарях вашу думку.

👍ПодобаєтьсяСподобалось23
До обраногоВ обраному20
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Фільтр калмана в реальності має значні проблеми для оптичних(та навігаційних) систем, про це подробно писав яндекс, коли робили свою робо-доставку з викладками чому так.
Лінк десь на хабрі був.

Згоден з Вами. Разом з тим — вони всюди використовуються як база для інерціальної навігації

На скільки знаю (мої знання не оновлені), то зараз моделі на основі GTSAM (gtsam.org) є state-of-the-art

А чому б вам не використовувати дрони з Betaflight на борту, які, до речі, найпоширеніші на фронті, для побудови додаткового функціоналу (донаведення, круїз-контроль для подолання РЕБу чи автоматичний пошук, переслідування та знищення цілі в умовах дії РЕБу завдяки AI на борту), просто створюючи відповідний автопілот, почавши зі статті на Medium наприклад: medium.com/...​raspberry-pi-0caeb4b3ca69 ?

Повірте, у цьому разі вам не знадобиться ані ArduPilot, ні PX4.

Дмитре, дякую за коментар і також за Ваші статті на Medium.

Щодо Вашого питання
1. Стаття є по суті списком навчальних матеріалів та мого досвіду роботи з ними.
2. Щоб обирати що краще з чим використовувати — важливо спочатку визначитись, що ви будуєте і в чому задача.

Не треба про PX4. Там майже все погано.

Чому?
Маєте на увазі обмежений функціонал порівняно з Ardupilot?

Перевага Px4, що його ліцензія дозволяє вільно використовувати для комерційних проектів. У всіх інших — ні.
Також структура і якість коду для кастомізацій є більш зрозумілою, але це мій біас)

Ми ж про технологію. З ліцензією зрозуміло.

Якщо коротко, PX4 це middleware без фізики, а ArduPilot це фізика без middleware ;)

всеодно нічо не понятно 🤷‍♂️
якшо і там погано і там до де хорошо?

Обирати Вам.
Стаття про навчання, а не про те що варто обирати для комерційних проектів. В цьому я б не брався давати поради, тому що не є досвідченим інженером БПЛА.

Підписатись на коментарі