Failsafe: что делает аппарат при отказах

Хороший автопилот заранее знает, что делать при беде; разберём типовые отказы и реакции на них.

Failsafe — заранее заданная безопасная реакция автопилота на отказ или опасное событие (потерю связи, разряд батареи, отказ датчика).

Типовые отказы и реакции

  • Потеря радиосвязи. Аппарат не должен «застыть» в неизвестности — обычно включается RTL (return to launch): автопилот сам ведёт его к точке старта и сажает.
  • Низкое напряжение батареи. Сначала предупреждение, при критическом пороге — принудительный возврат или посадка на месте.
  • Отказ GPS. Без координат автономный полёт невозможен; аппарат переходит в режим удержания по другим датчикам или плавно снижается.
  • Выход за геозону. На границе разрешённой области (geofence) автопилот останавливает аппарат или возвращает внутрь.

Простая логика приоритетов

Несколько условий могут сработать разом, и нужно выбрать самое срочное. Закодируем приоритеты: критическая батарея важнее потери связи.

def decide(link_lost, battery_pct, geofence_breach):
    if battery_pct < 10:
        return "КРИТ. БАТАРЕЯ: посадка на месте"
    if geofence_breach:
        return "ГЕОЗОНА: возврат внутрь"
    if link_lost:
        return "НЕТ СВЯЗИ: возврат домой (RTL)"
    if battery_pct < 25:
        return "НИЗКАЯ БАТАРЕЯ: возврат домой"
    return "НОРМА: продолжать миссию"

cases = [
    (False, 80, False),
    (True, 80, False),
    (False, 20, False),
    (True, 8, False),
    (False, 80, True),
]
for c in cases:
    print(c, "->", decide(*c))

Вывод:

(False, 80, False) -> НОРМА: продолжать миссию
(True, 80, False) -> НЕТ СВЯЗИ: возврат домой (RTL)
(False, 20, False) -> НИЗКАЯ БАТАРЕЯ: возврат домой
(True, 8, False) -> КРИТ. БАТАРЕЯ: посадка на месте
(False, 80, True) -> ГЕОЗОНА: возврат внутрь

Обратите внимание на четвёртый случай: связь потеряна И батарея критична — выбран самый срочный вариант (посадка на месте), потому что лететь домой энергии может не хватить. Порядок проверок и есть приоритеты.

Как работает под капотом

Failsafe — это конечный автомат: набор состояний (миссия, RTL, посадка, удержание) и переходов по событиям. Настраивается заранее на земле: оператор задаёт пороги и действия. Грамотно настроенный failsafe — разница между «аппарат сам вернулся» и «аппарат улетел в неизвестность».

Частые ошибки

  • Не настроить failsafe вовсе — при потере связи поведение непредсказуемо.
  • Ставить RTL при критической батарее, когда домой уже не дотянуть, — иногда правильнее немедленная посадка.
  • Задать точку «дома» неверно (не там, где взлетели) — аппарат вернётся не туда.

Итог

  • Failsafe — заданная заранее реакция на отказы (связь, батарея, GPS, геозона).
  • Это автомат с приоритетами: самое срочное событие побеждает.
  • Настраивается на земле; от него зависит, вернётся ли аппарат.
Проверьте себя
1. Что обычно делает автопилот при потере радиосвязи (если батарея в норме)?
AОтключает моторы
BВыполняет RTL — автоматически возвращается к точке старта и садится
CПродолжает лететь по прямой вечно
DПередаёт управление пилоту голосом
2. Почему при одновременной потере связи и критической батарее иногда выбирают посадку на месте, а не RTL?
AТак быстрее
BЭнергии может не хватить, чтобы долететь домой; безопаснее сесть немедленно
CRTL запрещён правилами
DПосадка на месте красивее