Сбор данных
Запись данных ловких манипуляций с помощью Orca Hand принципиально отличается от простого сбора данных с помощью захвата — 17 суставов пальцев, дополнительные тактильные потоки и телеоперация в перчатках — все это требует тщательной синхронизации. В этом руководстве описан весь рабочий процесс.
Настройка оборудования для оперативного сбора данных
Установка записи Orca Hand имеет больше потоков, чем простая рука-захват — суставы пальцев, дополнительные тактильные ощущения, камеры и суставы рук должны быть синхронизированы.
Рука Орки (USB-сериал)
Состояние пальца с 17 степенями свободы при частоте до 100 Гц. Проверять: python -c "from orca_core import OrcaHand; h=OrcaHand('/dev/ttyUSB0'); h.connect(); print(h.get_positions())"
Устройство телеуправления
Перчатка Juqiao (рекомендуется) или отслеживание рук в виртуальной реальности. Сопоставляет положение пальцев оператора с суставами рук Orca Hand в режиме реального времени.
Камера на ладони/запястье
Маленькая USB-камера внутри ладони, направленная на кончики пальцев и предмет. Критически важен для задач, требующих большого количества контактов, где контакт кончика пальца с предметом определяет успех захвата.
Тактильные датчики (опция)
Paxini или совместимые датчики на кончиках пальцев. Отдельное USB-подключение. Добавьте поток контактной информации в свой набор данных для обучения политике на основе контактов.
Пошаговый процесс записи
Поднять руку + кисть + перчатку.
# Terminal 1: Arm (if using OpenArm)
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=false can_interface:=can0
# Terminal 2: Orca Hand
source ~/orca_ws/install/setup.bash
ros2 launch orca_ros2 orca_hand.launch.py port:=/dev/ttyUSB0 handedness:=right
# Terminal 3: Juqiao Glove (see Juqiao Glove software page)
python -m juqiao_glove.stream --port /dev/ttyUSB1
Убедитесь, что все трансляции ведутся в прямом эфире
# Check finger joint states
ros2 topic hz /orca_hand/joint_states # expect ~100 Hz
# Check glove stream
ros2 topic hz /juqiao_glove/finger_angles # expect ~100 Hz
# Check camera
python -c "import cv2; cap=cv2.VideoCapture(0); print('Camera OK:', cap.isOpened())"
Калибровка сопоставления перчаток и рук
Запустите калибровку перчаток, чтобы сопоставить размеры пальцев с диапазоном суставов руки Orca. Этот шаг обеспечивает естественную телеоперацию — ваша открытая рука = открытая косатка, ваш кулак = кулак косатки.
python -m orca_core.scripts.calibrate_teleop \
--hand_port /dev/ttyUSB0 \
--glove_port /dev/ttyUSB1 \
--handedness right
Настройте сцену задач
Размещайте объекты в одинаковых исходных положениях. Ловкое хватание очень чувствительно к позе объекта — используйте фиксаторы (ленту, замазку), чтобы поддерживать постоянное расположение объектов в разных эпизодах.
Начать сеанс записи
python -m orca_core.scripts.record_episodes \
--hand_port /dev/ttyUSB0 \
--glove_port /dev/ttyUSB1 \
--camera_id 0 \
--fps 30 \
--output_dir ~/datasets/orca-grasp-v1 \
--num_episodes 50 \
--task "Pick up the pen using a precision pinch grasp"
Регистратор сохраняет синхронизированные положения суставов пальцев, углы наклона перчаток, кадры камеры и (если подключено) тактильные показания в наборе данных Parquet.
Проверьте качество захвата
Переиграйте каждый эпизод. Обращайте внимание на: случаи проскальзывания (внезапные прыжки в позиции), неполный захват, насыщение сухожилий (сустав на жестком пределе во время захвата), непоследовательные траектории подхода.
python -m orca_core.scripts.visualize_episode \
--dataset_dir ~/datasets/orca-grasp-v1 \
--episode_index 0
Нажмите на HuggingFace Hub
python -m orca_core.scripts.push_dataset \
--dataset_dir ~/datasets/orca-grasp-v1 \
--repo_id your-username/orca-grasp-v1
Схема набора данных Orca Hand
Формат набора данных Orca Hand расширяет стандартную схему LeRobot дополнительными потоками, специфичными для пальцев, и тактильными потоками.
Контрольный список для проверки качества данных
Ловкое манипулирование данными имеет больше режимов отказа, чем простой сбор и размещение. Пройдите через это, прежде чем отправляться в Хаб.
-
1Все 17 суставов имеют действительные показания положения на протяжении всего эпизода. Значения NaN или застрявшие значения указывают на отказ сервопривода. Осмотреть
observation.hand_stateдля постоянных значений в любом суставе во всех кадрах. -
2Задержка между перчатками и руками составляет менее 20 мс. Проверьте соответствие временных меток между
action(из перчатки) иobservation.hand_state. Высокая задержка заставляет политику учиться на причинно-несовместимых парах. -
3Тип захвата единообразен в рамках задачи Политика точного сжатия не будет универсальной, если в некоторых демонстрациях использовался захват власти. Сохраняйте каждый набор данных в соответствии с одной основной стратегией сбора данных или маркируйте его по типу сбора данных.
-
4События контакта видны в совместных позициях Когда рука соприкасается с предметом, в суставах пальцев должно наблюдаться явное замедление и податливое отклонение. Эпизоды, когда пальцы фиксируются в нужном положении без контактной деформации, возможно, не захватили захват.
-
5Камера Palm показывает объект на протяжении всей фазы манипуляции Объект должен быть виден в камере ладони от подхода до момента отпускания. Убедитесь, что крепление камеры не пострадало и что поле обзора охватывает рабочую область.
-
6Тактильные потоки содержат события контакта там, где и ожидалось. Во время щипкового захвата тактильно большой и указательный пальцы должны показывать увеличение силы. Отсутствие сигналов силы во время подтвержденного контакта указывает на отсоединенный или неправильно откалиброванный датчик.