Ο δημόσιος κατάλογος συνόλων δεδομένων AY-Robots που δείχνει σύνολα δεδομένων LeRobot καταγεγραμμένα σε βραχίονες κατηγορίας SO-100
Σύνολα ΔεδομένωνOpen X-EmbodimentDROIDSO-100LeRobot

Χρήση DROID, BridgeData V2 και Open X σε ένα SO-100

AY-Robots ResearchAugust 23, 202618 λεπτά ανάγνωσης

Τα DROID, BridgeData V2 και Open X-Embodiment μετατρέπονται σε ενέργειες τελικού ενεργοποιητή 7 διαστάσεων σε βραχίονες 6 και 7 βαθμών ελευθερίας. Ένας SO-100 δέχεται 6 θέσεις αρθρώσεων. Τι μεταφέρεται, τι όχι, τι να κάνετε αντ' αυτού.

Η σύντομη εκδοχή

  • Οι υλοποιήσεις LeRobot και των τριών μοιράζονται μία σύμβαση: μια δράση τελικού ενεργοποιητή 7 διαστάσεων [x, y, z, roll, pitch, yaw, gripper] και μια κατάσταση 8 διαστάσεων με μια θέση συμπλήρωσης. Ένα SO-100 λαμβάνει έξι απόλυτες θέσεις αρθρώσεων.
  • Αυτό το διάνυσμα 7 διαστάσεων είναι το τεχνούργημα του μετατροπέα: το πεδίο δράσης RLDS του DROID είναι 6 ταχύτητες αρθρώσεων συν μια θέση αρπάγης, με την καρτεσιανή προβολή στο action_dict.
  • Τέσσερα ρολόγια: DROID 15 fps, BridgeData V2 5 fps, το google_robot slice 3 fps, μια εγγραφή SO-100 στα 30 fps.
  • Δεν μπορείτε να τα συγχωνεύσετε με τα δικά σας δεδομένα. Το validate_all_metadata εγείρει σφάλμα στην πρώτη διαφορά σε fps, robot_type ή features, και και τα τρία διαφέρουν.
  • Αυτό που μεταφέρεται είναι προεκπαιδευμένα βάρη, όχι επεισόδια. Τα δεδομένα ανοιχτού κώδικα αποτελούν το 9.1 τοις εκατό του μείγματος προεκπαίδευσης του pi0.
  • Η φθηνότερη πραγματική τους χρήση είναι ένα εξάρτημα δοκιμής: ένα γνωστό-καλό δείγμα DROID 2 GB, 100 επεισοδίων που αποδεικνύει τη λειτουργία της διοχέτευσής σας πριν κάνετε εγγραφή για ένα Σαββατοκύριακο.

Υπάρχει ένα δημόσιο σύνολο δεδομένων εκατομμυρίων τροχιών σε ένα Google Cloud bucket και ένα SO-100 στο γραφείο που κόστισε 110 έως 150 EUR σε εξαρτήματα. Γιατί το πρώτο δεν μπορεί να διδάξει το δεύτερο; Εν μέρει μπορεί, αλλά σχεδόν καμία από τη μεταφορά δεν συμβαίνει εκεί που οι άνθρωποι περιμένουν, και το μέρος που φαίνεται ευκολότερο δεν λειτουργεί καθόλου.

Τι ακολουθεί: τι περιέχεται στο DROID, BridgeData V2 και Open X-Embodiment, όπου το καθένα συγκρούεται με έναν βραχίονα 5-DoF χαμηλού κόστους, και τι να κάνετε αντ' αυτού. Κάθε αριθμός παρακάτω προήλθε από την εργασία, την κάρτα δεδομένων ή το αρχείο πηγής στο οποίο ανήκει.

Τι περιέχουν στην πραγματικότητα τα τρία σύνολα δεδομένων

DROIDBridgeData V2Open X-Embodiment
ΡομπότFranka Panda, 7 DoF, Robotiq 2F-85WidowX 250, 6 DoF, ~4,000 USD rig22 υλοποιήσεις, 60 σύνολα δεδομένων, 34 εργαστήρια
Κλίμακα76 χιλ. τροχιές, 350 ώρες60.096 τροχιές1M+ τροχιές, 527 δεξιότητες
Ποικιλομορφία564 σκηνές, 84 εργασίες, 50 συλλέκτες24 περιβάλλοντα, 13 δεξιότητες160.266 εργασίες, 21 ιδρύματα
Σύνθεσηόλα τηλεχειριζόμενα50.365 τηλεχειριζόμενα, 9.731 προγραμματισμέναανά εργαστήριο πηγής
Ρυθμός ελέγχου15 Hz5 Hzποικίλλει, 3 fps και άνω
Κάμερες2 x ZED 2 exterior, 1 x ZED Mini wristέως 4, τα περισσότερα επεισόδια μόνο η σταθερήό,τι χρησιμοποίησε το εργαστήριο
Αρχική λήψη1.7 TB RLDS, 8.7 TB raw stereoJPEG archivesper-dataset TFDS buckets
Το σημείο εισόδου είναι η μετατροπή LeRobot, όχι το αρχικό bucket

