Skip to content

Модуль 11 · Безпека та робастність роїв БПЛА

Що відбувається, коли припущення попередніх модулів порушено: відмовляє апарат, зникає зв'язок, брешуть сенсори. Оцінювання справності, безпечні режими відмови та вимоги перед реальним застосуванням.

Виявлення відмови порівнянням показу сенсора з прогнозом моделі

Виявлення відмови порівнянням показу сенсора з прогнозом моделі

Зміст лекції

ЧастинаПро що
1. Типи відмовсенсори, силова установка, зв'язок
2. Виявленнянев'язка, числові пороги, чек-лист перед зльотом
3. Оцінювання ресурсуздоров'я приводів, стан заряду батареї
4. Реакція на відмовуfailsafe, скільки приводів можна втратити, автомат станів
5. Робастність роювтрата апаратів, зв'язність, межі підходу

Модулі 06–08 припускали, що все працює. Реальні місії цієї розкоші не мають, і відмовостійкість не з'являється в рої автоматично — її треба свідомо проєктувати.

Результати навчання

Після лекції ви зможете:

  • назвати три типи відмов і механізм виявлення для кожного;
  • пояснити виявлення відмови за нев'язкою і назвати числові пороги для компаса й зв'язку;
  • інтерпретувати коефіцієнт ефективності привода й ухвалити рішення за його значенням;
  • пояснити, чому напруга батареї — поганий показник залишкового заряду;
  • сказати, скільки приводів може втратити квадрокоптер і гексакоптер кожної геометрії;
  • побудувати автомат станів польотних режимів із подіями й умовами переходу;
  • оцінити робастність рою до втрати апаратів через λ2;
  • відрізнити відмовостійкість, робастність, гнучкість і адаптивність.

Частина 1 · Три типи відмов

Відмови неминучі, і проєктувати треба не їхню відсутність, а реакцію на них.

ТипПрикладиЧим небезпечний
Сенсорнібарометр дрейфує, компас під завадами, супутниковий приймач втратив сигнал, IMU зміщенийоцінка стану стає хибною, а керування — впевнено неправильним
Силової установкивідмова мотора, зламаний або розбалансований гвинт, збій регулятора обертів, просідання батареївтрата тяги й моменту, часто необоротна
Зв'язкувтрата сигналу з пульта, втрата зв'язку з наземною станцією, втрата сусіда в роїапарат лишається без завдання або рій розпадається

Найпідступніший клас — сенсорні: апарат фізично справний, і саме тому продовжує виконувати команди, побудовані на хибних даних. Відмову мотора видно одразу; дрейф барометра на 0,9 м виглядає як нормальний політ.

Частина 2 · Виявлення відмови за нев'язкою

Найзагальніший спосіб виявити несправний сенсор не залежить від його типу. Автопілот тримає власну модель руху й безперервно прогнозує, які покази мали б дати сенсори. Різниця між прогнозом і фактом — нев'язка.

r=yy^
ПозначенняЗначення
yте, що виміряв сенсор
y^те, що передбачила модель
rнев'язка, розбіжність між ними

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

У показаній симуляції барометр починає дрейфувати на 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 · Здоров'я приводів

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

ηi[0,1]
Оцінена ефективністьТлумаченняРеакція
близько 1,0привод здоровийполіт продовжується
0,7–0,9часткова втрата тягипопередження, скорочення місії
нижче ≈ 0,7серйозна деградаціяповернення до точки старту або посадка
близько 0привод відмовивdegraded mode і негайна посадка

Автопілот оцінює ці коефіцієнти в реальному часі, порівнюючи фактичну реакцію апарата на команди з очікуваною: якщо апарат стабільно недобирає момент з одного боку, ефективність відповідного привода нижча за одиницю.

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

Батарея: чому напруга не показує заряд

Напруга батареї проти заряду і дрейф розімкненого інтегрування

Напруга батареї проти заряду і дрейф розімкненого інтегрування

Найпростіше правило — «напруга нижча за поріг довше кількох секунд, отже заряд низький». Друге — рахувати залишкову ємність інтегруванням струму. Обидва мають вади, видні на рисунку.

  • Напруга пов'язана зі станом розряду нелінійно: похибка вимірювання ±30 мВ у середині кривої дає невизначеність заряду в десятки відсотків.
  • Підрахунок ємності інтегруванням струму — процес розімкнений: мале зміщення у вимірюванні струму накопичується в помилку, що росте з часом польоту.

Тому вводять третій показник — стан заряду (state of charge, SoC) — і оцінюють його фільтром разом із внутрішнім опором батареї.

Sk+1=SkIkTsQmax
ПозначенняЗначення
Sстан заряду, частка від повного
Iструм розряду, А
Tsкрок часу, год
Qmaxномінальна ємність, А·год

Частина 4 · Скільки приводів можна втратити

Що лишається керованим після відмов приводів

Що лишається керованим після відмов приводів

«Керований» тут означає, що апарат здатен утримувати заданий стан наявною тягою.

Три висновки для практики:

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

Чому відмова привода така небезпечна

Стійка і нестійка рівновага на прикладі кульки

Стійка і нестійка рівновага на прикладі кульки

Нагадування з Модуля 02: мультикоптер у висінні — це кулька на вершині горба, рівновага нестійка за побудовою. Після відмови привода запас керування падає, і «горб» стає крутішим: те саме збурення, яке справний апарат відпрацьовував без наслідків, тепер виводить його з рівноваги остаточно.

