संपूर्ण एसडीके इंस्टॉलेशन संदर्भ यहां है हार्डवेयर/dk1/सॉफ़्टवेयर. यह इकाई द्वि-मैनुअल-विशिष्ट कॉन्फ़िगरेशन चरणों को शामिल करती है जो आपके द्वारा ओपनआर्म के लिए किए गए सिंगल-आर्म एसडीके इंस्टॉल से आगे जाते हैं।

DK1 SDK स्थापित करें

DK1 SDK OpenArm SDK से अलग है। OpenArm पैकेज के साथ DK1 आर्म्स चलाने का प्रयास न करें - फ़र्मवेयर प्रोटोकॉल भिन्न है।

# Create an isolated virtual environment for DK1 work Python3 -m venv ~/dk1-env स्रोत ~/dk1-env/bin/सक्रिय करें # Install the DK1 SDK and bimanual extensions पिप इंस्टाल dk1-sdk[द्विमैन्युअल] # Verify the install पायथन -सी "आयात dk1; प्रिंट(dk1.__version__)" # Expected: 0.4.0 or higher

लीडर/फॉलोअर पेयरिंग को कॉन्फ़िगर करें

SDK एक YAML कॉन्फ़िगरेशन फ़ाइल को पढ़ता है जो यह बताता है कि कौन सा सीरियल डिवाइस लीडर है और कौन से डिवाइस दो अनुयायी हथियार हैं। आपको डिवाइस पथ को सही क्रम में निर्दिष्ट करना होगा - एसडीके भूमिका असाइनमेंट का स्वतः पता नहीं लगाता है।

# Generate the default bimanual config file dk1-config जनरेट --मोड बाईमैनुअल --आउटपुट ~/dk1-config.yaml # Open and edit the config — set your actual device paths नैनो ~/dk1-config.yaml

में प्रमुख क्षेत्र dk1-config.yaml:

नेता: डिवाइस: /dev/ttyUSB2 # the leader controller arm बॉड्रेट: 1000000 अनुयायी_बाएँ: डिवाइस: /dev/ttyUSB0 # left follower arm बॉड्रेट: 1000000 अनुयायी_अधिकार: डिवाइस: /dev/ttyUSB1 # right follower arm बॉड्रेट: 1000000 सिंक: आवृत्ति_hz: 50 # joint state sync rate विलंबता_सहनशीलता_एमएस: 5 # max allowed sync lag
डिवाइस पथ असाइनमेंट: भौतिक भुजा से मानचित्रण /dev/ttyUSBN यूएसबी पोर्ट ऑर्डर पर निर्भर करता है, जो रिबूट के बीच बदल सकता है। स्थिर उपनाम बनाने के लिए, उपयोग करें udev डिवाइस क्रमांक पर नियम अंकित हैं। दौड़ना udevadm info /dev/ttyUSB0 प्रत्येक हाथ के लिए क्रम ढूँढना और उसमें नियम बनाना /etc/udev/rules.d/99-dk1.rules. इस पर विस्तार से चर्चा की गई है हार्डवेयर/dk1/सॉफ़्टवेयर.

पायथन कनेक्शन टेस्ट - दोनों भुजाएँ

कॉन्फ़िगरेशन को संपादित करने के बाद, एक कनेक्शन परीक्षण चलाएं जो सभी तीन उपकरणों का एक साथ अभ्यास करता है:

dk1 से BimanualRobot आयात करें रोबोट = BimanualRobot(config_path='~/dk1-config.yaml') रोबोट.कनेक्ट() # Print joint states for both arms — should update at 50Hz रेंज में i के लिए(10): राज्य = robot.get_joint_states() प्रिंट(f"बाएं: {[f'{j:.2f}' for j in state.left]}") प्रिंट(f"दाएं: {[f'{j:.2f}' for j in state.right]}") प्रिंट करें ("---") रोबोट.डिस्कनेक्ट()

एक सफल रन सुसंगत, स्थिर मानों के साथ संयुक्त राज्य सरणियों के 10 जोड़े प्रिंट करता है। यदि आपको NaN मान, एक टाइमआउट त्रुटि, या प्रति हाथ 6 से कम संयुक्त मान दिखाई देते हैं, तो अपनी कॉन्फ़िगरेशन फ़ाइल में डिवाइस पथ असाइनमेंट की जांच करें।

समन्वयन सत्यापन

इस इकाई में सबसे महत्वपूर्ण जाँच यह सत्यापित करना है कि नेता की गति बिना किसी स्पष्ट अंतराल के समकालिक अनुयायी प्रतिक्रिया उत्पन्न करती है:

dk1 से BimanualRobot, लीडरफ़ॉलोअरसेशन आयात करें रोबोट = BimanualRobot(config_path='~/dk1-config.yaml') सत्र = लीडरफॉलोअर सत्र (रोबोट) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately सत्र.प्रारंभ() इनपुट('रोकने के लिए एंटर दबाएँ...') सत्र.रोकें()

लीडर के हाथ को एक जोड़ पर 30° चाप के माध्यम से धीरे-धीरे घुमाएँ। दोनों अनुयायी भुजाओं को बिना किसी देरी के एक साथ चलना चाहिए। यदि एक अनुयायी दूसरे से आधे सेकंड से अधिक पीछे रहता है, तो जाँच करें latency_tolerance_ms स्लो आर्म के USB कनेक्शन को सेट करना और सत्यापित करना।

सामान्य त्रुटियाँ और सुधार

गलती कारण हल करना
SerialException: device not found कॉन्फ़िगरेशन में गलत डिवाइस पथ, या यूएसबी कनेक्ट नहीं है दौड़ना ls /dev/ttyUSB* और कॉन्फ़िगरेशन पथ अद्यतन करें। भौतिक USB कनेक्शन जांचें.
SyncTimeoutError: follower_right दायां अनुयायी हाथ विलंबता सहनशीलता के भीतर प्रतिक्रिया नहीं दे रहा है बढ़ोतरी latency_tolerance_ms 10 तक, या कोई भिन्न USB पोर्ट आज़माएँ। क्षति के लिए केबल की जाँच करें।
कनेक्ट होने के बाद संयुक्त सभी शून्य बताता है सर्वो सक्षम नहीं है - आर्म स्टैंडबाय मोड में है पुकारना robot.enable_servos() संयुक्त स्थिति पढ़ने से पहले, या पहले वेब यूआई के माध्यम से सक्षम करें।
एक अनुयायी दर्पण है, दूसरा स्थिर है कॉन्फ़िगरेशन में लीडर को केवल एक फ़ॉलोअर के साथ जोड़ा जाता है दोनों को सत्यापित करें follower_left और follower_right YAML कॉन्फ़िगरेशन में सेट हैं।

इकाई 2 पूर्ण जब...

DK1 SDK स्थापित है और dk1.__version__ 0.4.0 या उच्चतर रिटर्न देता है। कनेक्शन परीक्षण 50Hz पर दोनों भुजाओं के लिए स्थिर संयुक्त स्थिति मान प्रिंट करता है। जब आप एक नेता/अनुयायी सत्र शुरू करते हैं और नेता की बांह को हिलाते हैं, तो दोनों अनुयायी भुजाएं बिना किसी स्पष्ट अंतराल के गति को प्रतिबिंबित करती हैं। आपने नेता की बांह पर कम से कम तीन अलग-अलग संयुक्त गतियों के साथ इसे सत्यापित किया है।