Автовисение: как это делают настоящие сборщики
ПИД-регуляторы, антинакопление и поправка на гравитацию — по системам висения, которые сообщество реально качает.
По описаниям авторов кораблей в Мастерской Steam
Держать высоту руками — значит вечно играть тягой и всё равно уплывать. Все серьёзные корабли в этой библиотеке решают задачу одинаково: ПИД-регулятором, подключённым к подъёмным двигателям. Гайд собран по авторам, которые эти системы опубликовали, с их же формулировками там, где точнее не скажешь.
Что делают три буквы
ПИД — пропорциональная, интегральная и дифференциальная составляющие. Регулятору подают команду (нужную вертикальную скорость) и измерение (фактическую), а он выдаёт тягу, которая сводит разницу к нулю.
- П реагирует на текущее отклонение. Делает основную работу.
- Д реагирует на скорость изменения ошибки. Гасит раскачку.
- И накапливает ошибку со временем. Убирает последний упрямый сдвиг.
Настраивать по порядку, а не всё сразу
Порядок важен, и все опубликованные системы в нём сходятся. Обнулите KI и KD и начните с одного KP:
- KP. Поднимайте, пока корабль не начнёт вытаскивать себя из свободного падения при команде на нуле. «Слишком большое значение вызовет сильные колебания».
- KD. Поднимайте, чтобы «уменьшить размах колебаний, пока не получится плавно выйти на нулевую вертикальную скорость» в том же тесте с падением.
- KI. Добавляйте по чуть-чуть в последнюю очередь, чтобы «повысить точность соответствия команды фактической скорости».
Как читать раскачку. Частые мелкие колебания — KP завышен, снижайте. Медленный увод, который никак не сходится, — это как раз работа KI.
Антинакопление: почему И-составляющая мешает
Вот на чём спотыкаются. Пока корабль ещё выправляется, интегратор продолжает накапливать — «накручивается», — а потом мешает вам управлять, когда вы уже дошли до цели. Автор самого скачиваемого ПИДа пишет, что интегратор «начнёт бороться с вашим управлением, как только вы достигли CMD = MEAS».
Лечение простое и его стоит перенять: следить за модулем ошибки и сбрасывать накопитель при превышении порога. В той системе «когда значение переваливает за 100, накопитель сбрасывается» — так И-составляющая по-прежнему помогает довести до цели, но без перелёта.
Поправка на гравитацию — самая полезная настройка
Висящему кораблю нужна постоянная тяга просто чтобы не падать. Заставлять ПИД каждый раз заново это нащупывать — пустая работа. Измерьте один раз и отдайте готовым:
«Измерьте выход CMD по индикатору в режиме висения и подставьте это значение как grav bias — управление вертикальной скоростью в гравитации станет быстрее и стабильнее».
Значение зависит от массы корабля и гравитации планеты, то есть оно своё для каждой пары. Поэтому система, настроенная на Земле, на Луне работать не будет, пока её не перенастроят.
Расположение двигателей меняет настройку
- Тяга в обе стороны — хороший случай. Авторы советуют «ставить двигатели в обоих направлениях, в идеале равной тяги, чтобы использовать возможности полностью».
- Только подъём, а вниз за счёт гравитации? Тогда «рекомендуется выставить Ki в ноль» — вниз у интегратора власти нет, и он только навредит.
- Разреженная атмосфера? В одной из систем есть ограничитель 1–100, который срезает максимальный выход двигателей, — полезно «на планетах с низкой атмосферой».
Задержка — часть схемы
Каждая деталь в цепочке сигнала добавляет такт, а регулятор, реагирующий с опозданием, раскачивается при любой настройке. Совет автора адаптивного висения — держать контур коротким: «подключайте двигатели, измеритель скорости и дальномер/высотомер напрямую к беспроводным передатчикам, добивайтесь минимальной задержки».
С чего начать
Собирать с нуля не обязательно. Эти системы выложены готовыми блоками: вставьте башню в свой корабль, подключите к подъёмным двигателям и высотомеру, потом настройте четыре константы. Один из авторов описывает порядок прямо: «вставьте башню ПИДа в корабль, подключите по примерам, остальное удалите или отправьте в переработку».
Системы, на которые опирается гайд, по распространённости:
- Compact PID with AntiWindup ↗ — самая подробная и самая скачиваемая
- AutoHover PID w/ AntiWindup ↗ — сжатая версия с цветными примерами подключения
- AutoHover, easy PID with colour coding ↗ — учебная: у каждой составляющей свой цвет
- Ultimate PID, any gravity ↗ — каскадная схема, набирающая гравитацию прямо в движении
Если что-то пригодилось — поставьте автору палец вверх в Мастерской. За этим стоят чьи-то выходные.