Тема
Модуль 11 · Безпека та робастність роїв БПЛА
Що відбувається, коли припущення попередніх модулів порушено: відмовляє апарат, зникає зв'язок, брешуть сенсори. Оцінювання справності, безпечні режими відмови та вимоги перед реальним застосуванням.

Виявлення відмови порівнянням показу сенсора з прогнозом моделі
Зміст лекції
| Частина | Про що |
|---|---|
| 1. Типи відмов | сенсори, силова установка, зв'язок |
| 2. Виявлення | нев'язка, числові пороги, чек-лист перед зльотом |
| 3. Оцінювання ресурсу | здоров'я приводів, стан заряду батареї |
| 4. Реакція на відмову | failsafe, скільки приводів можна втратити, автомат станів |
| 5. Робастність рою | втрата апаратів, зв'язність, межі підходу |
Модулі 06–08 припускали, що все працює. Реальні місії цієї розкоші не мають, і відмовостійкість не з'являється в рої автоматично — її треба свідомо проєктувати.
Результати навчання
Після лекції ви зможете:
- назвати три типи відмов і механізм виявлення для кожного;
- пояснити виявлення відмови за нев'язкою і назвати числові пороги для компаса й зв'язку;
- інтерпретувати коефіцієнт ефективності привода й ухвалити рішення за його значенням;
- пояснити, чому напруга батареї — поганий показник залишкового заряду;
- сказати, скільки приводів може втратити квадрокоптер і гексакоптер кожної геометрії;
- побудувати автомат станів польотних режимів із подіями й умовами переходу;
- оцінити робастність рою до втрати апаратів через
; - відрізнити відмовостійкість, робастність, гнучкість і адаптивність.
Частина 1 · Три типи відмов
Відмови неминучі, і проєктувати треба не їхню відсутність, а реакцію на них.
| Тип | Приклади | Чим небезпечний |
|---|---|---|
| Сенсорні | барометр дрейфує, компас під завадами, супутниковий приймач втратив сигнал, IMU зміщений | оцінка стану стає хибною, а керування — впевнено неправильним |
| Силової установки | відмова мотора, зламаний або розбалансований гвинт, збій регулятора обертів, просідання батареї | втрата тяги й моменту, часто необоротна |
| Зв'язку | втрата сигналу з пульта, втрата зв'язку з наземною станцією, втрата сусіда в рої | апарат лишається без завдання або рій розпадається |
Найпідступніший клас — сенсорні: апарат фізично справний, і саме тому продовжує виконувати команди, побудовані на хибних даних. Відмову мотора видно одразу; дрейф барометра на 0,9 м виглядає як нормальний політ.
Частина 2 · Виявлення відмови за нев'язкою
Найзагальніший спосіб виявити несправний сенсор не залежить від його типу. Автопілот тримає власну модель руху й безперервно прогнозує, які покази мали б дати сенсори. Різниця між прогнозом і фактом — нев'язка.
| Позначення | Значення |
|---|---|
| те, що виміряв сенсор | |
| те, що передбачила модель | |
| нев'язка, розбіжність між ними |
Поки сенсор здоровий, нев'язка мала й коливається навколо нуля — це просто шум. Якщо середнє значення або розкид нев'язки виходять за поріг, сенсор вважають таким, що відмовив.
У показаній симуляції барометр починає дрейфувати на 32-й секунді; нев'язка перетинає поріг 0,25 м і відмову виявлено ще до того, як дрейф став помітним для оператора. Нев'язка IMU весь час лишається в межах шуму — саме тому порівнюють кожен сенсор окремо.
1Модель прогнозує показ сенсора
2Порівняння з вимірюванням
3Нев'язка перевищує поріг
4Перехід у безпечний режим
Код: детектор відмови за нев'язкою
Механізм однаковий для будь-якого сенсора: прогноз моделі проти виміру, згладжування, поріг.
python
import numpy as np
DT, T = 0.02, 60.0 # 50 Гц, хвилина польоту
THRESH = 0.25 # поріг нев'язки, м
DRIFT_START, DRIFT_RATE = 32.0, 0.05 # відмова на 32-й с, дрейф 0,05 м/с
t = np.arange(0, T, DT)
true_h = 2.0 + 0.3 * np.sin(0.4 * t)
drift = np.where(t > DRIFT_START, (t - DRIFT_START) * DRIFT_RATE, 0.0)
baro = true_h + drift + rng.normal(0, 0.06, t.size) # сенсор дрейфує
model_h = true_h + rng.normal(0, 0.03, t.size) # модель — ні
residual = baro - model_h
win = int(1.0 / DT) # ковзне середнє за 1 с
smooth = np.convolve(residual, np.ones(win) / win, mode="same")
flag = np.abs(smooth) > THRESH
detect = t[np.argmax(flag)] if flag.any() else NoneРезультат коду: затримка виявлення
text
поріг нев'язки 0.25 м
відмова почалася 32.0 с
виявлено на 36.9 с (затримка 4.9 с)
дрейф на момент виявлення 0.25 м
нев'язка до відмови середнє +0.009 м, максимум 0.028 м
хибних спрацювань до 32 с 0Відмову виявлено на 36,9 с, тобто через 4,9 с після початку дрейфу, коли він досяг рівно порогових 0,25 м. До 32-ї секунди жодного хибного спрацювання: згладжена нев'язка не перевищує 0,03 м. Затримка — плата за згладжування, і саме вона визначає, наскільки далеко апарат встигне відхилитися до реакції.
Числові пороги виявлення
Оцінювання має бути кількісним, інакше автопілот не зможе ухвалити рішення автоматично.
| Що перевіряють | Поріг | Висновок |
|---|---|---|
| Регіональне магнітне поле | відхилення 35 % від очікуваного | компас ненадійний |
| Розбіжність внутрішнього і зовнішнього компасів | більше 45° | ймовірно хибна орієнтація зовнішнього |
| Коливання поля при зміні газу | 10–20 % | завад немає, компас працює |
| Коливання поля при зміні газу | 30–60 % | є завади, робота під питанням |
| Коливання поля при зміні газу | понад 60 % | сильні завади, компас непридатний |
| Компенсація нуля по кожній осі | поза −400…+400 мілігаус | компас несправний |
| Час без сигналу з пульта | понад ≈ 5 с | втрата RC |
Проміжок 20–30 % свідомо не визначений — саме такою є методика ArduPilot/APM, яку відтворює Quan Quan (розділ 14.3.2.2): вона задає лише ці три інтервали, без правила для проміжних значень. Це не прогалина викладу, а точне відтворення першоджерела.
Чек-лист перед зльотом
Онлайнове оцінювання найкраще проводити, коли апарат у сталому стані — наприклад, висить у режимі утримання точки. Але більшість відмов ловлять ще на землі.
| Що перевіряють | Ознака справності |
|---|---|
| Напруга плати польотного контролера | у заданому діапазоні |
| Напруга й внутрішній опір батареї | у нормі під навантаженням |
| Калібрування компаса | нуль по осях у межах ±400 мГс |
| Калібрування акселерометра й гіроскопа | зміщення в допуску |
| Супутниковий приймач | достатня кількість супутників, HDOP у нормі |
| Барометр | стабільні покази, дрейф у допуску |
| Регулятори обертів і мотори | однакова реакція на однакову команду |
| Гвинти | цілі, збалансовані, правильно орієнтовані |
| Радіоканал | зв'язок стабільний на робочій дальності |
| Режими польоту | перемикачі призначені й перевірені |
| Аварійне вимкнення | доступне й перевірене |
Якщо напруга поза діапазоном при живленні від USB, причина радше в порту комп'ютера; якщо при живленні від батареї — перевіряти треба саму батарею.
Частина 3 · Здоров'я приводів
Стан кожного привода описують одним числом — коефіцієнтом ефективності, який зводить в одну величину вплив мотора, гвинта, регулятора обертів і батареї на цьому промені.
| Оцінена ефективність | Тлумачення | Реакція |
|---|---|---|
| близько 1,0 | привод здоровий | політ продовжується |
| 0,7–0,9 | часткова втрата тяги | попередження, скорочення місії |
| нижче ≈ 0,7 | серйозна деградація | повернення до точки старту або посадка |
| близько 0 | привод відмовив | degraded mode і негайна посадка |
Автопілот оцінює ці коефіцієнти в реальному часі, порівнюючи фактичну реакцію апарата на команди з очікуваною: якщо апарат стабільно недобирає момент з одного боку, ефективність відповідного привода нижча за одиницю.
Другий, незалежний спосіб — за вібраціями: коли гвинт або мотор аномальні, динамічний баланс порушується, і вібраційний сигнал корпусу відрізняється від сигналу в нормальному стані.
Батарея: чому напруга не показує заряд

