Чому падають дрони на ArduPilot і чому причину майже завжди видно в логах

9 хвилин читання

Борт не повернувся. Оператор бачив, як апарат смикнувся десь на висоті сорока метрів, завалився на бік і пішов у землю. Через п'ять секунд у навушниках тиша. І тепер найгірше питання, яке буває на позиції: чому?

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

Причина падіння не зникає разом з апаратом. Вона залишається в логах

Читайте також: В Україні зараз понад тисячу відкритих вакансій у MilTech. Рішень, які працюють на фронті, теж достатньо: дрони, наземні роботи, системи з комп'ютерним зором. А тепер чесне питання. Чому при всьому цьому індустрія постійно впирається в стелю?

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

  • покази акселерометрі
  • напругу на батареї
  • стан GPS
  • команди на мотори
  • роботу фільтра оцінки положення. 

Це і є лог. Файл із детальним записом того, що апарат відчував і робив у кожну мілісекунду польоту.

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

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

Як влаштований ArduPilot і звідки взагалі беруться дані

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

Підписуйтеся на наші соцмережі

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

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

Апарат не мовчить про свою смерть. Він докладно розповідає, що з ним сталося. Треба лише вміти слухати.

https://conv.choice31.com/miltech-ardupilot?utm_source=media&utm_medium=speka&utm_campaign=chomy-padayt-drony

Типові класи падінь і як вони виглядають у даних

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

  • 1
    Вібрації. Найпідступніша штука. Погано збалансований пропелер, розбитий підшипник мотора, погано закріплений польотний контролер, і акселерометр починає ловити паразитні коливання. У логах це параметр VIBE, і коли його значення повзуть вгору, автопілот починає губити адекватну оцінку прискорень. Далі як доміно: неправильне прискорення ламає оцінку висоти й швидкості, апарат отримує хибну картину світу й падає.
  • 2
    Проблеми з GPS. Втрата супутників, стрибок координат, конфлікт між магнітометром і реальним курсом. Апарат раптом вирішує, що він за двадцять метрів звідти, де він насправді, і починає це компенсувати. У режимах, зав'язаних на позицію, це прямий шлях до втрати керування.
  • 3
    Живлення. Стара батарея, погана пайка, недооцінене навантаження на маневрі. Напруга просідає під час різкого газу, контролер моторів на мить втрачає живлення, апарат клює носом. У логах видно провал по напрузі рівно в момент інциденту.
  • 4
    Помилки EKF. EKF це фільтр, який зводить дані з усіх датчиків в одну узгоджену картину положення апарата. Коли датчики починають суперечити один одному, EKF фіксує розбіжність, так звані інновації, і якщо вони перевищують поріг, автопілот перемикає джерело або взагалі втрачає впевненість у власному положенні.
  • 5
    Помилки тюнінгу. Занадто агресивні коефіцієнти керування, і апарат починає розгойдуватися сам себе, входить у резонанс і втрачає стабільність. Це видно по тому, як команда на мотори й реальна реакція апарата розходяться в характерних коливаннях.

Що об'єднує всі ці випадки? У жодному з них причина не є містичною. Кожна має свій відбиток у даних, і досвідчене око розрізняє їх так само, як лікар читає кардіограму. Аварія перестає бути нещасним випадком і стає діагнозом.

Симптом це ще не причина. І в цьому вся складність

А тепер найтонше місце, на якому спотикається більшість самоучок. Те, що ви бачите в логах першим, майже ніколи не є справжньою причиною падіння. Це наслідок. Симптом.

Уявіть, що лог показує помилку EKF перед падінням. Здавалося б, ось воно, винен фільтр. Але фільтр не ламається сам по собі. Він лише чесно повідомив, що дані від датчиків перестали складатися в цілісну картину. А чому перестали? Може, через вібрації, які збили акселерометр. Може, через магнітні перешкоди, які повели магнітометр. Може, через провал GPS. Помилка EKF це червона лампочка на панелі, а не поломка двигуна.

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

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

Відтворити катастрофу, нічого не розбивши

Є ще одна річ, без якої розбір падінь був би дорогим і болючим заняттям. Це SITL, симуляція польотного контролера прямо на комп'ютері. Той самий код ArduPilot, який стоїть на реальному борту, запускається у віртуальному середовищі, де є віртуальний апарат зі своєю фізикою, датчиками й реакціями.

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

Для військової сфери це особливо цінно. Реальний борт коштує грошей і часу, а кожна аварія на випробуваннях це втрата. Симулятор дозволяє відпрацьовувати найризикованіші сценарії у віртуалі, а на реальний апарат виходити вже з розумінням, що і чому може піти не так. Логіку розбору можна тренувати нескінченно, і жодна помилка тут нічого не коштує.

Ринок гостро потребує тих, хто вміє читати логи

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

Діагностика за логами це окрема інженерна навичка. Вона не про те, як пілотувати, і не про те, як паяти. Вона про здатність прочитати мову, якою автопілот розповідає про свою смерть, і перекласти її в дію. Ця навичка не з'являється сама від годин нальоту. Її треба ставити окремо, як ставлять читання рентгена чи роботу з осцилографом.

Курс MilTech ArduPilot: https://conv.choice31.com/miltech-ardupilot?utm_source=media&utm_medium=speka&utm_campaign=chomy-padayt-drony 

Якщо ви вже працюєте з бортами руками й хочете перестати залежати від зовнішнього інженера щоразу, коли апарат падає, є системне навчання саме цього методу. Курс MilTech ArduPilot вчить розбирати падіння за логами, відрізняти симптом від кореневої причини й відпрацьовувати все це в SITL, на віртуальному апараті, без ризику для реального заліза. Не тому, що це модно. А тому, що вміння знайти причину, поки її не знайшов противник у своїх бортах, це і є та перевага, яку ринок сьогодні цінує найвище. Читати логи можна навчитися. І краще почати до того, як впаде наступний борт.