Λίγοι άνθρωποι κατεβάζουν ακόμα 1,7 TB RLDS TFRecords. Ο κοινοτικός οργανισμός IPEC-COMMUNITY έχει αναδημοσιεύσει το μεγαλύτερο μέρος του Open X-Embodiment σε μορφή LeRobot dataset με βίντεο AV1, όπου το DROID φτάνει τα 392 GB. Αυτή είναι η έκδοση με την οποία θα εργαστείτε, και το meta/info.json της είναι αυτό που πρέπει να διαβάσετε πρώτα.

DROID

Το πιο τυποποιημένο από τα τρία. Ένα σύστημα παντού: ένα Franka Panda με αρπάγη Robotiq 2F-85, δύο ρυθμιζόμενες στερεοφωνικές κάμερες ZED 2 και μια κάμερα καρπού ZED Mini, τηλεχειριζόμενο με χειριστήρια Meta Quest 2, καταγεγραμμένο μέσω Polymetis στα 15 Hz τόσο στον χώρο των αρθρώσεων όσο και στον χώρο του τελικού ενεργοποιητή. Οι ετικέτες γλώσσας προστέθηκαν αργότερα μέσω του tasq.ai, έως τρεις ανά επεισόδιο.

  • 76k τροχιές, 350 ώρες, 564 σκηνές, 84 εργασίες, 50 συλλέκτες σε τρεις ηπείρους.
  • Το κύριο αποτέλεσμα είναι η συν-εκπαίδευση, όχι η αυτόνομη εκπαίδευση: παρτίδες αναμεμειγμένες 50/50 με επιδείξεις εντός πεδίου νίκησαν την επόμενη καλύτερη μέθοδο κατά 22 ποσοστιαίες μονάδες απόλυτης επιτυχίας στην κατανομή, 17 ποσοστιαίες μονάδες εκτός αυτής.
  • IPEC-COMMUNITY/droid_lerobot: 92.233 επεισόδια, 27.044.326 καρέ, franka, 15 fps, codebase_version v2.0, τρεις ροές AV1 στα 180x320, 392 GB.
  • Ένα δείγμα εντοπισμού σφαλμάτων 2 GB, 100 επεισοδίων βρίσκεται στο gs://gresearch/robotics/droid_100. Ξεκινήστε από εκεί.

BridgeData V2

Το πιο κοντινό σε μια ερασιτεχνική εγκατάσταση: ένας βραχίονας WidowX 250 6-DoF, 60.096 τροχιές σε 24 περιβάλλοντα και 13 δεξιότητες στα 5 Hz. Σημειώστε τη σύνθεση: 50.365 επιδείξεις από ειδικούς τηλεχειριζόμενους συν 9.731 από μια τυχαιοποιημένη πολιτική επιλογής και τοποθέτησης με σενάριο, οπότε περίπου το 16 τοις εκατό δεν είναι ανθρώπινη επίδειξη, κάτι που έχει σημασία για μάθηση μέσω μίμησης ποιότητα. Η συνήθης λήψη, IPEC-COMMUNITY/bridge_orig_lerobot, αναφέρει 53.192 επεισόδια και 1.893.026 καρέ στα 5 fps, robot_type widowx: λιγότερα από τα 60.096 της εργασίας, οπότε διαβάστε τον αριθμό από το meta/info.json αντί να αναφέρετε οποιοδήποτε από τα δύο.

Open X-Embodiment

Όχι ένα σύνολο δεδομένων με την ίδια έννοια: 60 υπάρχοντα σύνολα δεδομένων ρομπότ από 34 εργαστήρια συγκεντρώθηκαν σε μία συλλογή RLDS που καλύπτει 22 υλοποιήσεις και πάνω από ένα εκατομμύριο τροχιές. Το BridgeData V2 βρίσκεται μέσα σε αυτήν ως bridge_orig. Το τμήμα google_robot, fractal20220817_data, μετατρέπεται σε 87.212 επεισόδια στα 3 fps.

Η συγκέντρωση δεδομένων εμπεριέχει μια προειδοποίηση που αναφέρεται ευθέως στην εργασία. Για τα πειράματα RT-X, οι συγγραφείς μετατρέπουν κάθε πηγή σε μια ενέργεια τελικού ενεργοποιητή 7-DoF, αλλά δεν ευθυγραμμίζουν τα συστήματα συντεταγμένων μεταξύ των συνόλων δεδομένων και επιτρέπουν στις τιμές δράσης να είναι απόλυτες ή σχετικές θέσεις ή ταχύτητες, σύμφωνα με το αρχικό σχήμα ελέγχου κάθε ρομπότ. Το συμπέρασμά τους: το ίδιο διάνυσμα δράσης μπορεί να προκαλέσει πολύ διαφορετικές κινήσεις για διαφορετικά ρομπότ.

Ο κατάλογος συνόλων δεδομένων AY-Robots που παραθέτει δημόσια σύνολα δεδομένων LeRobot με αριθμούς επεισοδίων και περιγραφές εργασιών
Ο δημόσιος κατάλογος συνόλων δεδομένων στο /directory: σύνολα δεδομένων ήδη σε μορφή LeRobot, ήδη συμβατά με έναν υποστηριζόμενο βραχίονα.

