Перейти к статье

Настройка и проверка управления

Проверено 2026-11-01

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

1. Подготовить исходный план

macOS / Linux
cp tools/tuning/example.json tools/tuning/plan.local.json
cp tools/tuning/controller.example.json tools/tuning/controller.local.json
Windows PowerShell
Copy-Item tools/tuning/example.json tools/tuning/plan.local.json
Copy-Item tools/tuning/controller.example.json tools/tuning/controller.local.json

В tools/tuning/plan.local.json измените config на controller.local.json, stage на baseline, а candidates на пустой массив []. Исходный пример содержит PID-кандидата: не запускайте его неизменённым как исходное измерение.

В контроллере укажите порт, профили и все поддерживающие моторы в joints как {"followerId": ID}. Удалите durationMs, если переносили его из другого сценария: продолжительность серии задаёт batch.maxDurationMs.

Поле плана Что выбрать перед запуском
probeId Мотор, который будет перемещаться
poses.screen, poses.validate Разные пары допустимых позиций для сравнения и проверки; не копируйте примерные 2000/2050 без проверки физических положений
motion.speeds Скорости для проверки текущей нагрузки
limits Допустимые ошибка слежения и движение опорных суставов, температура, напряжение
acceptance Требования к ошибке, перерегулированию, установлению и насыщению
batch Повторы, длительность удержаний и общий бюджет серии

Позиции выражены в скорректированных отсчётах энкодера. После изменения смещений прежние числа могут обозначать другие физические положения. Поддерживающие суставы удерживают существующие цели: автоматической перестановки всей руки в исходную позу нет.

2. Разделять три команды

Проверка файлов и оценки нагрузки на шину, без подключения:

macOS / Linux
npm run tune -- inspect tools/tuning/plan.local.json
Windows PowerShell
npm.cmd run tune -- inspect tools/tuning/plan.local.json

Чтение прошивки, калибровки, пределов и профилей без изменения моторов:

macOS / Linux
npm run tune -- preflight tools/tuning/plan.local.json
Windows PowerShell
npm.cmd run tune -- preflight tools/tuning/plan.local.json

Запуск серии, с движением:

macOS / Linux
npm run tune -- run tools/tuning/plan.local.json
Windows PowerShell
npm.cmd run tune -- run tools/tuning/plan.local.json

Не переходите к run, если preflight показал неожиданные обрезанные цели, ошибку модели или схлопывание пары в одну позицию. В серии двигается probeId; остальные моторы должны сохранять проверенную поддерживающую позу.

3. Менять параметры в установленном порядке

  1. Baseline: исходные движения и удержания без кандидатов; подтвердить повторяемость и отсутствие непонятных аварий.
  2. Gravity: проверить модель в разных позах и направлениях, минимум на двух скоростях. Этап собирает данные, не меняя коэффициенты.
  3. Velocity: сравнить направленные коэффициенты feedforward по установившемуся движению.
  4. PID: сравнить P, D и фильтрацию на разных нагрузках; удлинить удержания для обнаружения колебаний.
  5. Integral: включать только при сохраняющейся ошибке; проверять вместе коэффициент и предел, включая малые реверсы.
  6. Motion: при фиксированных коэффициентах подобрать ускорение и время нарастания.
  7. Совместное движение: повторить путь всей рукой — изолированная настройка сустава не подтверждает поведение связанных звеньев.
  8. Validation: зафиксировать настройки и повторить проверку на требуемых скоростях, ускорениях, нагрузках и длительных удержаниях.

Этап ограничивает допустимые поля кандидата. Baseline, gravity и validation не меняют параметры. Ограничения общего выхода остаются явно заданными в контроллере; они не подбираются автоматически.

4. Читать результат

В tools/tuning/logs/<run>/ сохраняются events.ndjson и summary.json. Проверяйте статус завершения, исходные измерения до и после серии, независимые проверочные пары и каждое условие приёмки. Неполная или неудачная серия не даёт рекомендации. Дрейф исходного состояния может сделать результат неопределённым.

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

Обычное завершение восстанавливает настроенный baseline и оставляет удержание. Ctrl+C в серии настройки пытается выключить удержание, в отличие от Extension replay. Поддержите механизм до прерывания; убитый процесс или разорванная шина могут оставить последнее удержание.

5. Сохранить принятые настройки

Победитель серии не устанавливается автоматически. После анализа внесите принятые значения в локальные профили и сохраните вместе с калибровкой, моделью, описанием нагрузки/установки и проверочными журналами. Команда ниже экспортирует контроллер именованных поз из первого запуска: обновите в нём профили до принятых значений. Для использования apply сначала добавьте в tools/poses/controller.local.json свойство joints верхнего уровня, заменив ID на реальные:

"joints": [
  {"followerId": 1}, {"followerId": 2}, {"followerId": 3},
  {"followerId": 4}, {"followerId": 5}, {"followerId": 6}
]

Это фрагмент свойства, а не полный JSON-файл: отделите его запятой от соседнего свойства. Экспорт в новый каталог не подключается к моторам:

macOS / Linux
npm run tune -- export tools/poses/controller.local.json accepted-controller
Windows PowerShell
npm.cmd run tune -- export tools/poses/controller.local.json accepted-controller

Используйте только ещё не существующий каталог. Экспорт не подтверждает пригодность настроек. Чтобы применить экспортированный контроллер без replay, в нём должны быть joints для всех follower; следующая команда меняет управление и включает удержание:

macOS / Linux
npm run tune -- apply accepted-controller/controller.json
Windows PowerShell
npm.cmd run tune -- apply accepted-controller/controller.json

Смена профиля может кратковременно отпустить мотор. Если нужен обычный replay, отдельно выполнять apply не требуется: replay применяет конфигурацию сам.


Главная раздела · Версия исходников: a995f77. Extension 9.0.