Сбор данных
SO-101 — одно из наиболее распространенных устройств сбора данных в сообществе LeRobot. В этом руководстве рассматривается все: от подключений оборудования до записи эпизодов и отправки набора данных в HuggingFace.
Настройка оборудования для записи
Настройка сбора данных СО-101 проще, чем у контроллеров CAN-шины — все работает через USB. Вот что подключить.
Камера рабочего пространства
Веб-камера USB направлена на рабочее пространство сверху или сбоку. Установите в фиксированном положении — не перемещайте его между эпизодами. Проверять: ls /dev/video*
Наручная камера (опционально)
Небольшая USB-камера, установленная на концевом эффекторе. Добавляет вид от первого лица. Требуется второй порт USB. LeRobot поддерживает синхронизацию нескольких камер.
Следящий рычаг (последовательный USB)
Рука, выполняющая действия. Подключитесь через USB-сервоконтроллер. Проверьте порт с помощью ls /dev/ttyUSB*
Лидерный рычаг (USB-серийный)
Второй СО-101 в режиме соответствия — двигайте его рукой, чтобы привести в движение ведомый. Подключитесь ко второму порту USB. Проводит демонстрации высочайшего качества.
Нет ROS, нет драйверов ядра: В отличие от настроек CAN-шины, стек сбора данных SO-101 полностью работает через последовательный порт USB. Вы можете записывать на MacBook или ноутбуке с Windows — Ubuntu не требуется.
Пошаговый процесс записи
Убедитесь, что калибровка актуальна
Выполняйте калибровку перед каждым новым сеансом, если рука была разобрана или перемещена. Видеть Программное обеспечение → Калибровка.
python -m lerobot.scripts.control_robot \
--robot.type=so101 --robot.port=/dev/ttyUSB0 \
--control.type=calibrate
Проверьте каналы камеры
python -c "
import cv2
for i in range(4):
cap = cv2.VideoCapture(i)
if cap.isOpened():
print(f'Camera {i}: OK')
cap.release()
"
Переместить руку в исходное положение
Установите ведомый рычаг в исходное положение (полностью выдвинутое, рабочий орган направлен вперед). Перед тем, как начать телеопию, верните руку лидера в то же положение.
Настройте сцену задач
Разместите объекты в их одинаковых исходных положениях. При необходимости пометьте таблицу: согласованные начальные условия имеют решающее значение для обобщения политики.
Начать запись LeRobot
python -m lerobot.scripts.control_robot \
--robot.type=so101 \
--robot.port=/dev/ttyUSB1 \
--robot.leader_arms.main.type=so101 \
--robot.leader_arms.main.port=/dev/ttyUSB0 \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/so101-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick the red block and place it in the bin" \
--control.warmup_time_s=3 \
--control.reset_time_s=8
LeRobot подсказывает перед каждой серией. Во время разминки вы можете отрегулировать хват ведущей руки перед началом записи.
Просмотрите и воспроизведите эпизоды
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/so101-pick-place-v1 \
--episode_index=0
Немедленно удаляйте некачественные серии. Проверьте, нет ли пропущенных кадров камеры, нестабильной скорости суставов или неполного выполнения задачи.
Нажмите на HuggingFace Hub
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/so101-pick-place-v1
Формат набора данных SO-101
SO-101 использует стандартный формат набора данных LeRobot/HuggingFace — схему, идентичную OpenArm, Koch и другим рукам LeRobot. Это означает, что ваши наборы данных напрямую совместимы со всей экосистемой обучения LeRobot.
Схема данных эпизода
Специальные примечания к SO-101
В пространстве действий SO-101 позиции суставов используются в градусах (сервоблоки Feetech), а не в радианах. При смешивании наборов данных SO-101 и OpenArm для кросс-платформенного обучения сначала нормализуйте оба набора данных в радианах, используя статистику в meta/stats.json.
Контрольный список качества собранных данных
Проходите это после каждого сеанса записи, прежде чем отправлять в хаб.
-
1Продолжительность эпизодов одинакова Эпизоды слишком большой продолжительности обычно означают, что оператор сделал паузу, захват соскользнул или запись была прервана. Соблюдайте пределы ±30 % от медианной длины.
-
2Нет скачков скорости сервопривода Сервоприводы STS3215 имеют ограниченную полосу пропускания — внезапные скачки скорости
observation.stateуказывают на отключение последовательной шины. Удалите эти эпизоды. -
3Кадры камеры сопоставлены с совместными данными Убедитесь, что временные метки камеры и временные метки соединения находятся в пределах 20 мс друг от друга. Задержка последовательного порта USB может привести к дрейфу при длительных записях. Повторно синхронизируйте камеры каждые 100 серий.
-
4Отслеживание руки лидера было плавным Если ведомый заметно отстает во время записи (из-за задержки последовательного порта USB), метки действий будут сдвинуты по времени от наблюдений. Переиграйте, чтобы проверить.
-
5Сцена задания была одинаковой в начале каждого эпизода. Объекты в одинаковом положении и ориентации. Меньшая повторяемость SO-101 (по сравнению с оружием CAN) делает это особенно важным — отклонения в начальных условиях вредят политическому обучению.
-
6Открытие/закрытие захвата четко фиксируется Состояние захвата SO-101 — соединение 6. Убедитесь, что события захвата показывают в данных четкий переход положения соединения (открыто → закрыто), а не постепенное смещение.
Обучение политики на основе вашего набора данных
Как только ваш набор данных пройдет проверку качества, обучите ACT или политику распространения с помощью LeRobot.
Поезд АСТ
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/so101-pick-place-v1 \
--policy.chunk_size=100 \
--training.num_epochs=5000 \
--output_dir=outputs/act-so101-pick-place
Политика распространения поездов
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/so101-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/diffusion-so101-pick-place
Наборы данных сообщества: SO-101 обладает одной из крупнейших коллекций наборов данных сообщества в экосистеме LeRobot. Прежде чем собирать собственные данные, проверьте HuggingFace Hub для существующих наборов данных SO-101 — возможно, вы сможете выполнить точную настройку на основе существующего базового набора данных и сэкономить время записи.