Настройка и проверка управления
Результат: параметры приняты по измеримым критериям, а не по одному удачному движению. Нужны проверенные калибровка, путь первого движения, профили и модель гравитации, если она используется.
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. Менять параметры в установленном порядке
- Baseline: исходные движения и удержания без кандидатов; подтвердить повторяемость и отсутствие непонятных аварий.
- Gravity: проверить модель в разных позах и направлениях, минимум на двух скоростях. Этап собирает данные, не меняя коэффициенты.
- Velocity: сравнить направленные коэффициенты feedforward по установившемуся движению.
- PID: сравнить P, D и фильтрацию на разных нагрузках; удлинить удержания для обнаружения колебаний.
- Integral: включать только при сохраняющейся ошибке; проверять вместе коэффициент и предел, включая малые реверсы.
- Motion: при фиксированных коэффициентах подобрать ускорение и время нарастания.
- Совместное движение: повторить путь всей рукой — изолированная настройка сустава не подтверждает поведение связанных звеньев.
- 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.