Напруга батареї проти заряду і дрейф розімкненого інтегрування
Найпростіше правило — «напруга нижча за поріг довше кількох секунд, отже заряд низький». Друге — рахувати залишкову ємність інтегруванням струму. Обидва мають вади, видні на рисунку.
- Напруга пов'язана зі станом розряду нелінійно: похибка вимірювання ±30 мВ у середині кривої дає невизначеність заряду в десятки відсотків.
- Підрахунок ємності інтегруванням струму — процес розімкнений: мале зміщення у вимірюванні струму накопичується в помилку, що росте з часом польоту.
Тому вводять третій показник — стан заряду (state of charge, SoC) — і оцінюють його фільтром разом із внутрішнім опором батареї.
| Позначення | Значення |
|---|---|
| стан заряду, частка від повного | |
| струм розряду, А | |
| крок часу, год | |
| номінальна ємність, А·год |
Частина 4 · Скільки приводів можна втратити

Що лишається керованим після відмов приводів
«Керований» тут означає, що апарат здатен утримувати заданий стан наявною тягою.
Три висновки для практики:
- Компроміс закладено в геометрію. Розташування гвинтів парами дає відмовостійкість там, де почергове її не має, але ціною меншого запасу керування в безвідмовному польоті: умовна міра запасу падає приблизно з 1,49 до 1,13. Це і є той запас керування, про який Модуль 02 сказав одним реченням: числа до нього — тут.
- Відмова від рискання рятує. Якщо викинути рискання з переліку станів, які треба контролювати, апарат зберігає висоту й положення, повільно обертаючись навколо вертикалі, — і сідає керовано.
- Дві відмови — це кінець для всіх розглянутих схем. Ресурс проєктують на одну.
Чому відмова привода така небезпечна

