Datenerfassung
Die Aufzeichnung geschickter Manipulationsdaten mit der Orca-Hand unterscheidet sich grundlegend von der einfachen Erfassung von Greiferdaten – 17 Fingergelenke, optionale taktile Streams und Handschuh-Teleoperation erfordern alle eine sorgfältige Synchronisierung. Dieser Leitfaden deckt den gesamten Arbeitsablauf ab.
Hardware-Setup für eine geschickte Datenerfassung
Das Orca-Hand-Aufzeichnungssetup verfügt über mehr Streams als ein einfacher Greifarm – Fingergelenke, optionale Tastgelenke, Kameras und Armgelenke müssen alle synchronisiert werden.
Orca Hand (USB seriell)
17-DOF-Fingerstatus bei bis zu 100 Hz. Verifizieren: python -c "from orca_core import OrcaHand; h=OrcaHand('/dev/ttyUSB0'); h.connect(); print(h.get_positions())"
Teleoperationsgerät
Juqiao-Handschuh (empfohlen) oder VR-Handverfolgung. Ordnet die Fingerhaltungen des Bedieners den Orca-Hand-Gelenkzielen in Echtzeit zu.
Handflächen-/Handgelenkkamera
Kleine USB-Kamera in der Handfläche, die auf die Fingerspitzen und den Gegenstand zeigt. Entscheidend für kontaktreiche Aufgaben, bei denen der Kontakt zwischen Fingerspitze und Objekt über den Greiferfolg entscheidet.
Taktile Sensoren (optional)
Paxini oder kompatible Fingerspitzensensoren. Separater USB-Anschluss. Fügen Sie Ihrem Datensatz den Contact Force Stream für kontaktgesteuerte Richtlinienschulungen hinzu.
Schritt-für-Schritt-Aufzeichnungsworkflow
Bringen Sie Arm + Hand + Handschuh nach oben
# 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
Stellen Sie sicher, dass alle Streams live sind
# 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())"
Kalibrieren Sie die Handschuh-zu-Hand-Zuordnung
Führen Sie die Handschuhkalibrierung durch, um Ihre Fingerabmessungen dem Gelenkbereich der Orca-Hand zuzuordnen. Dieser Schritt gewährleistet eine natürliche Teleoperation – Ihre offene Hand = Orca offen, Ihre Faust = Orca-Faust.
python -m orca_core.scripts.calibrate_teleop \
--hand_port /dev/ttyUSB0 \
--glove_port /dev/ttyUSB1 \
--handedness right
Richten Sie die Aufgabenszene ein
Platzieren Sie Objekte an einheitlichen Startpositionen. Geschicktes Greifen reagiert sehr empfindlich auf die Objekthaltung – verwenden Sie Fixierungen (Klebeband, Kitt), um eine konsistente Objektplatzierung über alle Episoden hinweg aufrechtzuerhalten.
Aufnahmesitzung starten
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"
Der Rekorder speichert synchronisierte Fingergelenkpositionen, Handschuhwinkel, Kamerabilder und (sofern angeschlossen) taktile Messwerte in einem Parquet-Datensatz.
Überprüfen Sie die Griffqualität
Spielen Sie jede Episode noch einmal ab. Achten Sie auf: Slippage-Ereignisse (plötzliche Positionssprünge), unvollständige Griffe, Sehnensättigung (Gelenk an der harten Grenze während des Griffs), inkonsistente Annäherungswege.
python -m orca_core.scripts.visualize_episode \
--dataset_dir ~/datasets/orca-grasp-v1 \
--episode_index 0
Drücken Sie auf HuggingFace Hub
python -m orca_core.scripts.push_dataset \
--dataset_dir ~/datasets/orca-grasp-v1 \
--repo_id your-username/orca-grasp-v1
Schema des Orca-Handdatensatzes
Das Orca-Hand-Datensatzformat erweitert das Standardschema von LeRobot um zusätzliche fingerspezifische und taktile Streams.
Checkliste für die Datenqualität von Dexterous
Bei der geschickten Datenmanipulation gibt es mehr Fehlermöglichkeiten als beim einfachen Pick-and-Place. Führen Sie dies durch, bevor Sie zum Hub wechseln.
-
1Alle 17 Gelenke haben während der gesamten Episode gültige Positionswerte NaN- oder Stuck-Werte deuten auf einen Servoausfall hin. Überprüfen
observation.hand_statefür konstante Werte in jedem Gelenk über alle Frames hinweg. -
2Die Handschuh-zu-Hand-Latenz liegt unter 20 ms Überprüfen Sie die Zeitstempelausrichtung zwischen
action(aus Handschuh) undobservation.hand_state. Eine hohe Latenz führt dazu, dass die Richtlinie aus kausal inkonsistenten Paaren lernt. -
3Der Grifftyp ist innerhalb einer Aufgabe konsistent Eine Richtlinie für präzises Kneifen lässt sich nicht verallgemeinern, wenn bei einigen Demonstrationen Kraftgriffe zum Einsatz kamen. Behalten Sie für jeden Datensatz eine primäre Erfassungsstrategie bei oder beschriften Sie ihn nach Erfassungstyp.
-
4Kontaktereignisse sind in Gelenkpositionen sichtbar Wenn die Hand einen Gegenstand berührt, sollten die Fingergelenke eine deutliche Verzögerung und Nachgiebigkeitsauslenkung zeigen. Episoden, in denen die Finger ohne Kontaktverformung in die richtige Position springen, haben möglicherweise den Griff verfehlt.
-
5Die Palmkamera zeigt das Objekt während der gesamten Manipulationsphase Das Objekt muss von der Annäherung bis zur Freigabe in der Handflächenkamera sichtbar sein. Stellen Sie sicher, dass die Kamerahalterung nicht angestoßen wurde und dass das Sichtfeld den Arbeitsbereich abdeckt.
-
6Taktile Streams weisen dort, wo erwartet, Kontaktereignisse auf Während eines Kneifgriffs sollten sowohl Daumen als auch Zeigefinger einen Kraftanstieg verspüren. Fehlende Kraftsignale während des bestätigten Kontakts weisen auf einen nicht angeschlossenen oder falsch kalibrierten Sensor hin.