איסוף נתונים

ה-SO-101 היא אחת מזרועות איסוף הנתונים הנפוצות ביותר בקהילת LeRobot. מדריך זה מכסה הכל, החל מחיבורי חומרה ועד הקלטת פרקים ודחיפת מערך הנתונים שלך אל HuggingFace.

לפני ההקלטה

הגדרת חומרה להקלטה

הגדרת איסוף הנתונים SO-101 פשוטה יותר מזרועות CAN-bus - הכל פועל באמצעות USB. הנה מה להתחבר.

📷

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

מצלמת USB מכוונת אל סביבת העבודה מלמעלה או מהצד. התקן במיקום קבוע - אל תעביר אותו בין פרקים. לְאַמֵת: ls /dev/video*

🔒

מצלמת פרק כף היד (אופציונלי)

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

🔌

זרוע עוקב (USB טורי)

הזרוע שמבצעת פעולות. התחבר באמצעות בקר סרוו USB. אמת יציאה עם ls /dev/ttyUSB*

👤

Leader Arm (USB טורי)

SO-101 שני במצב תאימות - הזז אותו עם היד שלך כדי להניע את העוקב. חבר ביציאת USB שנייה. נותן הדגמות באיכות הגבוהה ביותר.

ללא ROS, ללא מנהלי התקנים של ליבה: שלא כמו הגדרות CAN-bus, מחסנית איסוף הנתונים SO-101 פועלת כולה על גבי USB טורי. אתה יכול להקליט במחשב נייד MacBook או Windows - אין צורך באובונטו.

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

תהליך הקלטה שלב אחר שלב

1

ודא שהכיול עדכני

הפעל כיול לפני כל הפעלה חדשה אם הזרוע פורקה או הוזזה. לִרְאוֹת תוכנה → כיול.

python -m lerobot.scripts.control_robot \
  --robot.type=so101 --robot.port=/dev/ttyUSB0 \
  --control.type=calibrate
2

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

python -c "
import cv2
for i in range(4):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f'Camera {i}: OK')
    cap.release()
"
3

העבר את הזרוע למצב הבית

הנח את זרוע העוקבת בעמדת הבית (ארוכה במלואה, גורם הקצה מצביע קדימה). אפס את זרוע המנהיג לאותו מיקום לפני תחילת הטלאופ.

4

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

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

5

התחל להקליט LeRobot

python -m lerobot.scripts.control_robot \
  --robot.type=so101 \
  --robot.port=/dev/ttyUSB1 \
  --robot.leader_arms.main.type=so101 \
  --robot.leader_arms.main.port=/dev/ttyUSB0 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/so101-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick the red block and place it in the bin" \
  --control.warmup_time_s=3 \
  --control.reset_time_s=8

LeRobot מבקש לפני כל פרק. במהלך החימום ניתן לכוונן את האחיזה בזרוע המוביל לפני תחילת ההקלטה.

6

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

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

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

7

דחף אל HuggingFace Hub

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

SO-101 פורמט מערך נתונים

ה-SO-101 משתמש בפורמט הנתונים הסטנדרטי של LeRobot / HuggingFace - סכימה זהה לזרועות OpenArm, Koch ושאר זרועות LeRobot. משמעות הדבר היא כי מערכי הנתונים שלך תואמים ישירות לאקו-סיסטם האימון המלא של LeRobot.

סכימת נתוני פרק

שדות בכל פרק קובץ פרקט
תצפית.מצב float32[6] עמדות מפרקים במעלות (6 DOF - 5 מפרקים + תפסן)
תצפית.תמונות.* נתיב וידאו התייחסות למסגרת בקובץ וידאו MP4 לכל מצלמה
פְּעוּלָה float32[6] כוון עמדות משותפות מזרוע המנהיג
חותמת זמן לצוף64 חותמת זמן של יוניקס בשניות
frame_index int64 מספר מסגרת בתוך פרק
episode_index int64 מספר פרק בתוך מערך הנתונים
הבא.בוצע bool נכון בפריים האחרון של כל פרק
task_index int64 אינדקס לטבלת חיפוש תיאור משימה

הערות ספציפיות ל-SO-101

חלל הפעולה SO-101 משתמש במיקומי משותף במעלות (יחידות סרוו של Feetech), לא ברדיאנים. בעת ערבוב מערכי נתונים SO-101 ו-OpenArm לאימון חוצה פלטפורמות, נרמל את שניהם לרדיאנים תחילה באמצעות הנתונים הסטטיסטיים ב meta/stats.json.

אבטחת איכות

רשימת רשימת איכות לנתונים שנאספו

הפעל את זה לאחר כל סשן הקלטה לפני שאתה דוחף ל-Hub.

  • 1
    אורך הפרקים עקבי פרקים באורך חריג פירושם בדרך כלל שהמפעיל עצר, התפסן החליק או שההקלטה נקטעה. שמור בטווח של ±30% מהאורך החציוני.
  • 2
    אין קוצים במהירות סרוו לסרוו STS3215 יש רוחב פס מוגבל - עליות מהירות פתאומיות פנימה observation.state להצביע על נשירת אוטובוס טורי. תמחק את הפרקים האלה.
  • 3
    מסגרות מצלמה מיושרות עם נתונים משותפים בדוק שחותמות זמן של מצלמה וחותמות זמן משותפות נמצאות בטווח של 20 אלפיות השנייה זה מזה. השהייה טורית של USB יכולה לגרום להיסחפות במהלך הקלטות ארוכות. סנכרן מחדש את המצלמות כל 100 פרקים.
  • 4
    המעקב אחר זרועות המנהיג היה חלק אם העוקב פיגר באופן ניכר במהלך ההקלטה (עקב חביון טורי USB), תוויות הפעולה יועברו זמן מהתצפיות. הפעל מחדש כדי לבדוק.
  • 5
    סצנת המשימות הייתה עקבית בתחילת כל פרק חפצים באותו מיקום וכיוון. יכולת החזרה הנמוכה של ה-SO-101 (לעומת זרועות CAN) הופכת את זה לחשוב במיוחד - השונות בתנאים ההתחלתיים פוגעת באימון המדיניות.
  • 6
    פתיחה/סגירה של התפס מתועד בבירור מצב האחיזה SO-101 הוא משותף 6. ודא שאירועי אחיזה מראים מעבר ברור של מיקום משותף (פתוח → סגור) בנתונים, לא סחיפה הדרגתית.
השלב הבא

הכשרת מדיניות מתוך מערך הנתונים שלך

לאחר שהמערך שלך יעבור בדיקות איכות, אמן את ACT או Diffusion Policy עם LeRobot.

רכבת ACT

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

מדיניות פיזור רכבות

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

מערכי נתונים של קהילה: ל-SO-101 יש את אחד מאוספי הנתונים הקהילתיים הגדולים ביותר במערכת האקולוגית של LeRobot. לפני איסוף הנתונים שלך, בדוק HuggingFace Hub עבור מערכי נתונים קיימים של SO-101 - ייתכן שתוכל לכוונן ממערך נתונים בסיסי קיים ולחסוך זמן הקלטה.

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

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