Стійка і нестійка рівновага на прикладі кульки
Нагадування з Модуля 02: мультикоптер у висінні — це кулька на вершині горба, рівновага нестійка за побудовою. Після відмови привода запас керування падає, і «горб» стає крутішим: те саме збурення, яке справний апарат відпрацьовував без наслідків, тепер виводить його з рівноваги остаточно.
Звідси й правило: рішення про перехід у degraded mode ухвалюють за порогом ефективності, не чекаючи, поки апарат почне падати. До моменту, коли відхилення стане помітним, запасу на його виправлення вже не лишиться.
Failsafe: що робити після відмови
| Клас відмови | Правило |
|---|---|
| Втрата RC | продовжити місію, якщо вона автономна; інакше зависнути, потім повернутися на базу |
| Втрата зв'язку з наземною станцією | продовжити поточне завдання, не приймати нових |
| Втрата обох каналів | повернення на базу за збереженим маршрутом |
| Вихід за геозону | зупинка на межі, потім повернення |
| Критичний заряд | негайне повернення або посадка на місці, залежно від запасу |
| Відмова сенсора | перейти на резервне джерело; якщо резерву немає — знизити режим автономії |
| Відмова привода | degraded mode, відмова від рискання, керована посадка |
Головне правило: реакція має бути детермінованою й перевіреною. Навчена політика тут не застосовна — вона не має гарантій. Failsafe пишуть класично.
Автомат станів польотних режимів
Логіка автопілота — скінченний автомат: стани апарата, події та умови переходів.
| Стан | Що означає | Куди може перейти |
|---|---|---|
| Мотори заблоковані | мотори заблоковані | у «озброєний» за командою і пройденим чек-листом |
| Мотори розблоковані (армування) | мотори обертаються, апарат на землі | у «зліт» або назад у «роззброєний» |
| Політ за завданням | виконує місію | у «зависання», «повернення», «degraded» |
| Зависання | утримує точку | у «політ», «повернення», «посадка» |
| Повернення на базу | летить за збереженим маршрутом | у «посадка» |
| Degraded mode | обмежена керованість після відмови | лише в «посадка» |
| Посадка | кероване зниження | у «роззброєний» |