Η αναντιστοιχία, σε τέσσερα μέρη

Η αναντιστοιχία ενσωμάτωσης συνήθως αντιμετωπίζεται ως ένα ασαφές πρόβλημα. Είναι τέσσερα, αποτυγχάνουν διαφορετικά, και δύο δεν μπορούν να διορθωθούν με scripting.

1. Βαθμοί ελευθερίας

Ένας SO-100 έχει πέντε αρθρώσεις βραχίονα συν μια λαβίδα. Μετρημένος ως κινητήρες είναι ένας βραχίονας 6-DoF, και η εργασία SmolVLA τον αποκαλεί έτσι· μετρημένος ως μηχανισμός τοποθέτησης είναι 5-DoF, και το LeRobot τον αποκαλεί έτσι στο docstring της αντίστροφης κινηματικής του, το οποίο περιγράφει την IK μαλακού προσανατολισμού στον 5-DOF SO-101 όπου ο καρπός παρακολουθεί τον προσανατολισμό μόνο εν μέρει. Ένας Franka έχει επτά αρθρώσεις τοποθέτησης. Αυτό το κενό καθορίζει ποιες στάσεις υπάρχουν: ένας βραχίονας 5-DoF δεν μπορεί γενικά να φτάσει ταυτόχρονα σε μια αυθαίρετη θέση και προσανατολισμό, οπότε ο επιλυτής επιστρέφει την πλησιέστερη δυνατή, μια διαφορετική κίνηση από αυτή που επιδείχθηκε. Ιστορικό: βαθμοί ελευθερίας.

