הקלטת הפגנות מישוש

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

מדוע נתונים מישוש משפרים את למידת הרובוטים

חזון אומר מדיניות אֵיפֹה התפסן הוא. פרופריוספציה אומרת את זה מַה הַמִרְחָק האצבעות סגורות. אף אחד לא מספר את זה האם האחיזה יציבה. מדיניות המאומנת על חזון + נתונים משותפים בלבד חייבת ללמוד להסיק את איכות התפיסה בעקיפין - מתנועת אובייקט, מגבלות כוח זרוע או ניסוי וטעייה במהלך ההפצה. הוספת חישה מישוש מספקת פיקוח של מצב מגע ישיר: המדיניות מקבלת אות אמת המבדיל בין אחיזה בטוחה לזו המועדת להחלקה בכל שלב של כל הפגנה. זה משפיע במיוחד על אובייקטים הניתנים לעיוות, שקוף או בגדלים משתנים, שבהם הערכת איכות התפיסה החזותית אינה אמינה.

הגדרת חומרה להקלטה מסונכרנת

מתקן הקלטה רב-מודאלי מלא דורש שלוש שכבות חומרה, כולן מסונכרנות לשעון משותף:

  1. זרוע רובוט - מספק מיקומי מפרקים, מהירויות ותנוחת קצה של 100-500 הרץ באמצעות USB או Ethernet. השתמש ב-API של חותמת הזמן של ה-SDK של הזרוע, לא בזמן המערכת, כדי לקבל מצב משותף עם חותמת חומרה.
  2. חיישני Paxini Gen3 - מחובר לרכזת USB מופעלת המותקן על פרק כף היד של הרובוט. כל מסגרת מסומנת על ידי המחשב המארח בזמן הפסקת USB (רזולוציה של ננו-שניות, ריצוד של <0.5 אלפיות השנייה).
  3. מַצלֵמָה - מצלמה אחת מותקנת בפרק כף היד (אופציונלי: מצלמה עילית אחת). השתמש במצלמת USB או GigE עם סנכרון טריגר חומרה, או מצלמה מופעלת על ידי תוכנה עם זמן אחזור ידוע. הקלט במהירות 30-60 פריימים לשנייה.

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

# Complete synchronized recording session מ-paxini.sync ייבוא MultiSourceRecorder מקליט = MultiSourceRecorder( arm=arm_interface, sensor=paxini.Sensor(), camera=camera_interface, output_dir="./demo_recordings/", episode_prefix="תפוס_מקום" ) recorder.start_episode() # ... perform the manipulation demo ... recorder.end_episode() # saves episode_000.hdf5

פורמט ערכת נתונים - סכמת LeRobot מורחבת

צינור איסוף הנתונים של Paxini Gen3 מרחיב את פורמט הנתונים הסטנדרטי של LeRobot HDF5 עם ערוצים מישוש נוספים. הכלים הקיימים של LeRobot (טעינת נתונים, הדמיה, הדרכת מדיניות) נשארים תואמים לחלוטין - המפתחות החדשים פשוט מתעלמים מצינורות שאינם משתמשים בהם.

מפתח HDF5 צוּרָה מָקוֹר
תצפית.מצב(ת, 7)עמדות מפרקי הזרוע + רוחב האחיזה
תצפית.תמונות.פרק כף היד(T, H, W, 3)מצלמת שורש כף היד (uint8 RGB)
פְּעוּלָה(ת, 7)יעד עמדות מפרקים + פקודת תפסן
observation.tactile.pressure_map(T, 8, 8)מערך לחץ Paxini Gen3 (kPa, float32)
observation.tactile.total_force_n(ט,)סך הכוח הנורמלי לכל מסגרת (ניוטון)
observation.tactile.in_contact(ט,)דגל איש קשר בוליאני לכל מסגרת
observation.tactile.contact_centroid(ת, 2)מרכז קשר (שורה, קול) לכל מסגרת
meta/timestamps_ns(ט,)חותמות זמן של ננו-שניות עבור כל הערוצים

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

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

הפעל כיול בסיס לפני כל הפעלה שִׂיחָה sensor.calibrate() עם האוחז פתוח ופרוק. זה מאפס את המגע העצמי של האצבע ואת מתח הכבלים. כיול מחדש אם הזרוע ממוקמת מחדש באופן משמעותי.
ודא שאירועי איש קשר מתאימים לווידאו סקור 5 פרקים ב-Visualizer של הנתונים לפני איסוף מערך הנתונים המלא שלך. ה in_contact הקצה העולה צריך לעלות בקנה אחד עם הרגע הנראה לעין של מגע קצה אצבע עם אובייקט בהזנת המצלמה. פיגור של יותר מ-20 אלפיות השנייה מציין בעיה ביישור חותמת זמן.
כסה את כל טווח הכוח בהפגנות שלך שאפו לרשום אחיזה ברמות אחיזה קלות, בינוניות ויוצקות. אם כל ההדגמות שלך משתמשות בכוח האחיזה המקסימלי, המדיניות לא תלמד לווסת את לחץ המגע. שנה את משקל האובייקט ואת התאימות בין פרקים.
סמן והסר אירועי החלקה מנתוני האימון פרקים שבהם האובייקט מחליק באמצע האחיזה אבל ההדגמה ממשיכה לתוצאה מוצלחת מכילים אות פיקוח סותרים. השתמש ב-SDK's paxini.annotate.flag_slip_events(episode) כדי לסמן אותם באופן אוטומטי לבדיקה.
בדוק את רווית החיישן אִם pressure_map.max() מגיע ל-600 kPa בכל פרק, החיישן רווי. הפחת את כוח האחיזה או השתמש בגרסה של כף היד (לחץ שיא נמוך יותר לכל טקסל) לאחיזה כבדה יותר.

אימון מדיניות עם תשומות מישוש

כדי להוסיף מישוש כאופן תצפית ב-ACT או ב-Diffusion Policy, הרחב את תצורת התצפית כך שתכלול את מפת הלחץ או הסקלר המצטבר (total_force_n). מפת הלחץ מספקת מידע מרחבי מלא אך מוסיפה 64 מצופים לכל פריים לכל חיישן; הסקלר קל יותר לשילוב ומספיק למשימות איכות אחיזה בינארית.

# ACT config snippet — add tactile to observation space מקשי_תצפית: - תצפית.מצב # joint positions - תצפית.תמונות.שורש כף היד # camera - observation.tactile.total_force_n # scalar - observation.tactile.pressure_map # optional: full map # Normalize tactile observations נורמליזציה_טקטיל: total_force_n: {ממוצע: 2.5, תקן: 1.8} לחץ_מפת: {ממוצע: 12.0, תקן: 45.0} # kPa statistics from your dataset

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

להקשר רחב יותר על אסטרטגיות איסוף נתוני ידיים מיומנות, ראה את מדריך ידיים מיומנות.