איסוף נתונים דו ידני

ה-DK1 מתוכנן מהיסוד לאיסוף נתוני טל-פעולה דו-ידניים. מדריך זה מכסה חיווט של זרועות ומצלמות, הפעלת הליך הקלטת מנהיג/עוקב, הבנת סכימת הנתונים הדו-ידניים והכנת הנתונים שלך לאימון ACT.

לפני ההקלטה

חיבורי חומרה להקלטה דו-ידנית

הקלטה דו-ידנית דורשת יותר חיבורים מאשר הגדרה של זרוע אחת. אמת כל חיבור לפני הפעלת LeRobot - חסר חיבור באמצע הסשן משחית את הפרק.

🥇

זרוע לידר (Dynamixel XL330)

USB-C מזרוע מובילה למחשב המארח. זרוע זו מזיזה על ידי ידו של המפעיל. השתמש בכבל קצר (1 מ') כדי למנוע ניתוקים מקריים במהלך הטלאופ. לְאַמֵת: ls /dev/ttyACM0

🥈

זרוע עוקב (DM4340 + מתח)

USB-C מזרוע העוקבת למחשב המארח בתוספת ספק כוח DC. זרוע העוקבים דורשת מתח חיצוני - לעולם אל תפעל על כוח USB בלבד. לְאַמֵת: ls /dev/ttyACM1

📷

מצלמת שורש כף היד (זרוע עוקב)

חבר מצלמת רשת USB למכשיר הקצה של זרוע העוקבים. זוהי מצלמת המניפולציה העיקרית. חיבור דרך USB 3.0. לְאַמֵת: ls /dev/video0

📖

מצלמה עילית / סביבת עבודה

מצלמה קבועה מעל סביבת העבודה הדו-ידנית בגובה של ~70 ס"מ, בזווית של 30 מעלות למטה. לוכד את שתי הזרועות בו זמנית. יציאת USB 3.0 שנייה. לְאַמֵת: ls /dev/video2

קריטי: סנכרון דו-ידני. עם שתי זרועות ושתי מצלמות, סנכרון הוא גורם איכות הנתונים החשוב ביותר עבור ה-DK1. LeRobot חותמת את כל הזרמים משעון המחשב המארח. כדי למזער את הטיית חותמת הזמן: (1) השתמש בבקרי USB נפרדים עבור מצלמות וזרועות, (2) השתמש ברכזות USB 3.0 עם שעונים יציבים, (3) הגדר את מושל המעבד למצב ביצועים. יעד: <5 אלפיות השנייה הטיה בין כל ארבעת הזרמים. חוסר סנכרון של 10 אלפיות השנייה בין מצבי זרוע שמאל וימין עלול לגרום לכשלים באימון ACT במשימות עשירות במגע.

זרימת עבודה של הקלטה

נוהל הקלטה של ​​מנהיג/עוקב

בצע את השלבים הבאים עבור כל סשן הקלטה של ​​DK1. להליך הדו-ידני יש כמה שלבים נוספים בהשוואה לאיסוף בזרוע אחת.

1

בדיקת בטיחות לפני הפגישה

נקה את מרחב העבודה המשותף בין שתי הזרועות (1.5 מ' × 1 מ'). ודא ששתי הזרועות מגיעות לסביבת העבודה המשותפת ללא התנגשות. בדוק E-stop לפני ההקלטה. לִרְאוֹת דף בטיחות.

2

חבר ואמת את שתי הזרועות

# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)

# Quick connection test
python -m lerobot.scripts.control_robot \
  --robot.type=bi_dk1_follower \
  --robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
  --control.type=none
3

אמת עדכוני מצלמה

שתי המצלמות חייבות להיות זורמות לפני הפעלת LeRobot. מצלמה חסרה תפיק בשקט פרקים עם מסגרות תמונה אפסיות.

python3 -c "
import cv2
for i in [0, 2]:
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        ret, frame = cap.read()
        print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
    else:
        print(f'Camera {i}: FAILED')
    cap.release()
"
4

הזז את הזרועות לעמדת ההתחלה

הזז ידנית את זרוע המנהיג לעמדת הטלאופ ההתחלתית. זרוע העוקבים תשקף אותו. החזק את זרוע המנהיג יציב למשך 2-3 שניות כדי לאשר סנכרון לפני תחילת תקופת החימום.

5

הגדר את סצנת המשימה

הנח חפצים בעמדות התחלה עקביות עבור שתי הזרועות. צלם את תצורת ההתחלה. עבור משימות דו-ידניות, סמן מיקומים מדויקים עם סרט - עקביות הסצנה היא אפילו קריטית יותר מכיוון ששני מסלולי הזרוע חייבים להיות תואמים.

6

התחל הקלטה דו-ידנית של LeRobot

source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
  --robot.type=bi_dk1_follower \
  --robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick up block with left arm, place in bin with right arm" \
  --control.warmup_time_s=5 \
  --control.reset_time_s=15

השתמש ארוך יותר reset_time_s עבור משימות דו-ידניות - איפוס שתי זרועות והסצנה לוקחת יותר זמן מאשר הגדרות של זרוע אחת.

7

סקירה והשמעה חוזרת של פרקים

לאחר כל אצווה של 10 פרקים, שידור חוזר וסקור לפני שתמשיך. שימו לב לתיאום זרועות - פיגור בין זרועות שמאל לימין יופיע כריצוד בתנועות של העוקב.

python -m lerobot.scripts.visualize_dataset \
  --repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --episode_index=0
8

דחף אל HuggingFace Hub

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/dk1-bimanual-pick-place-v1
פורמט ערכת נתונים

תבנית ערכת נתונים של LeRobot עבור דו-ידנית (DK1)

סכימת הנתונים הדו-ידניים של DK1 מכפילה את שדות המצב המשותפים בהשוואה להקלטה בזרוע אחת. כל פרק מכיל תצפיות מסונכרנות מזרועות המנהיג והעוקבים יחד עם כל המצלמות.

מבנה ספריות

your-username/dk1-bimanual-pick-place-v1/
├── meta/
│   ├── info.json          # Dataset metadata, fps, shapes, robot_type
│   ├── episodes.jsonl     # Per-episode metadata (task, length, outcome)
│   └── stats.json         # Min/max/mean/std for all fields
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet
│       └── ...
└── videos/
    └── chunk-000/
        ├── observation.images.wrist_cam/
        │   ├── episode_000000.mp4
        │   └── ...
        └── observation.images.overhead_cam/
            └── ...

סכימת נתוני פרק (דו-ידנית)

שדות בכל פרק Parquet file — DK1 bimanual (bi_dk1_follower)
תצפית.מצב float32[16] עמדות מפרקי זרוע עוקבות: 7 DOF + תפסן × 2 זרועות = 16 ערכים
observation.state_left float32[8] זרוע עוקב שמאל: 7 עמדות מפרקים + תפסן אחד (רד)
observation.state_right float32[8] זרוע עוקב ימין: 7 עמדות מפרקים + תפסן אחד (רד)
פְּעוּלָה float32[16] עמדות יעד עבור שתי זרועות העוקבים (מ-Lead Arm Teleop)
action_left float32[8] עמדות יעד לזרוע שמאל ממנהיג
action_right float32[8] עמדות יעד לזרוע ימין ממנהיג
observation.images.wrist_cam נתיב וידאו מצלמה מותקנת על פרק כף היד על קצה זרוע העוקבת
observation.images.overhead_cam נתיב וידאו מצלמה עילית קבועה המציגה סביבת עבודה דו-ידנית מלאה
חותמת זמן לצוף64 חותמת זמן מארח PC Unix. שתי הזרועות נדגמו בחותמת זמן זו.
arm_sync_delta_ms לצוף32 DK1 ספציפי: דלתא זמן בין קריאות מצב זרוע שמאל וימין. סמן פרקים שבהם זה עולה על 10 אלפיות השנייה.
הבא.בוצע bool נכון בפריים האחרון של פרק
אבטחת איכות

רשימת רשימת איכות להדגמות דו-ידניות

למערכי נתונים דו-ידניים יש דרישות איכות מחמירות יותר מנתונים עם זרוע אחת. תיאום לקוי בין זרועות הוא הגורם המוביל לכישלון אימון מדיניות DK1.

  • 1
    דלתא סנכרון זרוע היא מתחת ל-10 אלפיות השנייה בדוק את arm_sync_delta_ms שדה בכל פרק. קוצים מעל 10 אלפיות השנייה מצביעים על מחלוקת באוטובוס USB או על חבילה טורית שנפלה. מחק פרקים עם דלתות גבוהות מתמשכות.
  • 2
    אין תנודת זרוע עוקב במהלך מגע סקור את מסלולי זרועות העוקבים בנקודות מגע (אחיזה, מסירה, מיקום). תנודה מופיעה כרעש בתדר גבוה בפנים observation.state. הפחת רווחי PD אם קיימים. לִרְאוֹת פתרון תקלות תוכנה.
  • 3
    שתי הזרועות משלימות את המשימה באותו פרק עבור משימות דו-ידניות, פרק תקף רק אם שתי הזרועות משלימות את המשימות המשנה שהוקצו להן. אם הזרוע השמאלית הצליחה אך הזרוע הימנית שמטה את האובייקט, סמן את הפרק ככשל ומחק או ציין אותו.
  • 4
    לא חסרות מסגרות מצלמה שני זרמי המצלמה חייבים לכלול את המספר הצפוי של פריימים. פריימים חסרים משתי המצלמות משחיתות את הקלט של המדיניות הוויזו-מוטורית. תבדוק עם lerobot.scripts.visualize_dataset.
  • 5
    סצנת המשימות אופסה באופן זהה בין הפרקים יש לאפס את סביבת העבודה של שתי הזרועות עבור כל פרק. מיקום האובייקט, תצורת תחילת הזרוע וזוויות המצלמה חייבות להתאים. השתמש בתצורת ההתחלה המצולמת בתור התייחסות.
  • 6
    אורך הפרק עקבי כל הפרקים המוצלחים צריכים להיות בטווח של ±25% מהאורך החציוני. למשימות דו-ידניות לרוב יש שונות גבוהה יותר ממשימות בזרוע אחת, אך יש לבטל חריגים קיצוניים (3× חציון).
  • 7
    הנתונים הסטטיסטיים של מערכי הנתונים הם סימטריים עבור שתי הזרועות ב meta/stats.json, בדוק את זה action_left ו action_right נתונים סטטיסטיים סבירים עבור גיאומטריית המשימה שלך. אם זרוע אחת מראה אפס שונות, הזרוע הזו לא זזה - בדוק הקצאות יציאה.
  • 8
    סגנון הדגמת הטלאופ עקבי כל ההדגמות צריכות להשתמש באותו נתיב גישה, אסטרטגיית אחיזה וטכניקת מסירה. אסטרטגיות מעורבות מייצרות הפצות פעולה רב-מודאליות המבלבלות את אימון ה-ACT. השתמש באופרטור יחיד לכל גרסת משימה.
השלב הבא

אימון ACT על מערך הנתונים הדו-ידני שלך

לאחר שהמערך שלך יעבור את רשימת הבדיקה האיכותית, אמן את ACT או Diffusion Policy ישירות עם LeRobot. ACT מומלץ למשימות דו-ידניות של DK1 - חיזוי הפעולה הנתח שלו מטפל בתיאום בין זרועות טוב יותר מאשר מדיניות חד-שלבית.

רכבת ACT (מומלץ לדו-ידנית)

python -m lerobot.scripts.train \
  --policy.type=act \
  --dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --policy.chunk_size=100 \
  --policy.n_action_steps=100 \
  --training.num_epochs=5000 \
  --training.batch_size=8 \
  --output_dir=outputs/dk1-act-bimanual

מדיניות פיזור רכבת (למשימות עשירות באנשי קשר)

python -m lerobot.scripts.train \
  --policy.type=diffusion \
  --dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
  --training.num_epochs=8000 \
  --output_dir=outputs/dk1-diffusion-bimanual

תעמיק יותר: קרא את המלא סקירת צינור איסוף נתונים בספריית הרובוטיקה לטיפול יסודי במבנה הפרק, עיבוד גרסאות של מערך נתונים, אסטרטגיות סנכרון והרכב מערכי נתונים דו ידני רב משימות.

ערכת נתונים מוכנה? התחל אימון.

דחוף את מערך הנתונים הדו-ידניים שלך אל HuggingFace והתחל לאמן ACT.