python
# src/lerobot/robots/so_follower/so_follower.py
motors = {
    "shoulder_pan":  Motor(1, "sts3215", norm_mode_body),
    "shoulder_lift": Motor(2, "sts3215", norm_mode_body),
    "elbow_flex":    Motor(3, "sts3215", norm_mode_body),
    "wrist_flex":    Motor(4, "sts3215", norm_mode_body),
    "wrist_roll":    Motor(5, "sts3215", norm_mode_body),
    "gripper":       Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position"  ->  a 6-D ABSOLUTE JOINT POSITION command


# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
    return {
        "observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/wrist_image_left":      np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
        "observation/joint_position":        np.random.rand(7),   # seven Franka joints
        "observation/gripper_position":      np.random.rand(1),
        "prompt": "do something",
    }
# state = concat(joint_position, gripper_pos)  ->  8-D
Αριστερά: Ο SO follower του LeRobot, από src/lerobot/robots/so_follower/so_follower.py. Δεξιά: Η είσοδος της πολιτικής DROID του openpi. Έξι έναντι οκτώ.

Ένα έτοιμο DROID checkpoint δεν αποτελεί συντόμευση. Η Physical Intelligence διανέμει το pi05_droid στο gs://openpi-assets/checkpoints/pi05_droid, και το ίδιο README που επαινεί το εύρος του προειδοποιεί ότι αυτά τα εξειδικευμένα checkpoints ενδέχεται να μην γενικεύονται στην εγκατάστασή σας. Η κατάστασή του είναι οκτώ αριθμοί αρθρώσεων Franka και τα κλειδιά εικόνας του είναι exterior_image_1_left και wrist_image_left. Καμία σημαία δεν το μετατρέπει σε εντολή SO-100 έξι κινητήρων.

2. Τι λέει στην πραγματικότητα το διάνυσμα δράσης

Βαθύτερα από τη διαστατικότητα. Στις μετατροπές του LeRobot και τα τρία λένε πού πρέπει να πάει η λαβίδα, σε καρτεσιανό χώρο. Ένα SO-100 λέει πού πρέπει να πάνε έξι σερβοκινητήρες. Η μετατροπή απαιτεί ένα κινηματικό μοντέλο και έναν επιλυτή, όχι μια αναμόρφωση.

ΙδιότηταOXE, DROID και Bridge σε μορφή LeRobotSO-100 σε LeRobot
Διάνυσμα δράσης7-D: x, y, z, roll, pitch, yaw, gripper6-D: μία θέση στόχου ανά κινητήρα
Διάνυσμα κατάστασης8-D, με μια θέση συμπλήρωσης (το google_robot χρησιμοποιεί ένα τετραδόνιο)6-D, ένα ανά κινητήρα
ΠλαίσιοΚαρτεσιανό, μη ευθυγραμμισμένο σε όλα τα σύνολα δεδομένωνχώρος αρθρώσεων, βαθμονόμηση ανά βραχίονα
Απόλυτο ή σχετικόείτε, αποφασίζεται από το εργαστήριο πηγήςαπόλυτες θέσεις στόχου
Μονάδεςκανονικοποιημένες ανά σύνολο δεδομένων, στη συνέχεια διακριτοποιημένεςμοίρες από προεπιλογή (use_degrees=True), αλλιώς -100 έως 100
Σιωπηρή αποτυχίαένα δέλτα που διαβάζεται ως απόλυτοένας μη βαθμονομημένος βραχίονας
Το 7-διάστατο καρτεσιανό διάνυσμα είναι η σύμβαση του μετατροπέα, όχι του DROID

Το README του openx2lerobot τεκμηριώνει μια ενοποιημένη κατάσταση 8 διαστάσεων και μια ενέργεια 7 διαστάσεων για κάθε σύνολο δεδομένων που μετατρέπει, από όπου προέρχεται η υποδοχή pad. Το δικό του σχήμα RLDS του DROID διαφέρει: η κορυφαία action του είναι ένα διάνυσμα 7 στοιχείων από 6 ταχύτητες αρθρώσεων συν 1 θέση λαβής, με cartesian_position, cartesian_velocity, joint_position και joint_velocity κάτω από το action_dict. Το openpi διαβάζει την προβολή του χώρου των αρθρώσεων, η κατασκευή LeRobot σας δίνει την καρτεσιανή. Κανένα από τα δύο δεν είναι έξι απόλυτες γωνίες σερβομηχανισμού.

Το LeRobot παρέχει το κομμάτι που λείπει: ο ακολουθητής SO διαθέτει έναν επεξεργαστή κινηματικής με βήματα InverseKinematicsEEToJoints και ForwardKinematicsJointsToEE. Τα κλειδιά του είναι ee.x, ee.y, ee.z συν ένα διάνυσμα περιστροφής ee.wx, ee.wy, ee.wz και ee.gripper_pos, οπότε ακόμη και η κωδικοποίηση προσανατολισμού διαφέρει από το roll-pitch-yaw στα αρχεία. Το βήμα IK λαμβάνει ένα orientation_weight, προεπιλογή 0.01, του οποίου το docstring λέει να οριστεί σε 0.0 για IK μόνο θέσης σε υπο-ενεργοποιημένους βραχίονες. Μπορείτε να χτίσετε τη γέφυρα, αλλά το μισό του προσανατολισμού κάθε δανεισμένης ενέργειας παραμένει προσεγγιστικό.

3. Ρυθμός ελέγχου

Το DROID είναι 15 Hz, το BridgeData V2 5 Hz, το google_robot slice 3 fps. Οι συγγραφείς του pi0 περιγράφουν το open-source μέρος του μείγματός τους ως έλεγχο χαμηλής συχνότητας μεταξύ 2 και 10 Hz. Το DatasetRecordConfig του LeRobot έχει προεπιλογές fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50. Μια εκπαιδευμένη σε δεδομένα 5 Hz έμαθε ότι μια ενέργεια καλύπτει 200 ms. Αναπαράγετε την στα 30 Hz και ο βραχίονας σέρνεται. Επαναδειγματοληψία αφελώς και θολώνετε το καρέ όπου κλείνει η λαβή. Επίσης αλληλεπιδρά άσχημα με το : ένα κομμάτι 100 βημάτων είναι 20 δευτερόλεπτα στα 5 Hz, 3.3 στα 30 Hz.

4. Κάμερες

Το BridgeData V2 τυχαιοποίησε δύο θέσεις κάμερας κάθε 50 τροχιές, και η σελίδα του έργου του σημειώνει ότι τα περισσότερα δεδομένα φέρουν ούτως ή άλλως μόνο τη σταθερή προβολή. Το DROID χρησιμοποίησε ρυθμιζόμενες βάσεις ZED 2 συν ένα ZED Mini στον καρπό. Έχετε δύο USB webcams τοποθετημένες με το μάτι. Η θέση της κάμερας δεν είναι μια μεταβλητή ενόχλησης για ένα · είναι μεγάλο μέρος αυτού στο οποίο βασίστηκε ο οπτικός κωδικοποιητής, και τίποτα στη μορφή αρχείου δεν σας λέει ότι οι θέσεις διαφέρουν.

Η παγίδα που τρώει μια μέρα

Τα κομμάτια ταιριάζουν αρκετά καλά για να λειτουργήσουν. Το σύνολο δεδομένων φορτώνεται, η εκπαίδευση ξεκινά, η απώλεια μειώνεται, εμφανίζονται σημεία ελέγχου, τίποτα δεν εμφανίζει σφάλματα. Στη συνέχεια, η πολιτική δεν κάνει τίποτα αναγνωρίσιμο στον βραχίονα και περνάτε μια μέρα κυνηγώντας ένα σφάλμα στο σενάριο εκπαίδευσής σας. Δεν υπάρχει σφάλμα: το μοντέλο έμαθε μια κατανομή καρτεσιανής δράσης για ένα ρομπότ που δεν υπάρχει στο δωμάτιό σας. Ξεκινήστε από η απώλεια μειώνεται, η πολιτική δεν κάνει τίποτα, όχι από τους υπερπαραμέτρους σας.

Τι συμβαίνει όταν προσπαθείτε να συγχωνεύσετε τα δεδομένα ούτως ή άλλως

Το προφανές σχέδιο είναι να συνενώσουμε: μερικές χιλιάδες επεισόδια DROID συν τα δικά σας 50. Το LeRobot αρνείται, και η άρνηση αναφέρει τα τρία πράγματα που διαφέρουν.

  1. 1
    Κατεβάστε το δείγμα των 100 επεισοδίων, όχι το πλήρες 1.7 TB

    2 GB είναι αρκετά για να δείτε τη δομή.

    bash
    pip install gsutil tensorflow tensorflow-datasets
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  2. 2
    Μετατροπή RLDS σε μορφή LeRobot

    Το openx2lerobot ενσωματώνει τους τυπικούς μετασχηματισμούς OXE και προσδιορίζει τον τύπο ρομπότ και τη συχνότητα ελέγχου. Το README το τοποθετεί στο convert.sh.

    bash
    git clone https://github.com/Tavish9/any4lerobot.git
    cd any4lerobot/openx2lerobot
    
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  3. 3
    Διαβάστε το meta/info.json πριν από οτιδήποτε άλλο

    Αυτό το αρχείο αποφασίζει αν η υπόλοιπη μέρα σας θα λειτουργήσει.

    bash
    python -c "import json;d=json.load(open('meta/info.json'));\
    print(d['codebase_version'], d['robot_type'], d['fps']);\
    print(d['features']['action']['shape'], d['features']['observation.state']['shape'])"
  4. 4
    Δοκιμάστε τη συγχώνευση και διαβάστε το σφάλμα

    Η συγχώνευση φορτώνει κάθε σύνολο δεδομένων, και στη συνέχεια το validate_all_metadata ελέγχει τα fps, robot_type και features έναντι του πρώτου στη λίστα, προκαλώντας σφάλμα στην πρώτη αναντιστοιχία.

    bash
    lerobot-edit-dataset \
        --new_repo_id you/mixed \
        --operation.type merge \
        --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']"
    
    # ValueError: Same fps is expected, but got fps=30 instead of 15.

Οι τιμές αναφοράς προέρχονται από όποιο σύνολο δεδομένων αναφέρατε πρώτο, γι' αυτό το μήνυμα παραπονιέται για τα 30 fps σας αντί για τα 15 του DROID. Διορθώστε τα fps και θα συναντήσετε τον έλεγχο robot_type· διορθώστε αυτό και θα συναντήσετε τον έλεγχο χαρακτηριστικών, 7 έναντι 6 για την ενέργεια. Καμία σειρά δεν περνάει, και ο ίδιος έλεγχος εκτελείται κατά την εγγραφή μέσω του sanity_check_dataset_robot_compatibility.

Μην κωδικοποιείτε σταθερά το robot_type για να παρακάμψετε τον έλεγχο

Στην τρέχουσα κύρια έκδοση του LeRobot, τα so100_follower και so101_follower είναι και τα δύο καταχωρημένα σε ένα κοινό SOFollowerRobotConfig, οπότε η συμβολοσειρά από μια πραγματική εγγραφή δεν είναι απαραίτητα αυτή που περιμένετε. Διαβάστε την από το δικό σας meta/info.json, και αντιμετωπίστε έναν έλεγχο που έπρεπε να απενεργοποιήσετε ως έναν έλεγχο που σας έλεγε κάτι.

Τι μεταφέρεται στην πραγματικότητα;

Βάρη, όχι επεισόδια. Κάθε σύγχρονη γενική πολιτική απορρόφησε μέρος αυτού στην προ-εκπαίδευση, και όταν κάνετε fine-tune από ένα δημοσιευμένο σημείο ελέγχου το κληρονομείτε ήδη συμφιλιωμένο από άτομα με την υπολογιστική ισχύ να το κάνουν σωστά. Η εργασία του pi0 είναι ειλικρινής σχετικά με την αναλογία: το 9.1 τοις εκατό του μείγματος προ-εκπαίδευσής του, μετρούμενο σε χρονικά βήματα, είναι δεδομένα ανοιχτού κώδικα, συμπεριλαμβανομένων των OXE, Bridge v2 και DROID. Αυτός ο αριθμός είναι του pi0· το μείγμα κάθε προμηθευτή διαφέρει.

Δημόσια δεδομένα δια-ενσωμάτωσης σε ένα έργο SO-100
Πλεονεκτήματα
  • Οπτικές και γλωσσικές προηγούμενες γνώσεις: ο κωδικοποιητής έχει δει χιλιάδες κουζίνες και κούπες και γνωρίζει σε τι αναφέρεται το «το κόκκινο μπλοκ».
  • Μια προηγούμενη γνώση για τη δομή χειρισμού: προσέγγιση, κλείσιμο, ανύψωση, μεταφορά, απελευθέρωση, ανεξάρτητη από την ενσωμάτωση ακόμα και όταν οι αριθμοί δεν είναι.
  • Ένα γνωστό-καλό σύνολο δεδομένων για δοκιμές. Εάν η εργασία σας δεν μπορεί να υπερπροσαρμοστεί σε 100 επεισόδια DROID, το πρόβλημα είναι η ρύθμισή σας.
  • Σημεία αναφοράς: σε τομείς συνόλων δεδομένων μικρής κλίμακας το RT-1-X πέτυχε 50 τοις εκατό υψηλότερο μέσο ποσοστό επιτυχίας από την αρχική μέθοδο ή το RT-1, και το RT-2-X ξεπέρασε το RT-2 κατά περίπου 3 φορές σε αναδυόμενες δεξιότητες.
Αντισταθμίσεις
  • Καμία χρησιμοποιήσιμη επίβλεψη δράσης. Ένας 7-D Καρτεσιανός στόχος δεν είναι μια 6-D εντολή άρθρωσης.
  • Καμία μεταφορά πόζας κάμερας, και τίποτα στα δεδομένα δεν σας λέει ότι οι πόζες διαφέρουν.
  • Καμία μεταφορά χρονισμού: πηγές 3, 5 και 15 fps έναντι ενός καταγραφέα 30 fps.
  • Καμία μεταφορά λαβής. Ένας Robotiq 2F-85 και μια τυπωμένη σιαγόνα σε ένα STS3215 διαφέρουν σε δύναμη, διαδρομή και δυναμική.
  • Η κλίμακα από μόνη της δεν ήταν αρκετή ούτε για τους συγγραφείς της: στους τομείς μεγάλων συνόλων δεδομένων το RT-1-X δεν ξεπέρασε ένα RT-1 εκπαιδευμένο μόνο σε αυτό το σύνολο δεδομένων.
  • Καμία μείωση στον αριθμό των δικών σας επεισοδίων που χρειάζεστε.
Επίπεδο του μοντέλουΜεταφέρεται;Γιατί
Κωδικοποιητής όρασηςΝαι, έντοναΤα αντικείμενα και οι σκηνές είναι ανεξάρτητα από την ενσωμάτωση
Γλωσσική θεμελίωσηΝαιΟι οδηγίες είναι κείμενο, όχι γεωμετρία
Διατροπική σύντηξηΚυρίωςΕστιάζει στο αντικείμενο που αναφέρεται στην προτροπή
Κωδικοποιητής ιδιοδεκτικότηταςΌχιΗ διάσταση εισόδου και η σημασιολογία των αρθρώσεων διαφέρουν
Κεφαλή δράσηςΌχιΕκπαιδευμένο σε έναν 7-D Καρτεσιανό χώρο στον οποίο δεν βρίσκεστε
Στατιστικά κανονικοποίησηςΌχι, και επικίνδυνοΞένα στατιστικά μετατοπίζουν κάθε εντολή

Αυτός είναι ο λόγος που SmolVLA συμπεριφέρεται διαφορετικά σε έναν βραχίονα χαμηλού κόστους. Η δημοσίευσή του επιλέγει 481 σύνολα δεδομένων κοινότητας από το Hugging Face, φιλτραρισμένα κατά τύπο ενσωμάτωσης, αριθμό επεισοδίων, ποιότητα δεδομένων και κάλυψη καρέ: 22.9K επεισόδια, 10.6M καρέ, αξιολογημένα σε πραγματικούς βραχίονες SO-100 και SO-101. Το μικρό και ταιριαστό υπερτερεί του μεγάλου και αταίριαστου. Συγκρίνετε στο ACT against SmolVLA.

Τρεις δρόμοι που αξίζει να ακολουθήσετε

Διαδρομή Α: λεπτομερής ρύθμιση από ένα σημείο ελέγχου που έχει ήδη απορροφήσει τα δεδομένα

Οι περισσότεροι άνθρωποι θα πρέπει να ακολουθήσουν αυτή τη διαδρομή. Δεν αγγίζετε ποτέ το DROID ή το Open X-Embodiment: επιλέξτε μια πολιτική της οποίας η προ-εκπαίδευση έχει ήδη απορροφήσει δεδομένα δια-ενσωμάτωσης, καταγράψτε τα δικά σας επεισόδια, κάντε λεπτομερή ρύθμιση.

ΠολιτικήΠαράμετροιΕλάχιστα επεισόδιαΜορφή συνόλου δεδομένωνΕπίπεδο GPUΣυμπέρασμαΒασικό σημείο ελέγχου
GR00T N1.7~3 B, ~40 M εκπαιδευμένο σε fine-tuning50LeRobot v2.0 or v2.1A100 or H100 80 GB152 ms ανά βήμαnvidia/GR00T-N1.7-3B
GR00T N1.5~3 B50LeRobot v2.0 or v2.1A100 or H100 80 GB165 msnvidia/GR00T-N1.5-3B
Pi0.5~3 B, PaliGemma backbone50LeRobot v3.0A100 or H100 80 GB485 mslerobot/pi05_base
SmolVLA~450 M30LeRobot v3.0RTX 4090 or any 24 GB245 mslerobot/smolvla_base
ACT~80 M50LeRobot v3.0RTX 4090 or any 24 GB20 msnone, from scratch

Το ACT είναι η ειλικρινής οριακή περίπτωση: χωρίς βασικό μοντέλο, οπότε κανένα από τα δημόσια δεδομένα δεν το φτάνει ποτέ. Δεν είναι αυτόματα μειονέκτημα, καθώς στα 20 ms ανά βήμα ενέργειας είναι το μόνο από τα πέντε που μπορεί να κλείσει έναν γρήγορο βρόχο, όπως η σελίδα του ACT αναφέρει. Επιλέξτε ανά εργασία χρησιμοποιώντας και τα πέντε συγκριτικά, το GR00T N1.7 έναντι του Pi0.5, και τα 332 αποτελέσματα συγκριτικής αξιολόγησης σε 85 μοντέλα στην την αρένα.

Διαδρομή Β: χρησιμοποιήστε το DROID ως διάταξη δοκιμής

Το δείγμα 100 επεισοδίων είναι τα καλύτερα 2 GB που θα κατεβάσετε αυτόν τον μήνα, και όχι για εκπαίδευση. Είναι ένα σύνολο δεδομένων που γνωρίζετε ότι είναι σωστό. Εκτελέστε τον μετατροπέα, τον φορτωτή και μια σύντομη εργασία GPU σε αυτό. Οτιδήποτε αποτύχει είναι ένα σφάλμα υποδομής που βρέθηκε όσο ήταν φθηνό. Η NVIDIA κάνει το ίδιο σε κλίμακα: η κάρτα GR00T N1.7 παραθέτει τέσσερις μετα-εκπαιδευμένες παραλλαγές, για Bridge και Fractal στο SimplerEnv, DROID και LIBERO.

Διαδρομή Γ: καταγράψτε τα δικά σας, σκόπιμα

Τριάντα έως πενήντα ακούγονται λίγα δίπλα στα 76.000, μέχρι να θυμηθείτε ότι τα δικά σας είναι τα μόνα με το δικό σας χέρι, τις δικές σας κάμερες και το δικό σας τραπέζι. Με τις προεπιλογές του LeRobot, 50 επεισόδια αντιστοιχούν σε 100 λεπτά πραγματικού χρόνου. Δείτε , και .

Η σελίδα του εκπαιδευτικού οδηγού καταγραφής της AY-Robots που δείχνει τα βήματα για τη λήψη ενός συνόλου δεδομένων LeRobot από μια συνεδρία τηλεχειρισμού
Η αναλυτική περιγραφή της καταγραφής στο /learn/record-your-first-dataset: το βήμα που τα δημόσια δεδομένα δεν μπορούν να αντικαταστήσουν.

Δύο τρόποι για να περάσετε από τα δημόσια δεδομένα σε μια λειτουργική πολιτική

All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.

  1. 1
    Install LeRobot with the extras the scripts need

    The record and train entry points each declare their own extra.

    bash
    pip install 'lerobot[core_scripts]'   # lerobot-record
    pip install 'lerobot[training]'      # lerobot-train
    pip install gsutil tensorflow tensorflow-datasets
  2. 2
    Get a small, known-good slice

    100 DROID episodes, 2 GB.

    bash
    gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/
  3. 3
    Convert to LeRobot form

    Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.

    bash
    python openx_rlds.py \
        --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \
        --local-dir ~/lerobot_droid100 \
        --repo-id you/droid100_lerobot \
        --use-videos
  4. 4
    Check the version against your trainer

    The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.

    bash
    python src/lerobot/scripts/convert_dataset_v21_to_v30.py \
        --repo-id=you/droid100_lerobot
  5. 5
    Record your own episodes

    Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.

    bash
    lerobot-record \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
      --teleop.type=so100_leader \
      --teleop.port=/dev/ttyACM1 \
      --dataset.repo_id=you/so100_pick_block \
      --dataset.num_episodes=50 \
      --dataset.single_task="Pick up the red block and put it in the bowl"
  6. 6
    Fine-tune on your data only

    Weights from public data, actions from your own. Do not mix the datasets.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=you/so100_pick_block \
      --policy.device=cuda \
      --batch_size=4 \
      --steps=20000
Where the time actually goes

Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.

Η σελίδα λήψης του επιτραπέζιου πελάτη AY-Robots, ο πελάτης που καταγράφει σύνολα δεδομένων μορφής LeRobot από μια συνεδρία τηλεχειρισμού
Ο επιτραπέζιος πελάτης στο /download γράφει σύνολα δεδομένων LeRobot απευθείας από μια συνεδρία τηλεχειρισμού, παρακάμπτοντας τη μετατροπή RLDS.

Τι κοστίζει κάθε διαδρομή

ΔιαδρομήΑποθηκευτικός χώροςΑνθρώπινος χρόνοςΚόστος GPUΠιθανότητα να κινήσει το χέρι σας
Μετατροπή DROID μόνο392 GBημέρες μετατροπής4 to 12 USDπολύ χαμηλή, λάθος χώρος δράσης
DROID συγχωνευμένο με τα επεισόδιά σαςκαι τα δύοblocked by validate_all_metadatan/aκαμία, δεν εκτελείται
SmolVLA, 30 έως 50 δικά σας επεισόδιαλίγα GB100 λεπτά καταγραφής1 to 3 USDυψηλή
GR00T N1.7, 50 δικά σας επεισόδιαλίγα GB100 λεπτά καταγραφής4 to 12 USDυψηλή
ACT από το μηδέν, 50 δικά σας επεισόδιαλίγα GB100 λεπτά καταγραφής1 to 3 USDυψηλή, 20 ms συμπερασματολογία
Δείγμα DROID ως διάταξη δοκιμής2 GBένα απόγευμαμία σύντομη εκτέλεσηυψηλή, ως επικύρωση

Το σημείο είναι η ασυμμετρία: η διαδρομή που δανείζεται τα περισσότερα δεδομένα είναι η πιο ακριβή και η λιγότερο πιθανή να κινήσει το χέρι σας. Λιγότερο από δύο ώρες δικής σας τηλελειτουργίας υπερτερούν ενός terabyte Franka κάποιου άλλου. Δεν έχετε ακόμα ρομποτικό βραχίονα; /live μεταδίδει ζωντανά ένα φυσικό SO-100 χωρίς εγγραφή. Στη συνέχεια, εκπαιδεύστε την πρώτη σας πολιτική, και SmolVLA στο SO-100 για τον συγκεκριμένο οδηγό.

Ένα λογικό προεπιλεγμένο σχέδιο

Κατεβάστε το δείγμα DROID 2 GB και χρησιμοποιήστε το για να αποδείξετε την αρχιτεκτονική σας. Αγνοήστε τα υπόλοιπα 1.7 TB. Καταγράψτε 50 επεισόδια μιας εργασίας με σταθερές κάμερες. Ρυθμίστε λεπτομερώς το SmolVLA πρώτα, επειδή με 30 ελάχιστα επεισόδια σε κάρτα 24 GB είναι το φθηνότερο για επανάληψη, και μετά δοκιμάστε το GR00T N1.7 στα ίδια δεδομένα. Συγκρίνετε στην εργασία σας, όχι σε ένα benchmark.

Καταγράψτε σύνολα δεδομένων που ταιριάζουν ήδη με τον βραχίονά σας

Ο επιτραπέζιος πελάτης γράφει σύνολα δεδομένων μορφής LeRobot απευθείας από μια συνεδρία τηλελειτουργίας: σωστός βραχίονας, σωστός ρυθμός καρέ, σωστός χώρος δράσης. Χωρίς μετατροπή RLDS, χωρίς επαναχαρτογράφηση.

Αποκτήστε τον επιτραπέζιο πελάτη
Μπορώ να εκπαιδεύσω μια πολιτική στο DROID και να την εκτελέσω στο SO-100 μου;

Όχι άμεσα. Στην έκδοση LeRobot, οι ενέργειες DROID είναι εντολές τελικού ενεργοποιητή 7 διαστάσεων σε ένα Franka Panda στα 15 fps. Στο ακατέργαστο RLDS είναι 6 ταχύτητες αρθρώσεων συν μια θέση αρπάγης. Ένα SO-100 λαμβάνει 6 απόλυτες θέσεις αρθρώσεων. Θα χρειαζόσαστε ένα επίπεδο αντίστροφης κινηματικής, και ακόμα και τότε ένας καρπός 5-DoF δεν μπορεί να αναπαράγει αυθαίρετες πόζες 6-DoF.

Μπορώ να αναμείξω επεισόδια DROID ή Bridge με τα δικά μου επεισόδια SO-100;

Όχι. Το validate_all_metadata απαιτεί πανομοιότυπα fps, robot_type και feature schema και εγείρει ValueError στην πρώτη αναντιστοιχία. Και τα τρία διαφέρουν: 15 ή 5 fps έναντι 30, franka ή widowx έναντι του βραχίονά σας, σχήματα δράσης 7 έναντι 6. Η επανεγγραφή των μεταδεδομένων για να περάσει ο έλεγχος δεν διορθώνει τη σημασιολογία.

Είναι άχρηστο το Open X-Embodiment για έναν βραχίονα χαμηλού κόστους τότε;

Όχι, αλλά η αξία του σας φτάνει μέσω προεκπαιδευμένων βαρών, όχι επεισοδίων. Τα ανοιχτού κώδικα σύνολα δεδομένων, συμπεριλαμβανομένων των OXE, Bridge v2 και DROID, αποτελούν το 9.1 τοις εκατό του μείγματος προεκπαίδευσης του pi0, και η NVIDIA διαθέτει παραλλαγές GR00T N1.7 μετα-εκπαιδευμένες σε Bridge, Fractal, DROID και LIBERO. Αυτό που δεν μπορείτε να κάνετε είναι να προσθέσετε αυτά τα επεισόδια στη δική σας καταγραφή.

Ποια πολιτική επωφελείται περισσότερο από τα δημόσια δεδομένα δια-ενσωμάτωσης;

Το Pi0.5 και τα μοντέλα GR00T φέρουν την περισσότερη προεκπαίδευση δια-ενσωμάτωσης, αλλά το SmolVLA συχνά συμπεριφέρεται καλύτερα σε έναν βραχίονα χαμηλού κόστους: το σύνολο προεκπαίδευσής του είναι 481 σύνολα δεδομένων κοινότητας, 22.9K επεισόδια και 10.6M καρέ, αξιολογημένα σε πραγματικούς βραχίονες SO-100 και SO-101. Το ACT είναι το αντίθετο: κανένα βασικό μοντέλο, 20 ms ανά βήμα δράσης.

Πόσα δικά μου επεισόδια χρειάζομαι στην πραγματικότητα;

30 για το SmolVLA, 50 για τα GR00T N1.7, GR00T N1.5, Pi0.5 και ACT. Με τις προεπιλογές του LeRobot των 60 δευτερολέπτων ανά επεισόδιο και 60 δευτερολέπτων επαναφοράς, 50 επεισόδια είναι 100 λεπτά πραγματικού χρόνου. Τα δανεισμένα δεδομένα δια-ενσωμάτωσης δεν μειώνουν αυτούς τους αριθμούς.

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started