Сбор данных
Полный рабочий процесс записи для LinkerBot O6. Дистанционное управление лидером и последователями, формат набора данных LeRobot, контрольный список качества эпизодов и ссылки на более широкий конвейер сбора данных.
Рабочий процесс записи для O6
Полный процесс от готовности оборудования до первого эпизода с набором данных. Следуйте инструкциям по порядку.
Проверьте оборудование и CAN-интерфейс
Убедитесь, что O6 установлен, включен и интерфейс CAN работает. Бегать candump can0 и убедитесь, что пакеты пульса двигателя появляются, прежде чем продолжить.
Настройка расположения задач и камер
Определите описание задачи, настройте камеры под правильным углом и разместите объекты задачи в рабочей области. Последовательная установка сцены во всех эпизодах имеет решающее значение для обобщения политики.
Начать сеанс записи
Запустите скрипт управления LeRobot с помощью команды record режим. Это активирует систему для записи эпизодов. Перед записью сеанс будет ожидать вашего триггера запуска.
python -m lerobot.scripts.control_robot \
--robot.type=linkerbot_o6 \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/o6-task-name \
--control.num_episodes=50 \
--control.single_task="Pick up the blue block"
Телеуправляйте и записывайте эпизоды
Используйте руку-лидер (или клавиатуру для простых тестов) для дистанционного управления O6. Нажмите кнопку «Пуск/Стоп», чтобы выделить каждый эпизод. Сбросьте сцену между эпизодами для единообразия.
Просмотр и фильтрация выпусков
Используйте инструмент воспроизведения LeRobot для визуального просмотра каждого эпизода. Отбросьте все, что не соответствует приведенному ниже контрольному списку качества. Качество важнее количества: 30 отличных серий лучше 100 посредственных.
python -m lerobot.scripts.control_robot \
--robot.type=linkerbot_o6 \
--control.type=replay \
--control.repo_id=your-username/o6-task-name \
--control.episode=0
Загрузить в HuggingFace Hub
Отправьте отфильтрованный набор данных в HuggingFace Hub для совместного использования и обучения. Набор данных сразу же доступен для обучения политике в LeRobot.
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/o6-task-name
Формат набора данных LeRobot для O6
Каждый записанный эпизод сохраняется в стандартном формате набора данных LeRobot HuggingFace. Этот формат напрямую совместим с ACT, Diffusion Policy и всеми другими алгоритмами обучения, поддерживаемыми LeRobot.
Структура эпизода
dataset/
data/
episode_000000/
observation.state.npy # [T, 12] — 6 joint positions + 6 velocities
action.npy # [T, 6] — 6 target joint positions
observation.images.wrist_cam/
frame_000000.png # 640x480 @ 30 fps
...
observation.images.overhead_cam/
frame_000000.png
...
episode.json # {task, success, duration_s, num_frames}
meta_data/
info.json # dataset schema version, robot type, fps
stats.json # per-channel mean, std, min, max
Измерения состояния и действия
# observation.state: [T, 12]
# Columns: [j0_pos, j1_pos, j2_pos, j3_pos, j4_pos, j5_pos,
# j0_vel, j1_vel, j2_vel, j3_vel, j4_vel, j5_vel]
# Units: radians and radians/second
# action: [T, 6]
# Columns: [j0_target, j1_target, j2_target, j3_target, j4_target, j5_target]
# Units: radians
Обучите политику на основе вашего набора данных O6.
python -m lerobot.scripts.train \
--dataset_repo_id=your-username/o6-task-name \
--policy.type=act \
--output_dir=./checkpoints/o6-act-v1 \
--training.num_epochs=100
Контрольный список качества эпизода
Примените этот контрольный список к каждому эпизоду, прежде чем включать его в свой набор обучающих данных. Плохие данные хуже, чем их недостаток.
- ✓Задача выполнена успешно — рука достигла целевого состояния без вмешательства человека. Никаких частичных доработок.
- ✓Движение плавное и осознанное — никаких резких коррекций, выбросов или внезапных изменений направления. Плавные демонстрации тренируют более плавную политику.
- ✓Все рамки камеры присутствуют — отсутствие пропущенных кадров, отсутствие перекрытия рабочей области, соответствующей задаче.
- ✓Совместные состояния непрерывны — в журнале состояний отсутствуют временные интервалы более 40 мс.
- ✓Продолжительность эпизода постоянна — эпизоды длительностью менее 3 с или более 30 с обычно являются выбросами. Просмотрите их, прежде чем включать.
- ✓Сцена была сброшена идентично — объекты задачи были возвращены в ту же исходную позицию до начала эпизода.
- ✓Отсутствие ошибок CAN во время записи - проверять
candump can0регистрирует кадры ошибок во время сеанса.