Бимануальный сбор данных
DK1 изначально разработан для двуручного сбора данных телеуправления. В этом руководстве описывается подключение рук и камер, выполнение процедуры записи ведущего/ведомого, понимание схемы бимануального набора данных и подготовка данных для обучения ACT.
Аппаратные соединения для бимануальной записи
Бимануальная запись требует большего количества соединений, чем установка с использованием одной руки. Проверьте каждое соединение перед запуском LeRobot — отсутствие соединения в середине сеанса приведет к повреждению эпизода.
Лидерный рычаг (Dynamixel XL330)
USB-C от ведущего рычага к главному ПК. Этот рычаг перемещается рукой оператора. Используйте короткий кабель (1 м), чтобы избежать случайных отключений во время телеоперации. Проверять: ls /dev/ttyACM0
Следящий рычаг (DM4340 + мощность)
USB-C от ведомого рычага к главному ПК плюс источник питания постоянного тока. Следящему рычагу требуется внешнее питание — никогда не работайте только от USB-питания. Проверять: ls /dev/ttyACM1
Наручная камера (ведомая рука)
Установите веб-камеру USB на рабочий орган ведомого рычага. Это основная манипуляционная камера. Подключитесь через USB 3.0. Проверять: ls /dev/video0
Верхняя/рабочая камера
Фиксированная камера над бимануальным рабочим пространством на высоте около 70 см, наклоненная под углом 30° вниз. Захватывает обе руки одновременно. Второй порт USB 3.0. Проверять: ls /dev/video2
Критично: биручная синхронизация. Благодаря двум манипуляторам и двум камерам синхронизация является наиболее важным фактором качества данных для DK1. LeRobot отмечает время всех потоков по часам главного компьютера. Чтобы минимизировать рассогласование временных меток: (1) используйте отдельные контроллеры шины USB для камер и кронштейнов, (2) используйте концентраторы USB 3.0 со стабильной тактовой частотой, (3) установите регулятор ЦП в режим производительности. Цель: рассогласование <5 мс между всеми четырьмя потоками. Рассинхронизация на 10 мс между состояниями левой и правой руки может привести к сбоям в обучении ACT при выполнении задач с большим количеством контактов.
Процедура записи телеоперации лидера/ведомого
Выполняйте следующие действия для каждого сеанса записи DK1. Бимануальная процедура имеет несколько дополнительных этапов по сравнению со сбором одной рукой.
Проверка безопасности перед сессией
Освободите общее рабочее пространство между обоими кронштейнами (1,5 м × 1 м). Убедитесь, что обе руки достигают общего рабочего пространства без столкновений. Перед записью проверьте аварийную остановку. Видеть Страница безопасности.
Подключите и проверьте оба рычага
# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)
# Quick connection test
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=none
Проверьте каналы камеры
Перед запуском LeRobot обе камеры должны вести потоковую передачу. Отсутствующая камера будет автоматически воспроизводить эпизоды с нулевыми кадрами изображения.
python3 -c "
import cv2
for i in [0, 2]:
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
else:
print(f'Camera {i}: FAILED')
cap.release()
"
Переведите руки в исходное положение
Вручную переместите ведущий рычаг в исходное положение телеопаса. Следящий рычаг будет отражать это. Удерживайте рычаг лидера неподвижно в течение 2–3 секунд, чтобы подтвердить синхронизацию перед началом периода разминки.
Настройте сцену задач
Размещайте предметы в одинаковых исходных положениях для обеих рук. Сфотографируйте стартовую конфигурацию. Для бимануальных задач отметьте точные позиции с помощью ленты — согласованность сцены еще более важна, поскольку траектории обеих рук должны быть совместимыми.
Начать двуручную запись LeRobot
source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick up block with left arm, place in bin with right arm" \
--control.warmup_time_s=5 \
--control.reset_time_s=15
Используйте более длинный reset_time_s для бимануальных задач — сброс настроек двух рук и сцены занимает больше времени, чем настройка одной рукой.
Просмотрите и воспроизведите эпизоды
После каждой серии из 10 эпизодов воспроизведите и просмотрите их, прежде чем продолжить. Обратите внимание на координацию рук — отставание между левой и правой руками будет проявляться в виде дрожи в движениях ведомого.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
Нажмите на HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
Формат набора данных LeRobot для бимануального управления (DK1)
Схема бимануального набора данных DK1 удваивает поля состояния суставов по сравнению с записью одной рукой. Каждый эпизод содержит синхронизированные наблюдения с ведущих и ведомых рук, а также со всех камер.
Структура каталогов
your-username/dk1-bimanual-pick-place-v1/
├── meta/
│ ├── info.json # Dataset metadata, fps, shapes, robot_type
│ ├── episodes.jsonl # Per-episode metadata (task, length, outcome)
│ └── stats.json # Min/max/mean/std for all fields
├── data/
│ └── chunk-000/
│ ├── episode_000000.parquet
│ └── ...
└── videos/
└── chunk-000/
├── observation.images.wrist_cam/
│ ├── episode_000000.mp4
│ └── ...
└── observation.images.overhead_cam/
└── ...
Схема данных эпизода (двуручный режим)
Контрольный список качества для бимануальных демонстраций
Бимануальные наборы данных предъявляют более строгие требования к качеству, чем данные, полученные одним рукавом. Плохая координация между вооруженными силами является основной причиной неудач в обучении политике DK1.
-
1Дельта синхронизации рычага менее 10 мс. Проверьте
arm_sync_delta_msполе в каждом эпизоде. Скачки длительностью более 10 мс указывают на конфликт на шине USB или потерю последовательного пакета. Удалите эпизоды с устойчивыми высокими дельтами. -
2Отсутствие колебаний ведомого рычага во время контакта Просмотрите траектории ведомых рук в точках контакта (захват, передача, размещение). Колебания проявляются как высокочастотный шум в
observation.state. Уменьшите усиление PD, если оно присутствует. Видеть устранение неполадок программного обеспечения. -
3Обе руки выполняют задание в одном эпизоде. Для бимануальных задач эпизод действителен только в том случае, если обе руки выполняют назначенные им подзадачи. Если левая рука справилась, но правая уронила объект, отметьте эпизод как неудачный и удалите его или добавьте к нему аннотацию.
-
4Никаких пропущенных кадров камеры Оба потока камеры должны иметь ожидаемое количество кадров. Отсутствие кадров с любой камеры повреждает входные данные зрительно-моторной политики. Проверьте с
lerobot.scripts.visualize_dataset. -
5Сцена задания сбрасывалась одинаково между эпизодами. Рабочее пространство обеих рук необходимо сбрасывать для каждого эпизода. Положение объекта, начальная конфигурация руки и углы камеры должны совпадать. Используйте сфотографированную стартовую конфигурацию в качестве образца.
-
6Продолжительность эпизода постоянна Все успешные эпизоды должны находиться в пределах ±25% от медианной продолжительности. Бимануальные задачи часто имеют более высокую дисперсию, чем задачи с одной рукой, но крайние выбросы (3 × медиана) следует отбросить.
-
7Статистика набора данных симметрична для обеих рук. В
meta/stats.json, проверьте этоaction_leftиaction_rightстатистика правдоподобна для геометрии вашей задачи. Если один рычаг показывает нулевую дисперсию, этот рычаг не двигался — проверьте назначения портов. -
8Стиль демонстрации Teleop последовательный Во всех демонстрациях следует использовать один и тот же путь подхода, стратегию захвата и технику передачи управления. Смешанные стратегии создают мультимодальное распределение действий, которое запутывает обучение ACT. Используйте одного оператора для каждой версии задачи.
Обучение ACT на вашем бимануальном наборе данных
Как только ваш набор данных пройдет контрольный список качества, обучите ACT или политику распространения непосредственно с помощью LeRobot. ACT рекомендуется для двуручных задач DK1 — его фрагментированное прогнозирование действий обеспечивает координацию между подразделениями лучше, чем одношаговые политики.
Поезд ACT (рекомендуется для бимануала)
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--policy.chunk_size=100 \
--policy.n_action_steps=100 \
--training.num_epochs=5000 \
--training.batch_size=8 \
--output_dir=outputs/dk1-act-bimanual
Политика распространения поездов (для задач с большим количеством контактов)
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/dk1-diffusion-bimanual
Идите глубже: Читать полностью Обзор конвейера сбора данных в Библиотеке робототехники для подробной обработки структуры эпизодов, управления версиями наборов данных, стратегий синхронизации и многозадачного двуручного составления набора данных.