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

Телеуправление и повтор сеанса

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

Результат: движение ведущей руки управляет ведомой через проверенное отображение суставов; сохранённый сеанс можно повторить без ведущей руки.

Подготовить две шины

Нужны отдельные последовательные адаптеры для 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.