Контур керування польотом мультикоптера нижнього рівня
Автомат станів стоїть над цим контуром: він не втручається в керування рухом, а перемикає, звідки береться завдання. Саме тому failsafe можна перевірити окремо від польотної динаміки.
1Мотори розблоковані (армування) на землі
2Політ за завданням
3Деградований режим після відмови
4Керована посадка
Події бувають ручні (команда оператора, перемикач режиму) і автоматичні (спрацював поріг, вичерпано заряд, виявлено відмову). Умови переходу мають бути записані явно: «перехід у degraded mode, якщо
Дерево пошуку несправності
| Симптом | Ймовірна причина | Дія |
|---|---|---|
| Апарат самовільно обертається навколо вертикалі | компас під завадами або хибно орієнтований | перейти на режим без утримання курсу, сісти |
| Стрибки висоти в режимі утримання | барометр, потік повітря від гвинтів | перейти на далекомір або зовнішню локалізацію |
| Сильні коливання корпусу | IMU, вібрації, розбалансований гвинт | знизити підсилення контуру, сісти |
| Апарат «недобирає» момент з одного боку | деградація привода на цьому промені | оцінити |
| Дрейф положення при справному GNSS | зміщення акселерометра, помилка фільтра | перекалібрувати, перевірити нев'язку |
| Раптова втрата висоти | просідання батареї під навантаженням | перевірити внутрішній опір, замінити батарею |
Кожен рядок починається з того, що видно в логах, а не з гіпотези. Це головна методична вимога: діагностика йде від вимірювання.
Частина 5 · Робастність рою до втрати апаратів
Відмова одного апарата в рої не має бути відмовою місії. Але це властивість, яку треба виміряти, а не припустити.

