ПЗ для дронів
ПЗ для дронів — це польотний код безекіпажного апарата й наземне ПЗ, що ним командує, створені, щоб лишатися безпечними, коли зникне звʼязок, позиція чи заряд. Безекіпажний апарат — це розподілена система, у якій один вузол падає з неба, якщо пропустить дедлайн, і цей єдиний факт вирішує, який код де працює, що може блокуватися і чому дозволено падати. Сторінка починається з чеклиста готовності до польоту на двадцять пʼять рядків; далі — стек як ієрархія дедлайнів, драбина фейлсейфів як справжня специфікація, рішення про повернення як розрахунок енергії, автономність як список рішень, симуляція як тестове середовище і сім задокументованих аварій.
- Стек упорядкований за
- Дедлайнами, не шарами
- Специфікація —
- Драбина фейлсейфів
- Повернення вмикає
- Енергія до дому, не %
Чеклист готовності до польоту
Спершу весь чеклист — бо саме про це питає огляд готовності до польоту і бо кожен його рядок уже коштував комусь апарата: сім таких аварій — унизу цієї сторінки. Він пронумерований, щоб на рядок можна було послатися: «ми жодного разу не проганяли 2.4» — це задача, тоді як «фейлсейфи треба б переглянути» — це настрій. Він написаний для команди, яка будує або інтегрує ПЗ — на PX4відкритий автопілотВідкритий автопілот для дронів, літаків та інших безекіпажних апаратів, який розвиває Dronecode Foundation під егідою Linux Foundation, з ліцензією BSD. Він працює на польотній платі й відповідає за стабілізацію, оцінку стану, режими польоту й фейлсейфи; дозвільна ліцензія — одна з причин, чому компанії будують на ньому продукти.Усі терміни, ArduPilotвідкритий автопілотВідкритий автопілот для мультикоптерів, літаків, гелікоптерів, човнів і наземних апаратів під ліцензією GPLv3. Він покриває те саме, що й PX4, — стабілізацію, навігацію, режими, фейлсейфи — із ширшим набором типів апаратів і копілефт-ліцензією, яка важить того дня, коли ви постачаєте змінену прошивку.Усі терміни чи власному автопілоті. Це не передпольотна картка оператора, хоча половина групи 5 зрештою на неї потрапляє.
Робіть спершу групи 2 і 6. Конфігурація фейлсейфів — це те, що апарат справді робить, коли щось іде не так, а доки збій не вкинули в симуляції, ніхто не бачив, як ця конфігурація працює.
1.Стек і його межі
- Політний контролер виконує керування й оцінку стану — і більше нічого. Фіча не йде туди через те, що там «ближче до заліза».
- Бортовий компʼютер звертається до автопілота через один інтерфейс повідомлень як недовірений клієнт: кожне завдання, яке він надсилає, перевіряють на допустимий діапазон і можуть відхилити.
- Автопілот стежить за сигналом «я живий» (heartbeat) від бортового компʼютера й має налаштовану дію на випадок, коли той замовкне.
- Жодне рішення керування на борту не чекає, поки відпрацює канал із землею.
2.Драбина фейлсейфів
- Кожна умова має налаштовану дію: втрачено канал керування, втрачено позицію, мало енергії, досягнуто межу, бортовий компʼютер мовчить, оцінювач стану несправний.
- Кожну дію забезпечує найнижчий ярус, здатний її забезпечити: межу й запас енергії — автопілот, і ніколи не лише наземна станція.
- Тестують комбінації, а не лише окремі умови: втрачений звʼязок разом із низьким зарядом і зустрічним вітром — окремий випадок.
- Останній щабель — посадку на місці, парашут, припинення польоту — справді відпрацьовано, а що він робить над людьми, водою й дорогами, записано.
3.Енергія й шлях додому
- Повернення вмикає енергія, потрібна, щоб долетіти додому, плюс резерв на посадку, порахована з відстані й вітру, — а не фіксований відсоток батареї.
- Залишок ємності оцінюють за спожитим зарядом, а не лише за напругою, і знають, що на холоді ця оцінка завищена.
- Маршрут на випадок утрати звʼязку оминає людей і закінчується там, де вимушена посадка прийнятна, — а не петлею, яку летять, доки не скінчиться паливо.
- Пільговий таймер утрати звʼязку дає рутинним обривам минути, не перериваючи місії, і його значення — рішення, ухвалене на рев’ю, а не значення за замовчуванням.
4.Позиція і стан
- Справність оцінювача стану відстежують, і оцінка, якій більше не можна вірити, — це окрема умова фейлсейфу, а не попередження на екрані.
- Утрата супутникового позиціонування веде до визначеної поведінки: утримуватися на інерціальній і візуальній оцінці задане число секунд, потім знижуватися чи повертатися.
- Кожен сенсор, здатний завершити політ, звіряють з іншим: супутникову позицію чи показ висоти, що розходиться з рештою, беруть під сумнів, а не виконують.
- Кожне вимірювання має мітку часу, яку перевіряють, бо застаріле значення, подане як свіже, шкодить більше, ніж відсутнє.
5.Наземна станція й конфігурація
- Параметри лежать у системі контролю версій окремо для кожного планера, а їхню зміну переглядають так само, як зміну коду.
- Перед польотом параметри на апараті порівнюють із переглянутим набором, і будь-яка розбіжність блокує зліт.
- Налаштування, послаблене заради тесту чи демонстрації, має власника й дату, коли воно спливає.
- Прошивку, параметри й файли місії підтверджують на кожному апараті: флот — це N підтверджень, а не одне завантаження.
- Керування не може перейти між пультами чи операторами, поки вони розходяться в положенні органу керування, а критичний для безпеки збій має власну тривогу.
6.Тести й докази
- Симуляція software in the loopсправжня прошивка, змодельований світТестування, у якому справжнє керувальне ПЗ працює на звичайному компʼютері проти змодельованого апарата, сенсорів і світу. Воно досить швидке, щоб запускатися на кожен коміт, і тому стає регресійним набором; не знайде воно лише того, що залежить від таймінгу справжнього процесора.Усі терміни запускається на кожен мердж, і кожна змодельована місія має перевірки по записаному логу.
- hardware in the loopсправжня плата, змодельований світТестування, у якому справжня плата контролера з її справжньою прошивкою підключена до симулятора, що подає їй сенсорні дані замість фізичного світу. Воно знаходить помилки таймінгу, перевантаження процесора й баги драйверів, недоступні чистій симуляції, — ціною того, що залізо має стояти на стенді.Усі терміни запускається за розкладом, бо помилки таймінгу й баги драйверів у чистій симуляції невидимі.
- Збої — це скриптовані кейси в наборі: обірвати звʼязок, заморозити сенсор, зсунути мітку часу, підмінити показ батареї, зупинити мотор.
- Кожен політний лог зберігають і можуть відтворити, а збій, побачений у повітрі бодай раз, стає тест-кейсом, що житиме завжди.
Стек — це ієрархія дедлайнів
Спокусливо читати бортове ПЗ як шари абстракції — так, як читають вебзастосунок. Корисніше читати його як шари того, скільки часу кожна частина може витратити. Внутрішній контур керування виконується сотні разів на секунду й має жорсткий дедлайн: пропустиш — і апарат стає нестабільним за частку секунди. Усе над ним має дедалі більший запас часу, і саме розмір запасу вирішує, що там може жити.
Одну деталь діаграма спрощує, і вона важить, коли читаєте код PX4 чи ArduPilot. Перші два яруси зазвичай — та сама плата з тією самою прошивкою. Регулятор кутових швидкостей, оцінювач стану, навігація й логіка режимів — це задачі на одному мікроконтролері, розділені пріоритетом і частотою циклу, а не кабелем. Тож межа між ними — рішення планувальника, і додати роботи у швидку задачу — саме той спосіб, у який фіча краде час у стабілізації. Бортовий компʼютер — перший ярус, що справді є окремою машиною, і саме тому йому можна дозволити падати.
| Ярус | Де працює | Дедлайн | Відкриті приклади | Ніколи не має права |
|---|---|---|---|---|
| Політний контролер | Мікроконтролер на польотній платі | Жорсткий: пропущений цикл — нестабільність | PX4, ArduPilot; Betaflight та INAV на FPV | Виділяти памʼять у польоті, торкатися мережі, чекати на ярус вище |
| Автопілот | Та сама плата, задачі з нижчим пріоритетом | Твердий: десятки герц | navigator і commander у PX4; ArduCopter та ArduPlane; оцінювачі EKF2 та EKF3 | Залежати від звʼязку з землею в усьому, що тримає апарат у безпеці |
| Бортовий компʼютер | Одноплатний компʼютер на Linux | Мʼякий: за можливості | ROS 2 через міст uXRCE-DDS у PX4, MAVROS, MAVSDK | Мати владу; його падіння має зупинитися на інтерфейсі |
| Наземна станція | Ноутбук чи планшет на землі | Людський час: від секунд до хвилин | QGroundControl, Mission Planner | Бути єдиним місцем, де живе правило безпеки |
| Канал звʼязку | Одне радіо, іноді кілька | Жодного — це вхід | MAVLink через телеметрійне радіо | Вважатися наявним |
MAVLink заслуговує на окреме речення, бо ним розмовляє майже кожна відкрита наземна станція й бібліотека для бортового компʼютера. Це компактний протокол повідомлень між апаратом і всім, що поза ним: heartbeat раз на секунду, щоб кожна сторона знала, що інша жива, потоки телеметрії, команди з підтвердженнями й протокол місії, у якому апарат запитує точки маршруту по одній і підтверджує завантаження цілком. Підтвердження — та частина, яку треба поважати. Надіслана команда — це ще не прийнята команда, і наземне ПЗ, що вважає їх тим самим, — це саме те, через що апарат зрештою летить місію, яку ніхто не довантажив.
Драбина фейлсейфів — це і є специфікація
План місії описує, що має статися. Конфігурація фейлсейфів описує, що станеться, і саме вона вирішує, чи можна цим апаратом узагалі літати. Фейлсейф (failsafe) — це поведінка, налаштована заздалегідь для одного конкретного збою: умова, що її вмикає, і дія, яку апарат після цього виконує сам, нікого не питаючи. Кожен запис відповідає на одне питання — це сталося, що тепер, — і кожна відповідь є обміном без безкоштовного варіанта.
| Умова | Розумна поведінка | Обмін, який вона робить |
|---|---|---|
| Втрачено канал керування | Продовжувати місію визначений час, потім повертатися | Негайне повернення марнує більшість вильотів, бо звʼязок зникає рутинно. Ніколи не повертатися — втратити апарат. |
| Втрачено визначення позиції | Утримуватися за інерціальною та візуальною оцінкою, потім знижуватися чи повертатися за численням шляху | Числення шляху дрейфує. Що довше йому вірити, то далі ви від того місця, де себе вважаєте. |
| Енергії залишається мало | Повертатися зараз, із тригером, порахованим з відстані й вітру, — наступний розділ | Фіксований відсоток хибний з обох кінців польоту. |
| Досягнуто географічну межу | Відмовитися її перетинати, хоч що просить місія чи оператор | Її має забезпечувати автопілот, інакше це порада, а не межа. |
| Бортовий компʼютер замовк | Повернутися до останнього дійсного режиму автопілота й летіти далі без нього | Апарат утрачає розумну поведінку й далі летить — і це правильний порядок пріоритетів. |
| Оцінка стану несправна | Перейти в режим, якому не потрібна позиція, — утримувати висоту або сідати | Сідати наосліп може бути гірше, ніж утримуватися; що правильно — залежить від того, що внизу. |
З цієї таблиці варто витягти дві властивості — це рядки 2.2 і 2.3. Перша: кожну поведінку слід забезпечувати на найнижчому ярусі, здатному її забезпечити. Межа, реалізована в наземній станції, є побажанням, бо саме наземна станція й зникає. Друга: фейлсейфи взаємодіють, і саме у взаємодіях живуть несподіванки. Зниклий звʼязок плюс низький заряд плюс зустрічний вітер — ситуація інша, ніж кожне з трьох окремо, і конфігурація, що обробляє кожне поодинці, все одно може дати апарат, який упевнено летить геть від дому.
З тієї ж причини доступність — хибна ціль для всього, що літає. Відсоток часу роботи описує сервіс, який або працює, або ні. Апарат проводить свої найцікавіші хвилини в часткових станах — без звʼязку, без супутникової позиції, без бортового компʼютера, — і корисна специфікація називає, що ще працює на кожному рівні втрат. Таблиця фейлсейфів і є такою специфікацією, тільки записаною.
Повернення — це розрахунок енергії, а не відсоток
Найпоширеніше налаштування батареї в полі — якийсь варіант «повертатися на 30%». Воно виглядає як обережність, і воно хибне з обох кінців польоту. Енергія, потрібна апарату, щоб дістатися додому, росте з відстанню до дому й із вітром, проти якого доведеться летіти. Фіксований відсоток не знає ні того, ні іншого.
Візьмімо умовний мультикоптер, що витрачає близько 4% батареї на кілометр у безвітря й хоче мати 10% резерву на посадку. За кілометр від дому йому треба 14%, щоб повернутися, тож тригер на 30% відправляє його назад із 16% батареї, які так і не використали. За пʼять кілометрів йому треба 30% — поріг точний рівно на одній відстані й більше ніде. Тепер додаймо зустрічний вітер, що вдвічі зменшує шляхову швидкість. Кожен кілометр триває вдвічі довше й коштує приблизно вдвічі більше енергії, тож за пʼять кілометрів тому самому апарату треба вже близько 50%, і тригер на 30% спрацьовує тоді, коли долетіти вже неможливо.
Обидва основні відкриті автопілоти дають більше ніж одне число. ArduPilot має двоступеневий фейлсейф батареї — низький і критичний рівні, кожен спрацьовує за напругою або за спожитою ємністю й має власну дію. PX4 має рівні low, critical та emergency і, окремо, фейлсейф саме для цієї проблеми: він оцінює, чи залишку батареї вистачає ледве-ледве на повернення, і тоді вмикає режим Return. Хоч що ви використовуєте, рішення для рев’ю — це рядок 3.1: з чого рахують тригер, а не який відсоток вписати.
Та сама логіка стосується шляху додому — це рядок 3.3. Маршрут на випадок утрати звʼязку — це план польоту, який виконується без жодного нагляду, тож він отримує той самий рев’ю, що й місія, і навіть більший: де він перетинає людей, яку висоту тримає над рельєфом, який справді перетинає, і де закінчується, якщо звʼязок так і не повернеться. «Літає петлею, доки не повернеться контакт» — не закінчення. Це неухвалене рішення про те, де апарат опиниться на землі, коли скінчиться енергія.
Автономність — це набір рішень, а не рівень
Автономність зазвичай обговорюють як шкалу від дистанційного керування до повної незалежності — це корисне резюме й поганий інженерний інструмент. Питання, на яке справді має відповісти проєкт, вужче, і воно повторюється для кожної здатності: які рішення цей апарат ухвалює сам, на яких підставах, у яких межах, а які утримує й питає. Відповісти на цей список — це і є проєктування. Рівень — ярлик, який можна навісити потім.
Два питання сортують кожне рішення: чи коротший його дедлайн за похід до людини й назад, і чи можна хибний вибір скасувати. Три з чотирьох відповідей знайомі. Коротке й оборотне — стабілізацію, обхід перешкоди — вирішують на борту, бо відповісти вчасно ніхто б не встиг, а помилка коштує мало. Довге й оборотне — підправити маршрут, навести камеру — теж можна вирішувати на борту, якщо потім доповісти. Довге й незворотне — це там, де апарат утримує рішення й питає.
Четвертий квадрант — той, який проєкти пропускають: часу спитати немає, а скасувати не можна. Мотор відмовляє низько над дорогою; оцінка позиції розвалюється за кілька метрів над землею; спрацьовує умова припинення польоту. Порадитися ні з ким, і що б не сталося далі — це остаточно. Відповідь тут — ні автономність, ні людина в контурі. Це людина, яка заздалегідь, на землі, вирішує, в який бік апарат помилятиметься, і записує це рішення в конфігурацію, де його можна переглянути. Парашут у Цюриху — саме цей квадрант: рішення про припинення польоту ухвалили задовго до того, і воно було правильним. Відмовив механізм, що мав його виконати.
Вирішувати на борту
- Усе з дедлайном коротшим за похід до людини й назад: обхід перешкод, стабілізація, скасування посадки.
- Усе, що тримає апарат у безпеці: межі, обмеження висоти, запас енергії, рішення про повернення.
- Усе оборотне й дешеве в разі помилки: підправити маршрут, куди дивитися камерою.
- Навігація, що мусить тривати без звʼязку, — а це на практиці більша частина польоту.
Утримати й спитати
- Усе з наслідками й незворотне, де помилку не виправити повторною спробою.
- Усе, що спирається на класифікацію, яку апарат не може перевірити: ідентичність, намір, чи є там людина.
- Усе поза межами, дозволеними оператором, включно з продовженням місії, що виглядає нешкідливим.
- Усе, про що апарат не зможе потім доповісти: незаписану автономну дію неможливо розібрати.
У правого стовпця є наслідок, який часто пропускають: щоб утримати рішення, апарат мусить уміти безпечно чекати. Система, яка має спитати людину, але не може зависнути, не може зберегти запит і не може розумно поводитися, якщо відповіді не буде, не реалізувала вимогу — вона її записала. Чекання — це здатність із власним бюджетом енергії, власним тайм-аутом і власним фейлсейфом. Бік оператора в утриманому рішенні — що йому показують, скільки часу він має, як записують відмову — належить сторінці про C2Command and control — системи командування й управлінняПЗ, що зводить доповіді з багатьох джерел в одну спільну картину, за якою можна діяти, і несе рішення, ухвалені за нею. Його центральна робота — кореляція: вирішити, чи описують дві доповіді одну річ чи дві, — і тому воно складніше за мапу, якою його зазвичай малюють.Докладніше в статті →Усі терміни. Бік апарата — цій.
Симуляція — це тестове середовище, а не зручність
Кожен важливий тут випадок збою — це те, чого не відтвориш на справжньому апараті: утрата позиції на двохстах метрах, зупинка мотора в розвороті, зникнення звʼязку на дальньому кінці маршруту, батарея з хибним показанням. Літати такі тести дорого, небезпечно й повільно, а ті, які пережив, не повториш однаково. Продакшн-трафіку, з якого можна вчитися, теж немає. Зворотний звʼязок, який вебкоманда отримує з живої телеметрії, приходить сюди файлом логу після посадки — якщо апарат сів. Тож головним тестовим середовищем є симулятор, і зрілість симуляційного стенду добре описує зрілість команди.
| Ярус | Що справжнє | Що змодельоване | Що знаходить лише він |
|---|---|---|---|
| Software in the loop | Прошивка автопілота, скомпільована для робочої станції | Планер, сенсори, світ і звʼязок — у Gazebo чи у власній фізичній моделі ArduPilot | Помилки логіки, поведінку фейлсейфів, послідовність місії — досить швидко, щоб пролітати сотні місій на мердж |
| Hardware in the loop | Польотна плата з її прошивкою | Фізика й сенсорні входи, які подають на плату | Таймінг, навантаження CPU, баги драйверів — усе, що залежить від справжнього процесора |
| Льотні випробування | Усе | Нічого | Вібрацію, поширення радіосигналу, погоду — те, чого не відтворює жодна модель |
Дві практики перетворюють цю драбину на регресійний набір, а не на три місця, де люди іноді щось тестують. Збої — це скриптовані кейси, а не експерименти, — рядок 6.3, — тож обірвати звʼязок на дальній точці маршруту — це тест, що запускається на кожен мердж і падає на конкретному рядку. І кожен політний лог — вхідні дані тесту, рядок 6.4. Збій, побачений у повітрі раз, відтворюють у симуляції, і він лишається в наборі назавжди — це те саме правило, що й у будь-якому регресійному наборі, і саме воно робить набір кращим щоразу, коли щось іде не так. Збій міток часу в Ingenuity нижче — саме такий, який скриптований кейс ловить дешево: зсуньте мітки часу одного входу й перевірте, що оцінювач це помічає.
Ритм релізів випливає з усього цього, і саме ця частина вебпрактики переноситься найгірше. Розгортати кілька разів на день і лагодити вперед — це припущення, що наступне виправлення дійде до працюючої системи за хвилини. Апарат у полі може бути недосяжним тижнями, тож версія, яку він несе, мусить бути безпечною сама по собі тижнями. Релізів тут менше, їх розгортають поетапно по флоту, підтверджують на кожному апараті — рядок 5.4 — і їх можна відкотити на самому апараті.
Сім аварій — і рядок, що покриває кожну
Кожна з них має публічне розслідування чи задокументований опис. У більшості апарат зробив саме те, що йому сказали ПЗ і конфігурація, а розслідування знайшло причину в проєктному рішенні, а не в невдачі. Жодна не стосується логіки місії — тієї частини, яку демонструє кожна команда.
| Випадок | Що сталося | Рядок, що це покриває |
|---|---|---|
| Predator B, Ногалес, Аризона, квітень 2006 | Пульт наземної станції завис, і пілот передав керування на другий, ідентичний пульт, не вирівнявши важелі. На тому пульті важіль керування двигуном стояв у положенні, що перекриває паливний клапан, і двигун зупинився. На батареї апарат вимкнув супутниковий канал і транспондер, тож диспетчери його втратили, а маршрут на випадок утрати звʼязку був петлею, що могла закінчитися лише падінням десь на ній. Девʼять зависань пульта за три місяці до того лишилися нерозібраними. | 5.5 і 3.3. Рекомендації NTSB вказують на обидва: передачу керування, яку система відхиляє, поки важелі розходяться, окремі тривоги для критичних збоїв і маршрут утрати звʼязку, що закінчується в безпечному місці. |
| Світлове шоу, Гонконг, жовтень 2018 | Під час шоу над гаванню 46 зі 100 дронів утратили супутникове позиціонування через завади й упали у Вікторія-Гарбор; збитки оцінили щонайменше в HK$1 млн. Вони мали функцію повернення до точки зльоту, і організатор сказав, що завади не дали їй спрацювати: їй була потрібна саме та позиція, яку вони щойно втратили. | 4.2. Повернення, що залежить від сигналу, який зник, — це не поведінка на випадок утрати цього сигналу. |
| Matternet M2, Цюрих, травень 2019 | Дрон медичної доставки виявив збій приблизно за дві хвилини після зльоту й, як і було задумано, увімкнув систему припинення польоту. Парашут розкрився, але його єдиний трос зачепився за гостру деталь дрона й обірвався, і дрон упав у лісистій місцевості. Слідчі також зʼясували, що попереджувальний сигнал люди поблизу не почули. | 2.4. Рішення припинити політ було правильним; механізм, що мав його виконати, відмовив у найслабшому місці. Swiss Post перейшла на два посилені троси й гучніший сигнал. |
| Ingenuity, політ 6, Марс, травень 2021 | Один кадр навігаційної камери загубився, і кожен наступний надходив із хибною міткою часу. Оцінювач раз у раз виправляв помилки, яких не було, і гелікоптер розгойдувало більш ніж на 20 градусів по крену й тангажу. Він сів приблизно за 5 м від цілі, бо конструкція витримувала помилки таймінгу й на фінальному зниженні переставала використовувати кадри камери. | 4.4 — і успіх для 2.1: запасний варіант для фінального зниження спроєктували ще до того, як щось пішло не так. |
| Ingenuity, політ 72, Марс, січень 2024 | Над одноманітними піщаними брижами, приблизно за 20 секунд після зльоту, навігаційна система не змогла знайти достатньо деталей поверхні, щоб за ними стежити. Оцінка швидкості пішла хибно, гелікоптер жорстко торкнувся ґрунту з великою горизонтальною швидкістю, і всі чотири лопаті зламалися. Це був останній політ. | 4.1. Оцінка, якій бракує даних, має вміти про це сказати, і це має змінювати те, що робить апарат. |
| Amazon MK30, Орегон, грудень 2024 | Два дрони доставки на випробуваннях з інтервалом приблизно в чотири хвилини вимкнули пропелери в польоті під легким дощем. За оглядом матеріалів NTSB від Bloomberg, оновлення ПЗ зробило лідар чутливішим до дощу, а ПЗ діяло за хибно зчитаною висотою. Amazon призупинила доставки в січні 2025. | 4.3 і 6.3. Одному сенсору дозволили завершити політ на власне слово, а змінена поведінка сенсора — саме те, що скриптований кейс збою має перевірити, перш ніж оновлення полетить. |
| Шоу дронів, Орландо, грудень 2024 | Помилки конфігурації — центр шоу, його курс, неоднакові оновлення на різних апаратах і нестандартні налаштування геозони — перемістили шоу ближче до глядачів, ніж дозволяв власний стандарт оператора. Дрони зіткнулися й упали на глядачів, а семирічний хлопчик отримав тяжкі травми. Остаточний звіт NTSB встановив, що через відсутність надійної перехресної перевірки жодну з цих помилок не виявили. | 5.2 і 5.4. Флот із пʼятисот апаратів — це пʼятсот конфігурацій, і ніщо не порівняло їх із переглянутою. |
Де це вироджується
Чесне обмеження всього на цій сторінці в тому, що фейлсейф відповідає лише на ті збої, які хтось уявив. Кожен із семи випадків був, якщо дивитися назад, умовою, під яку ніхто не написав рядка: важіль із двома значеннями, дощ на лідарі, пісок, на якому нічого не видно. Симуляція відтворює збої, які ви заскриптували, а небезпечний саме той, який нікому не спало на думку заскриптувати. Це не аргумент проти драбини. Це аргумент за те, щоб зберігати кожен політний лог, відтворювати його й ставитися до кожної несподіванки як до нового рядка, а не як до невдачі.
- Таблиця фейлсейфів, що існує як документ і жодного разу не виконувалася — ні в симуляції, ні деінде.
- Межа, яку забезпечує наземна станція, — компонент, якого гарантовано не буде, коли це важить.
- «Повертатися на 30%», скопійоване з форуму в кожен планер, хай яка в нього дальність і хай який вітер.
- Параметри, змінені на польовому ноутбуці, які так і не повернулися в систему контролю версій.
- Набір симуляцій, що сотні разів пролітає щасливу місію й не вкидає жодного збою.
- Політний лог, який зберігають лише для розбору інцидентів і ніколи не відтворюють як тест.
- Вимога «людина в контурі» для рішення, на яке апарат не може чекати.
- Демонстрація в гарну погоду, на повній батареї, із сильним звʼязком і автором поруч, подана як доказ бодай чогось.
- Процес релізів, скопійований із веброзробки — розгортати часто, лагодити вперед, — для апарата, що може бути недосяжним тижнями.
Коли це застосовувати
Застосовуйте, коли
- Як огляд готовності до польоту: двадцять пʼять рядків угорі, з посиланням на номер.
- Коли вирішуєте, що належить політному контролеру, автопілоту й бортовому компʼютеру: вирішує дедлайн, а не мова.
- Коли пишете чи переглядаєте конфігурацію фейлсейфів або тригер повернення — частину специфікації, що вирішує придатність до польоту.
- Коли будуєте тестове середовище: спершу симуляція, далі hardware in the loop, повітря — востаннє й рідко.
Уникайте, коли
- Як джерело деталей про сприйняття чи моделі: це належить компʼютерному зору, і ця сторінка свідомо туди не заходить.
- Як настанову щодо спільної оперативної картини чи інтерфейсу оператора — це сторінка C2; ця закінчується апаратом і його каналом.
- Як заміну документації самого автопілота: назви параметрів і точна поведінка для кожної версії живуть там.
- Для системи, де людина справді завжди присутня й реагує: тутешні обмеження були б зайвим тягарем.
Джерела й метод
На чому стоїть ця стаття
- 9 джерел
- 5 задокументованих збоїв
- Перевірено 13 жовтня 2026 р.
Збої, на яких вчиться стаття
аварії за рядками чекліста- Звіт регулятораNTSB — Safety Recommendations A-07-70 through -86 (CBP Predator B, Nogales) (відкривається в новій вкладці)National Transportation Safety Board · 24.10.2007
- СтаттяHK$1 million in damage caused by GPS jamming that caused 46 drones to plummet during Hong Kong show (відкривається в новій вкладці)South China Morning Post · 10.2018
- Звіт регулятораSTSB — Interim report: Matternet M2, SUI-9903, Zurich, 9 May 2019Swiss Transportation Safety Investigation Board · 17.06.2019
- ПостмортемHåvard Grip — Surviving an In-Flight Anomaly: What Happened on Ingenuity’s Sixth Flight (відкривається в новій вкладці)NASA · 27.05.2021
- ПостмортемNASA Performs First Aircraft Accident Investigation on Another World (відкривається в новій вкладці)NASA Jet Propulsion Laboratory · 11.12.2024
Практики й походження термінів
польотний стек, failsafe, MAVLink і симуляція- ДокументаціяArduPilot — Copter Failsafe (відкривається в новій вкладці)ArduPilot
- ДокументаціяPX4 — Safety (Failsafe) Configuration (відкривається в новій вкладці)PX4 Guide
- СтандартMAVLink Developer Guide (відкривається в новій вкладці)MAVLink
- ДокументаціяArduPilot — SITL Simulator (Software in the Loop) (відкривається в новій вкладці)ArduPilot
Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.
Було корисно?
Поділіться з тим, хто працює над тією ж задачею.