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

התקן את ה-DK1 SDK

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

# Create an isolated virtual environment for DK1 work python3 -m venv ~/dk1-env מקור ~/dk1-env/bin/activate # Install the DK1 SDK and bimanual extensions התקנת pip dk1-sdk[דו-ידנית] # Verify the install python -c "import dk1; print(dk1.__version__)" # Expected: 0.4.0 or higher

הגדר את צימוד מנהיג/עוקבים

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

# Generate the default bimanual config file dk1-config create --mode bimanual --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths nano ~/dk1-config.yaml

שדות המפתח ב dk1-config.yaml:

מנהיג: התקן: /dev/ttyUSB2 # the leader controller arm שיא: 1000000 follower_left: התקן: /dev/ttyUSB0 # left follower arm שיא: 1000000 follower_right: מכשיר: /dev/ttyUSB1 # right follower arm שיא: 1000000 סנכרון: frequency_hz: 50 # joint state sync rate חביון_סובלנות_ms: 5 # max allowed sync lag
הקצאת נתיב מכשיר: המיפוי מזרוע פיזית ל /dev/ttyUSBN תלוי בסדר יציאת USB, שיכול להשתנות בין אתחול מחדש. כדי ליצור כינויים יציבים, השתמש udev כללים הממוקמים במספר הסידורי של המכשיר. לָרוּץ udevadm info /dev/ttyUSB0 כדי למצוא את הסדרה לכל זרוע וליצור חוקים ב /etc/udev/rules.d/99-dk1.rules. זה מכוסה בפירוט ב חומרה/dk1/תוכנה.

מבחן חיבור פייתון - שתי הזרועות

לאחר עריכת התצורה, הרץ מבחן חיבור שמפעיל את כל שלושת המכשירים בו זמנית:

מ-dk1 ייבוא BimanualRobot רובוט = BimanualRobot(config_path="~/dk1-config.yaml") robot.connect() # Print joint states for both arms — should update at 50Hz עבור i בטווח (10): state = robot.get_joint_states() print(f"Left: {[f'{j:.2f}' for j in state.left]}") print(f"Right: {[f'{j:.2f}' for j in state.right]}") print("---") robot.disconnect()

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

אימות סנכרון

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

מ-dk1 ייבוא BimanualRobot, LeaderFollowerSession רובוט = BimanualRobot(config_path="~/dk1-config.yaml") session = LeaderFollowerSession(רובוט) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately session.start() input ("לחץ על Enter כדי לעצור...") session.stop()

הזיזו את זרוע המנהיג באיטיות דרך קשת של 30 מעלות על מפרק בודד. שתי זרועות העוקבים צריכות לנוע ביחד ללא עיכוב גלוי. אם אחד העוקבים מפגר מאחורי השני ביותר מחצי שנייה, בדוק את latency_tolerance_ms הגדרה ואמת את חיבור ה-USB של הזרוע האיטית.

שגיאות ותיקונים נפוצים

שְׁגִיאָה לִגרוֹם לִקְבּוֹעַ
SerialException: device not found נתיב התקן שגוי בתצורה, או שה-USB לא מחובר לָרוּץ ls /dev/ttyUSB* ועדכן נתיבי תצורה. בדוק חיבורי USB פיזיים.
SyncTimeoutError: follower_right זרוע העוקבת הימנית לא מגיבה בתוך סובלנות חביון לְהַגדִיל latency_tolerance_ms עד 10, או נסה יציאת USB אחרת. בדוק את הכבל לאיתור נזק.
Joint מציין את כל האפסים לאחר החיבור Servos לא מופעלים - הזרוע נמצאת במצב המתנה שִׂיחָה robot.enable_servos() לפני קריאת מצבים משותפים, או הפעל תחילה דרך ממשק המשתמש באינטרנט.
עוקב אחד משקף, אחר נייח המנהיג מותאם רק לעוקב אחד בתצורה אמת את שניהם follower_left ו follower_right מוגדרים בתצורת YAML.

יחידה 2 השלם כאשר...

ה-DK1 SDK מותקן ו dk1.__version__ מחזיר 0.4.0 ומעלה. בדיקת החיבור מדפיסה ערכי מצב מפרקים יציבים עבור שתי הזרועות ב-50Hz. כאשר אתה מתחיל סשן מנהיג/עוקב ומניע את זרוע המנהיג, שתי זרועות העוקבים משקפות את התנועה ללא השהייה מורגשת. אימתת זאת עם לפחות 3 תנועות מפרקים שונות על הזרוע המובילה.