Перейти к содержимому

Статья

ArduPilot Lua Scripting: безопасный сценарий от стенда до полёта

Как вводить Lua-скрипт в ArduPilot: определить полномочия, ограничить ресурсы, проверять входы, журналировать решения и иметь быстрый путь отключения.

Редакция WARPfly2 мин чтения0 просмотров

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

ArduPilot Lua Scripting: безопасный сценарий от стенда до полёта — обложка WARPfly
ArduPilot Lua Scripting: безопасный сценарий от стенда до полёта — обложка WARPfly. Оригинальная графика WARPfly.

Определи полномочия

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

ArduPilot Lua Scripting: безопасный сценарий от стенда до полёта — карта материала
ArduPilot Lua Scripting: безопасный сценарий от стенда до полёта — карта материала. Оригинальная графика WARPfly.

Подготовь среду

Проверь поддержку scripting установленной firmware, файловую систему и структуру SD-карты по официальному руководству. Зафиксируй версию ArduPilot, параметры scripting и хэш файла. Используй документированный API своей версии: пример из другой ветки может ссылаться на отсутствующий метод.

Пиши кооперативно

Функция должна быстро вернуть план следующего запуска, а не занимать процессор длительным циклом. Ограничивай выделение памяти, размер данных и частоту сообщений. Проверяй тип, диапазон и свежесть входов. Обрабатывай ошибку явно и отправляй диагностическое сообщение с контекстом, не раскрывая секретные данные.

Лестница тестов

  1. Статический анализ и проверка чистых функций.
  2. SITL с нормальными и граничными входами.
  3. Перезапуск, отсутствующий файл, ошибка и исчерпание допустимого времени.
  4. Аппаратный стенд без пропеллеров и с наблюдением сообщений.
  5. Короткий полёт, где скрипт сначала только наблюдает.
  6. Ограниченное действие с ручной отменой.

Сделай откат операцией

Храни рабочую конфигурацию без скрипта и процедуру отключения, доступную без редактирования кода на площадке. Не полагайся только на удаление SD-карты, если её используют другие функции. После обновления ArduPilot заново выполняй SITL и стендовую приёмку.

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

Критерий допуска

Скрипт допускается к эксплуатации после успешного перезапуска, обработки отсутствующих данных, проверки таймаутов и ручной отмены. Отдельно подтверди, что его удаление или аварийное завершение не изменяет базовое управление. Результаты SITL, стенда и первого полёта сохрани рядом с конкретной версией файла и параметров.

Была ли статья полезна?

#ArduPilot Lua#scripting#AP Scripting#safety#SITL#rollback

Примените знания на практике

Подберите совместимые комплектующие или изучите готовые сборки пилотов.