ArduPilot SITL запускает ту же логику автопилота как программу и соединяет её с моделью среды. MAVProxy предоставляет консоль управления и маршрутизацию. Вместе они позволяют превратить миссию, параметры и failsafe в повторяемый тест, который сохраняется рядом с конфигурацией.

Сделай запуск идентифицируемым
Зафиксируй ветку или tag ArduPilot, тип аппарата и frame, модель симуляции, стартовую локацию и дополнительные параметры. Команда запуска должна воспроизводиться на чистом окружении. Не сравнивай два теста, если между ними незаметно изменился default parameter set.

Проверь базовый сценарий
Через MAVProxy дождись готовности EKF, загрузи короткую миссию, выполни ARM, взлёт, два waypoint и безопасное завершение. Сохрани консоль, DataFlash и параметры. Сначала добейся повторяемого штатного результата, затем вводи отказы.
Проектируй отказ как эксперимент
- событие: какая связь, датчик или ресурс меняется;
- момент: режим, участок миссии, высота и запас энергии;
- ожидание: конкретный переход режима и траектория;
- критерий: допустимое время реакции и итоговое состояние;
- восстановление: что происходит при возврате источника.
Не отключай несколько источников одновременно в первом тесте. Например, потеря GCS, RC и GPS создаёт неоднозначность при выборе причины перехода.
Используй MAVProxy наблюдаемо
Записывай команды, сообщения режима, EKF и failsafe. Подключение второй GCS через routing не должно менять сам сценарий. Для автоматизации добавь явные ожидания, таймауты и проверку состояния вместо фиксированных пауз: медленный запуск не должен давать ложный провал.
Сверь с реальностью
Симуляция не воспроизводит плохой разъём, вибрацию компаса или фактическую задержку привода без специальной модели. После SITL сделай Hardware In The Loop или безопасный стенд, затем короткий лётный тест. Не имитируй опасный отказ на реальном аппарате, если его можно подтвердить по безопасной части цепочки.
Храни mission file, parameter diff, сценарий, ожидаемый результат и хэши логов. Повторяй набор после обновления firmware — так SITL защищает от регрессий, а не просто демонстрирует Auto.
Сделай тест самопроверяемым
Автоматический сценарий должен завершаться явным результатом и кодом ошибки, а не требовать визуально смотреть карту. Проверяй последовательность режимов, пределы высоты и расстояния, причину failsafe и финальное состояние. Сохраняй случайное seed модели среды, если оно влияет на результат, и отделяй нестабильность теста от дефекта автопилота.