Lua расширяет ArduPilot без пересборки прошивки, но выполняется внутри системы реального времени с ограниченными ресурсами. Скрипт должен иметь узкую задачу, предсказуемое время выполнения и безопасное поведение при ошибке. Критичные базовые функции лучше оставлять штатному автопилоту.

Определи полномочия
Запиши, какие параметры, сообщения, сервовыходы или команды может менять скрипт. Всё остальное считай запрещённым. Отдельно укажи состояние при загрузке, disarm, потере датчика и исключении. Скрипт, который не может выполнить задачу, должен перейти в безопасное состояние, а не продолжать с устаревшими данными.

Подготовь среду
Проверь поддержку scripting установленной firmware, файловую систему и структуру SD-карты по официальному руководству. Зафиксируй версию ArduPilot, параметры scripting и хэш файла. Используй документированный API своей версии: пример из другой ветки может ссылаться на отсутствующий метод.
Пиши кооперативно
Функция должна быстро вернуть план следующего запуска, а не занимать процессор длительным циклом. Ограничивай выделение памяти, размер данных и частоту сообщений. Проверяй тип, диапазон и свежесть входов. Обрабатывай ошибку явно и отправляй диагностическое сообщение с контекстом, не раскрывая секретные данные.
Лестница тестов
- Статический анализ и проверка чистых функций.
- SITL с нормальными и граничными входами.
- Перезапуск, отсутствующий файл, ошибка и исчерпание допустимого времени.
- Аппаратный стенд без пропеллеров и с наблюдением сообщений.
- Короткий полёт, где скрипт сначала только наблюдает.
- Ограниченное действие с ручной отменой.
Сделай откат операцией
Храни рабочую конфигурацию без скрипта и процедуру отключения, доступную без редактирования кода на площадке. Не полагайся только на удаление SD-карты, если её используют другие функции. После обновления ArduPilot заново выполняй SITL и стендовую приёмку.
В логе должны быть версия скрипта, ключевые входы, причина решения и фактический результат. Если скрипт управляет внешним устройством, контролируй подтверждение, таймаут и повтор. Профессиональная автоматизация отличается не сложностью кода, а доказуемым безопасным отказом.
Критерий допуска
Скрипт допускается к эксплуатации после успешного перезапуска, обработки отсутствующих данных, проверки таймаутов и ручной отмены. Отдельно подтверди, что его удаление или аварийное завершение не изменяет базовое управление. Результаты SITL, стенда и первого полёта сохрани рядом с конкретной версией файла и параметров.