Алгебраїчна зв'язність під час втрати апаратів для трьох радіусів зв'язку
Рій із 20 апаратів, 40 випадкових порядків відмов. Ліва панель показує середню
| Радіус зв'язку | Середня | Прогонів, де рій цілий |
|---|---|---|
| 30 м | 0,015 | 1 із 40 |
| 40 м | 0,304 | 10 із 40 |
| 55 м | 1,129 | 27 із 40 |
Головна пастка вимірювання: додатна середня
Практичний висновок: робастність купується радіусом зв'язку, тобто потужністю передавача й енергією. Це не безкоштовна властивість рою, а свідоме проєктне рішення.
Чотири властивості, які плутають
| Термін | Що означає |
|---|---|
| Відмовостійкість (fault tolerance) | витримувати відмови частин із плавною, а не обвальною втратою продуктивності |
| Стійкість (robustness) | ефективно працювати в умовах, відмінних від передбачених при проєктуванні |
| Гнучкість (flexibility) | розв'язувати задачі, відмінні від закладених при проєктуванні |
| Адаптивність | змінювати поведінку у відповідь на нові умови роботи |
Найважливіший урок галузі: ці властивості не з'являються в рої автоматично. Їх треба свідомо проєктувати й вимірювати.
Структурний наслідок: ієрархічне керування роєм вимагає механізмів, які роблять систему вразливою — з'являється єдина точка відмови, а масштабованість погіршується. Найяскравіше перевага роїв видна там, де ремонт неможливий: апарат, відправлений у космос, не полагодиш, зате відмова одного робота в надлишковій групі не зупиняє місію.
Чого ця схема не гарантує
- Виявлення не є передбаченням. Нев'язка ловить відмову, що вже сталася. Прогнозування ресурсу — окрема задача.
- Пороги налаштовані під конкретну платформу. Перенесення порогів ArduPilot на інший апарат без перекалібрування дає або хибні тривоги, або пропуски.
- Одночасні відмови не розглядаються. Схеми вище припускають одну відмову за раз; корельовані відмови (просідання батареї одночасно на всіх променях) вони не ловлять.
- Навчена політика не має сертифіката безпеки. Статистика на навчальному розподілі не є гарантією поза ним — див. Модуль 08: 0,02 зіткнення при 8 апаратах і 8,63 при 128.
- Зловмисник не змодельований. Підміна GNSS-сигналу, атака на канал керування, «віддана меншість» із Модуля 01 як вектор атаки — окрема тема, яка виходить за межі стандартного failsafe.
Робастність рою: чому середнє обманює
Двадцять апаратів на майданчику 100×100 м. Розкладка одна, 40 різних порядків втрати — і в кожному дивимося, чи лишився рій зв'язним.
10 із 40 прогонів зв'язні
4апаратів лишилося
10 / 40прогонів, де рій зв'язний
2.00середня кількість компонент
4найгірший прогін, компонент
Поставте 16 втрат і радіус 40 м: рій зв'язний лише у чверті прогонів, хоча середня алгебраїчна зв'язність по всіх прогонах лишається додатною — її витягують ті прогони, де пощастило. Середнє по вибірці, частина якої дала нуль, не є характеристикою зв'язності. Доповідати треба частку зв'язних прогонів і найгірший випадок, а не одне усереднене число.
Регуляторні та експериментальні обмеження
Навіть повністю справний рій не можна просто підняти в повітря.
| Обмеження | Наслідок для курсу й для практики |
|---|---|
| Відсутність правової рамки для автономного групового польоту | більшість результатів отримано в приміщенні або в симуляції |
| Вимоги до зони польотів | потрібна захищена зона, сітка, підстрахування оператором |
| Час польоту нанодрона ≈ 6 хв | серія прогонів робиться пакетами із заміною акумуляторів |
| Зовнішня локалізація в приміщенні | «децентралізованість» стосується обчислень, а не локалізації |
| Вартість аварії | кожен прогін коштує дорого, тому симулятор — основний інструмент |
Обов'язковий елемент будь-якого польоту з навченою політикою — резервний класичний регулятор і можливість ручного перехоплення. Це не бюрократія, а єдиний спосіб мати гарантію там, де політика її не дає.
Висновки
- Відмови поділяють на сенсорні, силової установки та зв'язку; найпідступніші — сенсорні, бо апарат фізично справний і впевнено виконує хибні команди.
- Універсальний механізм виявлення — нев'язка між прогнозом моделі й показанням сенсора; поріг перетинається раніше, ніж дрейф стає помітним оператору.
- Пороги мають бути числовими й документованими: 35 % відхилення поля, 45° розбіжності компасів, ±400 мГс нуля, 5 с без RC.
- Здоров'я привода зводять до коефіцієнта ефективності
; поріг 0,7 розділяє «скоротити місію» і «сідати». - Напруга батареї не показує заряд: зв'язок нелінійний, а інтегрування струму розімкнене. Потрібен фільтр SoC.
- Скільки приводів можна втратити, визначає геометрія, і відмовостійкість купується запасом керування у справному стані.
- Робастність рою до втрати апаратів вимірюється й купується радіусом зв'язку. Доповідати треба частку зв'язних прогонів, а не середню
: середня 0,304 при десяти зв'язних прогонах із сорока створює хибне враження запасу. - Failsafe пишуть класично й детерміновано: навчена політика тут не застосовна, бо не має гарантій.
Перехід до Модуля 12
Курс пройшов повний шлях: від означення рою до навчених політик і до того, що робити, коли вони відмовляють. Лишилося питання, з якого починається будь-яка реальна робота: як це все запустити й перевірити.
Модуль 12 · Реалізація та інструменти розбирає інструментальний стек — симулятори, фреймворки MARL, реальні платформи, — типовий конвеєр експерименту від постановки до звіту й помилки, яких припускаються найчастіше.
Література та ресурси
- Quan Quan. Introduction to Multicopter Design and Control. Springer, 2017. ISBN 978-981-10-3382-7. Розділ 14 «Health Evaluation and Failsafe» — пороги компаса, оцінювання приводів, автомат станів.
- Dorigo M., Theraulaz G., Trianni V. Swarm Robotics: Past, Present, and Future. Proceedings of the IEEE, 2021, 109(7), 1152–1165. DOI 10.1109/JPROC.2021.3072740 — відмовостійкість і робастність не даються автоматично.
- Fiedler M. Algebraic Connectivity of Graphs. Czechoslovak Mathematical Journal, 1973, 23(2), 298–305.
- Plett G. L. Extended Kalman Filtering for Battery Management Systems. Journal of Power Sources, 2004, 134(2), 262–276 — оцінювання SoC фільтром.
- Zhang Y., Jiang J. Bibliographical Review on Reconfigurable Fault-Tolerant Control Systems. Annual Reviews in Control, 2008, 32(2), 229–252.
- Документація failsafe: ArduPilot Failsafe · PX4 Safety Configuration
- Практика: Crazyswarm2 · PX4 SITL