Звідси й правило: рішення про перехід у degraded mode ухвалюють за порогом ефективності, не чекаючи, поки апарат почне падати. До моменту, коли відхилення стане помітним, запасу на його виправлення вже не лишиться.

Failsafe: що робити після відмови

Клас відмовиПравило
Втрата RCпродовжити місію, якщо вона автономна; інакше зависнути, потім повернутися на базу
Втрата зв'язку з наземною станцієюпродовжити поточне завдання, не приймати нових
Втрата обох каналівповернення на базу за збереженим маршрутом
Вихід за геозонузупинка на межі, потім повернення
Критичний заряднегайне повернення або посадка на місці, залежно від запасу
Відмова сенсораперейти на резервне джерело; якщо резерву немає — знизити режим автономії
Відмова приводаdegraded mode, відмова від рискання, керована посадка

Головне правило: реакція має бути детермінованою й перевіреною. Навчена політика тут не застосовна — вона не має гарантій. Failsafe пишуть класично.

Автомат станів польотних режимів

Логіка автопілота — скінченний автомат: стани апарата, події та умови переходів.

СтанЩо означаєКуди може перейти
Мотори заблокованімотори заблокованіу «озброєний» за командою і пройденим чек-листом
Мотори розблоковані (армування)мотори обертаються, апарат на земліу «зліт» або назад у «роззброєний»
Політ за завданнямвиконує місіюу «зависання», «повернення», «degraded»
Зависанняутримує точкуу «політ», «повернення», «посадка»
Повернення на базулетить за збереженим маршрутому «посадка»
Degraded modeобмежена керованість після відмовилише в «посадка»
Посадкакероване зниженняу «роззброєний»
Контур керування польотом мультикоптера нижнього рівня

Контур керування польотом мультикоптера нижнього рівня

Автомат станів стоїть над цим контуром: він не втручається в керування рухом, а перемикає, звідки береться завдання. Саме тому failsafe можна перевірити окремо від польотної динаміки.

1Мотори розблоковані (армування) на землі
2Політ за завданням
3Деградований режим після відмови
4Керована посадка

Події бувають ручні (команда оператора, перемикач режиму) і автоматичні (спрацював поріг, вичерпано заряд, виявлено відмову). Умови переходу мають бути записані явно: «перехід у degraded mode, якщо ηi<0,7 довше 0,5 с».

Дерево пошуку несправності

СимптомЙмовірна причинаДія
Апарат самовільно обертається навколо вертикалікомпас під завадами або хибно орієнтованийперейти на режим без утримання курсу, сісти
Стрибки висоти в режимі утриманнябарометр, потік повітря від гвинтівперейти на далекомір або зовнішню локалізацію
Сильні коливання корпусуIMU, вібрації, розбалансований гвинтзнизити підсилення контуру, сісти
Апарат «недобирає» момент з одного бокудеградація привода на цьому променіоцінити ηi, при <0,7 — повернення
Дрейф положення при справному GNSSзміщення акселерометра, помилка фільтраперекалібрувати, перевірити нев'язку
Раптова втрата висотипросідання батареї під навантаженнямперевірити внутрішній опір, замінити батарею

Кожен рядок починається з того, що видно в логах, а не з гіпотези. Це головна методична вимога: діагностика йде від вимірювання.

Частина 5 · Робастність рою до втрати апаратів

Відмова одного апарата в рої не має бути відмовою місії. Але це властивість, яку треба виміряти, а не припустити.

Алгебраїчна зв'язність під час втрати апаратів для трьох радіусів зв'язку

Алгебраїчна зв'язність під час втрати апаратів для трьох радіусів зв'язку

Рій із 20 апаратів, 40 випадкових порядків відмов. Ліва панель показує середню λ2, права — частку прогонів, у яких рій ще зв'язний. Після 16 втрат (із 40 прогонів):

Радіус зв'язкуСередня λ2Прогонів, де рій цілий
30 м0,0151 із 40
40 м0,30410 із 40
55 м1,12927 із 40

Головна пастка вимірювання: додатна середня λ2=0,304 виглядає обнадійливо, але за нею стоять тридцять прогонів із сорока, у яких рій уже розпався. Середнє по прогонах, частина з яких дала нуль, не є характеристикою зв'язності — доповідати треба частку зв'язних прогонів.

Практичний висновок: робастність купується радіусом зв'язку, тобто потужністю передавача й енергією. Це не безкоштовна властивість рою, а свідоме проєктне рішення.

Чотири властивості, які плутають

ТермінЩо означає
Відмовостійкість (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.
  • Здоров'я привода зводять до коефіцієнта ефективності ηi; поріг 0,7 розділяє «скоротити місію» і «сідати».
  • Напруга батареї не показує заряд: зв'язок нелінійний, а інтегрування струму розімкнене. Потрібен фільтр SoC.
  • Скільки приводів можна втратити, визначає геометрія, і відмовостійкість купується запасом керування у справному стані.
  • Робастність рою до втрати апаратів вимірюється й купується радіусом зв'язку. Доповідати треба частку зв'язних прогонів, а не середню λ2: середня 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

Матеріали курсу. Схеми із зовнішніх джерел належать їхнім авторам — посилання під кожною ілюстрацією.