दामियाओ एजीवी सेटअप गाइड
अनबॉक्सिंग से लेकर अपने ब्राउज़र से ड्राइविंग तक। अनबॉक्सिंग सुरक्षा, चार्जिंग, सॉफ्टवेयर, टेलीऑपरेशन, स्वायत्त नेविगेशन और आर्म माउंटिंग को कवर करता है।
अनबॉक्सिंग एवं सुरक्षा जांच
एजीवी का निरीक्षण करें और कार्यक्षेत्र तैयार करें
- पैकेजिंग हटाएँ. सभी फोम इंसर्ट, केबल संबंधों और शिपिंग बाधाओं को सावधानीपूर्वक हटा दें। शिपिंग क्षति के लिए पहियों का निरीक्षण करें - सभी चार मेकनम पहियों को हाथ से स्वतंत्र रूप से घूमना चाहिए।
- कनेक्टर्स का निरीक्षण करें. जांचें कि मुख्य नियंत्रक पर सभी केबल कनेक्टर लगे हुए हैं। शिपिंग कंपन कभी-कभी जेएसटी या डीन कनेक्टर को ढीला कर देता है।
- कार्यस्थल की मंजूरी. किसी भी पावर-ऑन से पहले, सभी दिशाओं में कम से कम 2 मीटर खुली जगह साफ़ करें। एजीवी तेजी से गति कर सकता है - प्रथम-गति परीक्षणों के दौरान दर्शकों को पीछे खड़ा होना चाहिए।
- आपातकालीन रोक. चेसिस पर मुख्य पावर कटऑफ स्विच का पता लगाएँ। बिजली चालू करने से पहले जानें कि उस तक कैसे पहुंचा जाए। पहले सत्र के लिए, एक हाथ हर समय कटऑफ के पास रखें।
- सतही जांच. मेकनम पहियों को सही सर्वदिशात्मक प्रदर्शन के लिए एक सपाट, कठोर सतह (कंक्रीट, लकड़ी के फर्श, या चिकनी टाइल) की आवश्यकता होती है। कालीन और असमान सतहें पार्श्व नियंत्रण प्राधिकरण को काफी कम कर देती हैं।
बैटरी चार्जिंग और पावर-ऑन
पहले उपयोग से पहले बैटरी पैक को पूरी तरह चार्ज करें
- चार्जर कनेक्ट करें. AGV चेसिस (आमतौर पर एक बड़ा बैरल कनेक्टर या XT60 पोर्ट) पर बैटरी चार्ज पोर्ट का पता लगाएँ। शामिल बैलेंस चार्जर को कनेक्ट करें। चार्जर को ग्राउंडेड 110/220V आउटलेट में प्लग करें।
- पूरा चार्ज करें. पहले उपयोग से पहले बैटरी को पूरी तरह चार्ज होने दें - प्रारंभिक स्थिति के आधार पर आमतौर पर 2-4 घंटे। पूरा होने पर चार्जर एलईडी हरी हो जाएगी (या चमकना बंद कर देगी)। पहली बार चार्ज करने के दौरान इसे लावारिस न छोड़ें।
- बैटरी वोल्टेज की जाँच करें. चार्ज करने के बाद, बैटरी वोल्टेज को नाममात्र पूर्ण-चार्ज स्तर पर पढ़ना चाहिए (अपने बैटरी पैक लेबल की जांच करें)। यदि सुसज्जित हो तो मल्टीमीटर या ऑनबोर्ड डिस्प्ले का उपयोग करें।
- क्रम पर शक्ति. बैटरी को मुख्य नियंत्रक से कनेक्ट करें। मुख्य पावर स्विच को टॉगल करें। नियंत्रक को 5-10 सेकंड के भीतर बूट होना चाहिए - संकेतक एलईडी स्थिर हो जाएंगे। बूट के दौरान मोशन कमांड न भेजें।
सॉफ्टवेयर और ROS2 नेविगेशन स्टैक
अपने पीसी पर पायथन एजेंट और वैकल्पिक ROS2 पैकेज स्थापित करें
The dami_agent.py स्क्रिप्ट फियरलेस प्लेटफ़ॉर्म और एजीवी हार्डवेयर के बीच प्राथमिक सेतु है। इसके लिए Python 3.8+ और दो पिप पैकेज की आवश्यकता है।
# Install dependencies pip install pyserial websockets # Confirm your USB-to-TTL adapter appears ls /dev/ttyUSB* # Linux # Add your user to the dialout group (Linux) if you get permission errors sudo usermod -aG dialout $USER # Log out and back in for group change to take effect
यूएसबी-टू-टीटीएल एडाप्टर को तार दें: एडाप्टर को कनेक्ट करें TX एजीवी मुख्य नियंत्रक पर पिन करें UART5_RX (पिन PD2). GND को GND से कनेक्ट करें. एडॉप्टर के RX पिन या 5V को AGV से कनेक्ट न करें।
ROS2 एकीकरण के लिए, नेविगेशन स्टैक स्थापित करें:
# ROS2 Humble (Ubuntu 22.04) — adjust for your distro
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam-toolbox
python3 dami_agent.py --session RC-XXXX-XXXX --mock
मॉक मोड सीरियल पोर्ट को खोलना छोड़ देता है। सभी वेबसॉकेट कमांड पार्सिंग, टेलीमेट्री फ़ॉरवर्डिंग और टाइमआउट सुरक्षा तर्क समान रूप से चलते हैं।
टेलीऑपरेशन
फियरलेस प्लेटफॉर्म के माध्यम से अपने ब्राउज़र से एजीवी चलाएं
- खुला platform.roboticscenter.ai, टेलीओप अनुभाग पर नेविगेट करें, और एक नया सत्र बनाएं। सत्र आईडी की प्रतिलिपि बनाएँ (प्रारूप:
RC-XXXX-XXXX). - अपने सीरियल पोर्ट और सत्र आईडी के साथ एजेंट लॉन्च करें:
python3 dami_agent.py \ --session RC-XXXX-XXXX \ --serial-port /dev/ttyUSB0 \ --backend ws://localhost:8000
- एजेंट प्लेटफ़ॉर्म से जुड़ता है, AGV नोड को पंजीकृत करता है
device_type: "mobile_base", और नियंत्रण लूप 30 हर्ट्ज पर शुरू होता है। - अपने ब्राउज़र में सत्र URL खोलें. भेजने के लिए दिशात्मक नियंत्रण का उपयोग करें
moveआदेश. एजीवी एक नियंत्रण-लूप टिक (30 हर्ट्ज पर 33 एमएस) के भीतर प्रतिक्रिया करता है।
एजेंट द्वारा स्वीकृत कमांड प्रकार:
# Move forward along X axis {"type": "move", "axis": "x", "dir": 1} # Move laterally right (Y axis) {"type": "move", "axis": "y", "dir": 1} # Rotate counter-clockwise (Z axis) {"type": "move", "axis": "z", "dir": -1} # Stop all motion immediately {"type": "stop"} # Goal-based delta movement {"type": "goal", "delta": {"x": 0.5, "y": 0.0, "yaw": 0.0}}
गति की गति को समायोजित करने के लिए, का उपयोग करें --amp पैरामीटर (डिफ़ॉल्ट 660, अनुशंसित सीमा 500-760)। उच्च मान तेज़ गति उत्पन्न करते हैं:
python3 dami_agent.py --session RC-XXXX-XXXX --serial-port /dev/ttyUSB0 --amp 500
यदि एजीवी गलत दिशा में चलता है, तो उपयोग करें --invert-x, --invert-y, या --invert-z बिना किसी फ़र्मवेयर परिवर्तन के कुल्हाड़ियों को फ़्लिप करना।
स्वायत्त नेविगेशन सेटअप
ROS2 nav2, SLAM और वेपॉइंट को निम्नलिखित कॉन्फ़िगर करें
स्वायत्त नेविगेशन के लिए, ROS2 विषयों पर ओडोमेट्री और सेंसर डेटा (AGV पर LiDAR या डेप्थ कैमरा से) प्रकाशित करें, फिर पथ नियोजन के लिए nav2 का उपयोग करें।
# Launch SLAM Toolbox for mapping ros2 launch slam_toolbox online_async_launch.py # In a second terminal — launch nav2 with the AGV base footprint ros2 launch nav2_bringup navigation_launch.py \ params_file:=/path/to/your/agv_nav2_params.yaml # Send a navigation goal via CLI ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \ "{pose: {header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.5}, orientation: {w: 1.0}}}}"
डेमियाओ एजीवी के लिए ट्यून करने के लिए मुख्य nav2 पैरामीटर:
- रोबोट_त्रिज्या - एजीवी की आधी-चौड़ाई और सुरक्षा मार्जिन (आमतौर पर 0.4-0.6 मीटर) पर सेट करें।
- max_vel_x / max_vel_y - आपके आधार पर सेट करें
--ampमूल्य और मापी गई अधिकतम गति। रूढ़िवादी ढंग से प्रारंभ करें (0.3 मीटर/सेकेंड)। - max_vel_theta -घूर्णी गति सीमा. धीमी गति से मापें
--amp 400पहले परीक्षण करें. - होलोनोमिक - करने के लिए सेट
trueडीडब्ल्यूबी स्थानीय योजनाकार में पार्श्व गति योजना (मेकेनम/ओमनी पहियों के लिए आवश्यक) को सक्षम करने के लिए।
रोबोट भुजा स्थापित करना
एक OpenArm या DK1 को शीर्ष प्लेट पर बोल्ट करें और दोनों को एक प्लेटफ़ॉर्म सत्र में पंजीकृत करें
दामियाओ एजीवी की शीर्ष प्लेट को मानक रोबोट आर्म बेस फ्लैंज को स्वीकार करने के लिए डिज़ाइन किया गया है। यह चरण भौतिक एकीकरण और फियरलेस प्लेटफ़ॉर्म मल्टी-नोड सत्र सेटअप को कवर करता है।
भौतिक स्थापना
- एजीवी और बांह को बंद करें किसी भी यांत्रिक कार्य से पहले.
- रोबोट आर्म बेस प्लेट को एजीवी टॉप प्लेट माउंटिंग होल के ऊपर रखें। दिए गए M6 सॉकेट-हेड बोल्ट (या हल्के हथियारों के लिए M5) का उपयोग करें। सभी फास्टनरों पर थ्रेड-लॉकिंग कंपाउंड लगाएं।
- आर्म की पावर और CAN/USB केबल को शीर्ष प्लेट में केबल प्रबंधन चैनल के माध्यम से AGV चेसिस डिब्बे तक रूट करें। केबल संबंधों से सुरक्षित करें - बिना खींचे बांह के पूरे कार्यक्षेत्र के लिए पर्याप्त ढीलापन आने दें।
- एजीवी चेसिस में एक अलग बैटरी या विनियमित आपूर्ति से हाथ को बिजली दें। उचित अलगाव के बिना एजीवी ड्राइव बैटरी को आर्म कंट्रोलर के साथ साझा न करें।
मल्टी-नोड प्लेटफ़ॉर्म सत्र
एक ही सत्र आईडी की ओर इशारा करते हुए दोनों एजेंटों को लॉन्च करें। वे स्वतंत्र नोड्स के रूप में पंजीकृत होते हैं और प्लेटफ़ॉर्म दोनों धाराओं को समकालिक रूप से रिकॉर्ड करता है:
# Terminal 1 — AGV agent python3 dami_agent.py \ --session RC-XXXX-XXXX \ --serial-port /dev/ttyUSB0 \ --node-id damiao-base # Terminal 2 — OpenArm agent (example) python3 openarm_agent.py \ --session RC-XXXX-XXXX \ --can-interface can0 \ --node-id openarm-right
फियरलेस प्लेटफ़ॉर्म टेलोप पैनल में, दोनों नोड दिखाई देते हैं। ऑपरेटर एक ही सत्र में एजीवी (अक्ष x/y/z) और आर्म कमांड को स्वतंत्र रूप से मोशन कमांड भेज सकते हैं। एपिसोड रिकॉर्डिंग एक एकल JSONL संग्रह में सभी नोड्स के टेलीमेट्री को कैप्चर करती है - बेस वेलोसिटी और आर्म जॉइंट पोजीशन सहित संपूर्ण मोबाइल हेरफेर प्रक्षेपवक्र, टाइमस्टैम्प द्वारा सिंक्रनाइज़।
कैन बस और मोटर कॉन्फ़िगरेशन
CAN FD बस को कॉन्फ़िगर करें और AGV पर लगे किसी भी डेमियाओ एक्चुएटर्स के लिए मोटर आईडी सेट करें
जब एक OpenArm या DK1 आर्म को AGV टॉप प्लेट पर लगाया जाता है, तो इसके डेमियाओ QDD मोटर्स ऑनबोर्ड कंप्यूटर से CAN FD बस पर संचार करते हैं। इस अनुभाग में बस लाने-ले जाने, मोटर आईडी असाइनमेंट, कमीशनिंग कमांड और एलईडी डायग्नोस्टिक्स शामिल हैं।
कैन-यूटिल्स स्थापित करें
# Install SocketCAN utilities (Ubuntu / Debian)
sudo apt update && sudo apt install -y can-utils
CAN FD इंटरफ़ेस लाएँ
1 Mbit/s नाममात्र + 5 Mbit/s डेटा पर CAN FD सभी नई तैनाती के लिए अनुशंसित मोड है:
# Bring interface down first if already up sudo ip link set can0 down # Configure CAN FD: 1M nominal baud, 5M data baud, FD mode enabled sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on # Bring interface up sudo ip link set can0 up # Verify — output should show "fd on" ip link show can0
यदि आपके पास OpenArm PPA स्थापित है, तो सहायक स्क्रिप्ट इन आदेशों को लपेटती है:
# CAN FD single arm openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000 # Classic CAN 2.0 (legacy / compatibility) openarm-can-configure-socketcan can0
बस की निगरानी करें
# Dump all CAN frames — verify connectivity before sending commands candump -x can0 # Dump with timestamps candump -td can0
मोटर आईडी असाइनमेंट (J1-J8)
CAN बस में प्रत्येक डेमियाओ मोटर में आईडी की एक अद्वितीय जोड़ी होनी चाहिए: एक ट्रांसमीटर आईडी (होस्ट → मोटर) और एक रिसीवर आईडी (मोटर → होस्ट)। आर्म असेंबली से पहले डैमियाओ विंडोज डिबगिंग टूल का उपयोग करके आईडी कॉन्फ़िगर की जाती हैं। मानक ओपनआर्म मैपिंग:
| संयुक्त | मोटर मॉडल | TX आईडी (होस्ट → मोटर) | आरएक्स आईडी (मोटर → होस्ट) |
|---|---|---|---|
| जे1 - बेस रोटेशन | डीएम-जे4340पी-2ईसी | 0x01 | 0x11 |
| जे2 - कंधे की पिच | डीएम-जे4340पी-2ईसी | 0x02 | 0x12 |
| जे3 - कंधे का रोल | डीएम-जे4340पी-2ईसी | 0x03 | 0x13 |
| जे4 - कोहनी की पिच | DM-J4340-2EC | 0x04 | 0x14 |
| जे5-कोहनी घुमाना | DM-J4340-2EC | 0x05 | 0x15 |
| जे6 - कलाई की पिच | DM-J4340-2EC | 0x06 | 0x16 |
| J7 - कलाई का रोल | डीएम-जे4310-2ईसी वी1.1 | 0x07 | 0x17 |
| J8 - ग्रिपर | डीएम-जे4310-2ईसी वी1.1 | 0x08 | 0x18 |
आईडी प्रति CAN बस के लिए अद्वितीय होती हैं, विश्व स्तर पर नहीं। एक द्वि-मैनुअल सेटअप (दो भुजाएँ) एक दूसरी बस का उपयोग करता है - can1 - समान आईडी योजना के साथ।
टेस्ट कमांड भेज सकते हैं
उपयोग cansend निम्न-स्तरीय कमीशनिंग के लिए। प्रतिस्थापित करें 001 लक्ष्य जोड़ की हेक्स टीएक्स आईडी के साथ (उदाहरण के लिए, 002 J2 के लिए)।
## CAN FD commands (use when interface has "fd on") # Enable motor — motor holds position and accepts commands cansend can0 001##1FFFFFFFFFFFFFFFC # Disable motor — motor becomes free-wheeling cansend can0 001##1FFFFFFFFFFFFFFFD # Clear motor error — required before re-enabling after a fault cansend can0 001##1FFFFFFFFFFFFFFFB ## CAN 2.0 equivalents (use when interface is classic CAN, no fd on) cansend can0 001#FFFFFFFFFFFFFFFC # Enable cansend can0 001#FFFFFFFFFFFFFFFD # Disable cansend can0 001#FFFFFFFFFFFFFFFB # Clear error
##1 जब इंटरफ़ेस के साथ कॉन्फ़िगर किया गया था तो CAN FD सिंटैक्स fd on, और एकल # CAN 2.0 के लिए क्लासिक सिंटैक्स। एक ही बस में फ़्रेम प्रकार मिलाने से बस त्रुटियाँ होंगी।
एलईडी स्थिति संकेतक
प्रत्येक डेमियाओ मोटर में एक एकल ऑनबोर्ड एलईडी होती है जो हाउसिंग विंडो के माध्यम से दिखाई देती है:
| एलईडी पैटर्न | राज्य | कार्रवाई आवश्यक है |
|---|---|---|
| हरा (स्थिर) | मोटर सक्षम और तैयार | कोई नहीं - मोटर सक्रिय है और आदेश स्वीकार कर रही है |
| लाल (स्थिर) | मोटर अक्षम (संचालित, सक्षम नहीं) | मोटर को सक्रिय करने के लिए सक्षम कमांड भेजें |
| लाल (चमकती) | मोटर दोष/त्रुटि स्थिति | क्लियर एरर कमांड भेजें, कारण की जांच करें, फिर पुनः सक्षम करें |
सामान्य दोष के कारण: ओवर-करंट (लाभ या भार कम करना), अधिक तापमान (ठंडा करने की अनुमति देना), एनकोडर त्रुटि (रीसीट केबल), अंडर-वोल्टेज (24 वी सिस्टम पर ~18 वी से कम आपूर्ति), कैन बस-ऑफ (समाप्ति और वायरिंग की जांच करना)।
फ़्लैश लिखें चेतावनियाँ
--flash फ़्लैग केवल रैम पर जाएं और फ़्लैश चक्र का उपभोग न करें। ऐसी स्क्रिप्ट से बचें जो मोटर मापदंडों को बार-बार री-फ्लैश करती हैं।