Почему важен стандартный формат
Обучение роботов исторически страдало от того, что каждая лаборатория использовала разные форматы данных, что делало невозможным совместное использование наборов данных, объединение данных от разных роботов или использование предварительно обученных политик в разных системах. Формат набора данных LeRobot решает эту проблему, определяя единую схему, которая работает на всем поддерживаемом оборудовании. Набор данных, записанный на SO-100, можно использовать для обучения политики OpenArm без какого-либо преобразования — при условии, что размеры пространства действий совпадают.
Понимание формата перед записью означает, что вы не обнаружите структурных проблем в своих данных во время обучения. Это также значительно упрощает отладку: если обучение не удается, первое, на что следует обратить внимание, — это набор данных.
Структура набора данных: Паркет + MP4
Каждый набор данных LeRobot находится в каталоге со следующей структурой:
Разделение между Parquet (для числовых временных рядов) и MP4 (для видео) намеренно. Parquet эффективно сжимает совместные состояния и действия и поддерживает быстрый произвольный доступ по индексу эпизода. В MP4 используются видеокодеки, предназначенные для последовательностей изображений, что позволяет получать файлы в 10–30 раз меньше, чем при хранении необработанных изображений в виде тензоров.
Ключевые поля в каждом эпизоде
| Поле | Форма | Описание |
|---|---|---|
| наблюдение.состояние | [Т, Д] | Позиции суставов (и, возможно, скорости) на каждом временном шаге. D – количество шарниров (например, для СО-100 7: 6 шарниров + 1 захват). |
| действие | [Т, Д] | Целевые совместные позиции, которыми командуют на каждом временном этапе. Та же размерность, что и состояние наблюдения. |
| временная метка | [Т] | Время в секундах с начала эпизода, по умолчанию 50 Гц (0,02 с на шаг). |
| эпизод_index | скаляр | Целочисленный индекс этого эпизода в наборе данных. Используется загрузчиком данных для группировки временных шагов в эпизоды. |
| индекс_фрейма | [Т] | Номер кадра в эпизоде (от 0 до Т-1). Соответствует номеру кадра в соответствующем MP4. |
| следующий.сделано | [Т] | Логический флаг — истина на последнем временном шаге эпизода. Используется для обозначения границ эпизодов во время тренировки. |
| Task_index | скаляр | Индексируйте в Tasks.jsonl. Включает многозадачные наборы данных, в которых разные эпизоды соответствуют разным инструкциям. |
observation.images.cam_high как ссылку на путь (индекс кадра + индекс эпизода), а не необработанные данные пикселей. Загрузчик данных LeRobot прозрачно выполняет декодирование и синхронизацию.
Загрузите и визуализируйте существующий набор данных
Загрузите lerobot-raw/aloha_sim_insertion_scripted набор данных из HuggingFace Hub и визуализируйте 3 эпизода. Этот набор данных содержит сценарии, демонстрирующие, как двуручный робот вставляет колышек — наглядный пример того, как выглядит хорошо структурированный набор данных.
Визуализатор генерирует HTML-страницу с воспроизведением видео каждого эпизода вместе с синхронизированными графиками совместного состояния. Искать:
- Плавные траектории суставов — острые пики указывают на артефакты записи или удары рук
- Постоянная длина эпизода — эпизоды, которые сильно различаются по продолжительности (например, 50 или 400 кадров), часто указывают на некоторые демонстрации, в которых запечатлены частичные или прерванные движения.
- Изменения состояния захвата — последний размер сустава должен показывать четкие бинарные переходы (открыть → закрыть → открыть) для задач манипуляции.
Изучите коллекцию наборов данных SVRC
Библиотека наборов данных SVRC включает тщательно подобранные наборы данных обучения роботов в формате LeRobot. Просмотрите их, чтобы понять, как выглядят различные задачи и оборудование, прежде чем записывать свои собственные. Просмотреть наборы данных →
Часть 2 завершена, когда...
Вы успешно визуализировали 3 эпизода из lerobot-raw/aloha_sim_insertion_scripted и вывод HTML откроется в вашем браузере. Вы можете идентифицировать поля Observe.state, Action и Timestamp в файле Parquet, загруженном с помощью Python. Вы понимаете разницу между тем, что хранится в Parquet и MP4. Вы готовы записать свой собственный набор данных в Модуль 3.