Телеуправление и повтор сеанса
Результат: движение ведущей руки управляет ведомой через проверенное отображение суставов; сохранённый сеанс можно повторить без ведущей руки.
Подготовить две шины
Нужны отдельные последовательные адаптеры для leader и follower, 1–6 пар суставов, сохранённые непустые пределы, обычный позиционный режим и делитель 1. Ведущая рука может иметь штатную прошивку; ведомой нужна Extension v9.
На каждой шине должны находиться ровно её настроенные ID. Удержание ведущей руки должно быть выключено заранее: инструмент не пишет в leader. Настройки follower должны быть заблокированы, без отложенной Legacy-записи. Профили и, при необходимости, модель гравитации подготовьте по руководству конфигурации.
Настроить файл
macOS / Linux
cp tools/teleoperation/example.json tools/teleoperation/controller.local.json
Windows PowerShell
Copy-Item tools/teleoperation/example.json tools/teleoperation/controller.local.json
Укажите разные leaderPort и followerPort, скорость и все пары joints. Исходный пример содержит одну пару — расширьте его под фактическую руку. Для каждого follower добавьте профиль; пути считаются от файла контроллера.
{"leaderId": 1, "followerId": 1, "mapping": "angle", "direction": 1}
Это одна запись массива joints, не полный файл. Режимы отображения:
| Поле | Значение |
|---|---|
mapping: "angle" |
Сохраняет смещение в отсчётах относительно середины сохранённых пределов; предполагает совместимые масштабы энкодеров и передачи |
mapping: "range" |
Масштабирует каждую половину хода leader в соответствующую половину follower; подходит, например, для разных захватов |
direction |
1 или −1 |
leaderMiddle, followerMiddle |
Необязательные центры только для range, строго внутри соответствующих пределов |
Середина пределов может отличаться от опоры 2048. Поэтому совпадающая поза калибровки не гарантирует совпадающие цели при несимметричных пределах. Цели ограничиваются сохранённым диапазоном follower.
Проверить и запустить
Команда читает обе шины и показывает отображение без изменения настроек:
macOS / Linux
npm run teleoperate -- tools/teleoperation/controller.local.json
Windows PowerShell
npm.cmd run teleoperate -- tools/teleoperation/controller.local.json
Сравните показанные позиции и цели с реальным положением, проверьте направление каждой пары. Поддержите оба механизма и оставьте свободное место для подхода follower к позе leader. Только после этого включайте управление:
macOS / Linux
npm run teleoperate -- tools/teleoperation/controller.local.json --run
Windows PowerShell
npm.cmd run teleoperate -- tools/teleoperation/controller.local.json --run
Запрошенная частота hz допускает 1–60 Гц, по умолчанию 60; фактическая частота зависит от шины, компьютера, обратной связи и журналирования. Пропущенные периоды не догоняются пачкой команд. Не запускайте параллельно другой контроллер этой шины.
Проверка: нет ошибок устаревших данных и обратной связи, направление и ограничение хода ожидаемы. Обычное завершение и Ctrl+C сохраняют удержание. С моделью гравитации завершение ожидает покоя; без неё процесс может завершиться, пока мотор продолжает движение к последней цели. Процесс не переводит руку автоматически в безопасную парковочную позу.
Повторить запись без leader
Журналы сохраняются в logs/motion/. Выберите нужный SESSION.ndjson, содержащий preflight с пределами и отображением leader и последовательность команд. В текущем контроллере должно остаться то же отображение суставов. Для повтора подключается только follower:
macOS / Linux
npm run replay -- tools/teleoperation/controller.local.json SESSION.ndjson
Windows PowerShell
npm.cmd run replay -- tools/teleoperation/controller.local.json SESSION.ndjson
macOS / Linux
npm run replay -- tools/teleoperation/controller.local.json SESSION.ndjson --run
Windows PowerShell
npm.cmd run replay -- tools/teleoperation/controller.local.json SESSION.ndjson --run
Первая команда проверяет; вторая двигает. Используются записанные положения leader, его записанные пределы и текущие пределы follower, профили и модель гравитации. Старые коэффициенты и воздействия не воспроизводятся. Паузы записи сохраняются; задержки обработки растягивают время вместо ускоренной выдачи пропущенных кадров.
Запись намерения отправить команду не доказывает, что мотор её принял. При анализе неудачного сеанса сверяйте команды, фактическую отправку и обратную связь.
Главная раздела · Версия исходников: a995f77. Extension 9.0.