איסוף נתונים
איסוף נתונים Humanoid שונה מהותית מזרימות עבודה בזרוע בלבד. ל-K1 יש 22+ דרגות חופש, חייב לשמור על איזון במהלך הפעלה טלפונית, ודורש לכידה מולטי-מודאלית מסונכרנת. דף זה מכסה את האתגרים, השיטות, פורמט מערך הנתונים ופרוטוקול הבטיחות.
אתגרי איסוף נתונים Humanoid
איסוף הדגמות באיכות גבוהה על דמוי אדם בגודל מלא דורש התמודדות עם אתגרים שלא קיימים על זרועות שולחניות.
איזון במהלך טלאופרציה
ה-K1 חייב לשמור על איזון כל הגוף בזמן שהמפעיל שולט בזרועות. תנועות זרועות מעבירות את מרכז המסה, ומחייבות את בקר התנועה לפצות ברציפות. פקודות זרוע מהירות יכולות לערער את היציבות של הרובוט.
מצב בעל מימדים גבוהים
מצב מפרק גוף מלא כולל 22 DOF פלוס IMU, תנוחת ראש ומצב יד אופציונלי - 30+ ממדים לכל צעד זמן. קבצי מערכי נתונים גדולים משמעותית ממערכי נתונים לזרוע בלבד. תכנון אחסון חיוני.
סנכרון רב מצלמות
משימות אנושיות דורשות בדרך כלל מצלמות אגוצנטריות (מוצבות בראש) ואקסוצנטריות (חיצוניות). סנכרון של זרמי וידאו מרובים עם טלמטריה משותפת ב-50 הרץ+ דורש תכנון קפדני של צינורות.
עייפות מפעיל
טלאופרציה מבוססת VR על כל הגוף היא תובענית פיזית. הפעלות ארוכות מ-30 דקות למפעיל פוגעות משמעותית באיכות ההדגמה. תכנן סיבוב מפעילים בקמפיינים מורחבים של איסוף.
שיטות ניתוח טלפוני עבור דמויות אנושיות
שתי שיטות עיקריות נתמכות לניתוח טלאופוני בפלג הגוף העליון. התנועה נשלטת תמיד באמצעות פקודות מהירות מ-gamepad או באופן אוטונומי.
VR טלאופרציה לכל הגוף מוּמלָץ
משתמש ב-Meta Quest 3 או באוזניות VR דומה כדי לעקוב אחר ראש המפעיל והיד. מפרקי הראש והזרועות של ה-K1 משקפים את תנועות המפעיל בזמן אמת. מספק את ההדגמות הטבעיות והאקספרסיביות ביותר.
הגדרה: Quest 3 + SteamVR, צומת k1_vr_teleop ROS2, מפעיל לובש כפפות למעקב יד.
חֶבִיוֹן: ~20ms ראש, ~40ms זרוע מקצה לקצה.
הטוב ביותר עבור: משימות מניפולציה, בחירה-ומקום, מניפולציה של כל הגוף.
מנהיג-עוקב פלג גוף עליון מִתקַדֵם
שלד חיצוני שני בקנה מידה אנושי או מערכת זרוע מובילה משקף את פלג גופו העליון של העוקב K1. זוויות המפרקים ממפות ישירות ממנהיג לעוקב. אינו דורש חומרת VR.
הגדרה: דורש מערכת זרוע מובילה תואמת (למשל, ערכה דו-ידנית של OpenArm או שלד חיצוני מותאם אישית). צור קשר עם SVRC לקבלת תצורות שותפים.
הטוב ביותר עבור: מניפולציה דו-ידנית מדויקת שבה דיוק המעקב הוא קריטי.
תנועה במהלך ניתוח טלפוני
הפעלה טלפונית של פלג הגוף העליון משולבת בדרך כלל עם תנועה נשלטת על ידי משחק. המפעיל משתמש ב-gamepad אלחוטי כדי לפקד על מהירות ההליכה בזמן שמערכת ה-VR שולטת בזרועות ובראש:
# Launch combined teleop: VR for upper body + gamepad for locomotion
ros2 launch k1_teleop k1_combined_teleop.launch.py \
vr_device:=quest3 \
gamepad:=xbox \
robot_ip:=192.168.10.102
פורמט מערך נתונים לכל הגוף (30+ DoF)
כל פרק מתעד מצב משותף מסונכרן, פריימים של מצלמה ומטא נתונים. הפורמט תואם למערכי נתונים של LeRobot ו- HuggingFace.
מבנה הפרק
episode_000001/
joint_states.npy # [T, 44] — positions, velocities, torques for 22 joints
imu.npy # [T, 6] — accel (3) + gyro (3) from torso IMU
head_pose.npy # [T, 2] — yaw and pitch in radians
head_cam.mp4 # 1280x720 @ 30 fps, head-mounted egocentric
left_cam.mp4 # 1280x720 @ 30 fps, left wrist
right_cam.mp4 # 1280x720 @ 30 fps, right wrist
external_cam.mp4 # 1920x1080 @ 30 fps, fixed external view
timestamps.npy # [T] unix timestamps for joint_states
metadata.json # task name, operator, duration, success label
סכימת מצב משותף (22 מפרקים × 2 ערכים כל אחד)
# joint_states.npy shape: [timesteps, 44]
# Columns: [q0_pos, q0_vel, q1_pos, q1_vel, ..., q21_pos, q21_vel]
# Joint index mapping:
# 0-5: Left leg (hip_pitch, hip_roll, hip_yaw, knee, ankle_pitch, ankle_roll)
# 6-11: Right leg (same order)
# 12: Waist (yaw)
# 13: Head yaw
# 14: Head pitch
# 15-21: Left arm (shoulder_pitch, shoulder_roll, shoulder_yaw,
# elbow_pitch, wrist_pitch, wrist_roll, wrist_yaw)
# 22-28: Right arm (same order)
# Note: total 29 joints in extended K1 config; base K1 has 22
הקלטת הפעלה עם k1_agent.py
# Start the platform agent (streams telemetry to RoboticsCenter)
python k1_agent.py \
--robot-ip 192.168.10.102 \
--platform-url https://fearless-backend-533466225971.us-central1.run.app \
--record \
--task "pick up red block" \
--cameras head_cam,left_wrist,right_wrist,external
# Episodes auto-numbered and saved to ./recordings/
המר לפורמט LeRobot
python convert_k1_to_lerobot.py \
--input-dir ./recordings/ \
--output-dir ./dataset/ \
--repo-id your-username/k1-pick-place
פרוטוקול בטיחות במהלך איסוף נתונים
- ✓ספוטר נדרש בכל עת - אדם מסור אחד עוקב אחר הרובוט ומחזיק בעצירה האלקטרונית. המפעיל הטלפוני אינו יכול לפקח בו-זמנית על הבטיחות.
- ✓3 מ' × 3 מ' היקף ברור - ללא עוברי אורח, ללא כבלים, ללא ציוד באזור התפעולי במהלך כל סשן חי.
- ✓הגבלת משך הפרק: 60 שניות - שמור פרקים קצרים. פרקים קצרים יותר קלים יותר לסינון באיכות ומפחיתים את הסיכון כתוצאה מפעולה ממושכת.
- ✓סיבוב מפעיל של 30 דקות - סובב מפעילים טלפונים כל 30 דקות בהפעלות VR. עייפות פוגעת באיכות ההדגמה ומגבירה את שיעורי השגיאות.
- ✓בטל מיד והזן DAMP על כל חוסר יציבות - אם ה-K1 מראה תנודה או סחיפה בלתי צפויים, לחץ על העצירה האלקטרונית והפעל מחדש מ-DAMP. אל תנסה להתייצב באופן ידני.
- ✓רישום את כל האירועים - לתעד כל נפילות, כמעט נפילות או אפיזודות שהופסקו. נתונים אלה שימושיים לסינון איכות הנתונים ולשיפור נהלי הבטיחות.
רשימת איכות פרק
סקור כל פרק לפני הוספתו למערך ההדרכה שלך. הפגנות באיכות ירודה ידרדרו את המדיניות שלך.
- ✓המשימה הושלמה בהצלחה מקצה לקצה (ללא השלמות חלקיות בנתוני ההדרכה)
- ✓הרובוט שמר על איזון יציב לאורך כל הדרך - ללא מעידות, תנודות או טלטלות פיצוי
- ✓לכל זרמי המצלמה יש פריימים שלמים ללא קטעים שנפלו
- ✓חותמות זמן של מצב משותף הן רציפות (ללא פערים > 25 אלפיות השנייה בהקלטה של 40 הרץ)
- ✓ההפגנה חלקה ומכוונת - לא ממהרת, לא מתוקנת יתר על המידה
- ✓האובייקט וסצנת המשימה נראים לפחות בשני זרמי מצלמה לאורך כל הדרך