दामियाओ एजीवी सेटअप गाइड

अनबॉक्सिंग से लेकर अपने ब्राउज़र से ड्राइविंग तक। अनबॉक्सिंग सुरक्षा, चार्जिंग, सॉफ्टवेयर, टेलीऑपरेशन, स्वायत्त नेविगेशन और आर्म माउंटिंग को कवर करता है।

भारी उपकरण - टीम लिफ्ट की आवश्यकता है। दामियाओ एजीवी एक महत्वपूर्ण मोबाइल प्लेटफॉर्म है। अनबॉक्सिंग और पुनः स्थिति निर्धारण के लिए हमेशा दो-व्यक्ति लिफ्ट का उपयोग करें। पहली बार बिजली चालू करने से पहले सुनिश्चित करें कि कार्यस्थल में सभी दिशाओं में कम से कम 2 मीटर की दूरी हो।
1

अनबॉक्सिंग एवं सुरक्षा जांच

एजीवी का निरीक्षण करें और कार्यक्षेत्र तैयार करें

टीम लिफ्ट की आवश्यकता है. एजीवी को उसके शिपिंग क्रेट से बाहर निकालने के लिए दो लोगों का उपयोग करें। नीचे की चेसिस से लिफ्ट करें - कभी भी पहियों या किसी उभरे हुए इलेक्ट्रॉनिक्स से नहीं। ब्रेक लगाकर (यदि सुसज्जित हो) प्लेटफ़ॉर्म को समतल, सख्त सतह पर रखें।
  1. पैकेजिंग हटाएँ. सभी फोम इंसर्ट, केबल संबंधों और शिपिंग बाधाओं को सावधानीपूर्वक हटा दें। शिपिंग क्षति के लिए पहियों का निरीक्षण करें - सभी चार मेकनम पहियों को हाथ से स्वतंत्र रूप से घूमना चाहिए।
  2. कनेक्टर्स का निरीक्षण करें. जांचें कि मुख्य नियंत्रक पर सभी केबल कनेक्टर लगे हुए हैं। शिपिंग कंपन कभी-कभी जेएसटी या डीन कनेक्टर को ढीला कर देता है।
  3. कार्यस्थल की मंजूरी. किसी भी पावर-ऑन से पहले, सभी दिशाओं में कम से कम 2 मीटर खुली जगह साफ़ करें। एजीवी तेजी से गति कर सकता है - प्रथम-गति परीक्षणों के दौरान दर्शकों को पीछे खड़ा होना चाहिए।
  4. आपातकालीन रोक. चेसिस पर मुख्य पावर कटऑफ स्विच का पता लगाएँ। बिजली चालू करने से पहले जानें कि उस तक कैसे पहुंचा जाए। पहले सत्र के लिए, एक हाथ हर समय कटऑफ के पास रखें।
  5. सतही जांच. मेकनम पहियों को सही सर्वदिशात्मक प्रदर्शन के लिए एक सपाट, कठोर सतह (कंक्रीट, लकड़ी के फर्श, या चिकनी टाइल) की आवश्यकता होती है। कालीन और असमान सतहें पार्श्व नियंत्रण प्राधिकरण को काफी कम कर देती हैं।
2

बैटरी चार्जिंग और पावर-ऑन

पहले उपयोग से पहले बैटरी पैक को पूरी तरह चार्ज करें

  1. चार्जर कनेक्ट करें. AGV चेसिस (आमतौर पर एक बड़ा बैरल कनेक्टर या XT60 पोर्ट) पर बैटरी चार्ज पोर्ट का पता लगाएँ। शामिल बैलेंस चार्जर को कनेक्ट करें। चार्जर को ग्राउंडेड 110/220V आउटलेट में प्लग करें।
  2. पूरा चार्ज करें. पहले उपयोग से पहले बैटरी को पूरी तरह चार्ज होने दें - प्रारंभिक स्थिति के आधार पर आमतौर पर 2-4 घंटे। पूरा होने पर चार्जर एलईडी हरी हो जाएगी (या चमकना बंद कर देगी)। पहली बार चार्ज करने के दौरान इसे लावारिस न छोड़ें।
  3. बैटरी वोल्टेज की जाँच करें. चार्ज करने के बाद, बैटरी वोल्टेज को नाममात्र पूर्ण-चार्ज स्तर पर पढ़ना चाहिए (अपने बैटरी पैक लेबल की जांच करें)। यदि सुसज्जित हो तो मल्टीमीटर या ऑनबोर्ड डिस्प्ले का उपयोग करें।
  4. क्रम पर शक्ति. बैटरी को मुख्य नियंत्रक से कनेक्ट करें। मुख्य पावर स्विच को टॉगल करें। नियंत्रक को 5-10 सेकंड के भीतर बूट होना चाहिए - संकेतक एलईडी स्थिर हो जाएंगे। बूट के दौरान मोशन कमांड न भेजें।
लीपो बैटरी सुरक्षा। यदि AGV LiPo बैटरी पैक (सामान्य) का उपयोग करता है, तो कभी भी न्यूनतम सेल वोल्टेज (आमतौर पर 3.0V/सेल) से नीचे डिस्चार्ज न करें। एक सप्ताह से अधिक समय तक उपयोग न होने पर 50% चार्ज पर स्टोर करें। फुले हुए या क्षतिग्रस्त LiPo को कभी भी चार्ज न करें।
3

सॉफ्टवेयर और 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
पहले हार्डवेयर के बिना परीक्षण करें. AGV को जोड़ने से पहले पूर्ण कमांड पाइपलाइन को सत्यापित करने के लिए एजेंट को मॉक मोड में चलाएँ:
python3 dami_agent.py --session RC-XXXX-XXXX --mock मॉक मोड सीरियल पोर्ट को खोलना छोड़ देता है। सभी वेबसॉकेट कमांड पार्सिंग, टेलीमेट्री फ़ॉरवर्डिंग और टाइमआउट सुरक्षा तर्क समान रूप से चलते हैं।
4

टेलीऑपरेशन

फियरलेस प्लेटफॉर्म के माध्यम से अपने ब्राउज़र से एजीवी चलाएं

  1. खुला platform.roboticscenter.ai, टेलीओप अनुभाग पर नेविगेट करें, और एक नया सत्र बनाएं। सत्र आईडी की प्रतिलिपि बनाएँ (प्रारूप: RC-XXXX-XXXX).
  2. अपने सीरियल पोर्ट और सत्र आईडी के साथ एजेंट लॉन्च करें:
    python3 dami_agent.py \
      --session RC-XXXX-XXXX \
      --serial-port /dev/ttyUSB0 \
      --backend ws://localhost:8000
  3. एजेंट प्लेटफ़ॉर्म से जुड़ता है, AGV नोड को पंजीकृत करता है device_type: "mobile_base", और नियंत्रण लूप 30 हर्ट्ज पर शुरू होता है।
  4. अपने ब्राउज़र में सत्र 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 बिना किसी फ़र्मवेयर परिवर्तन के कुल्हाड़ियों को फ़्लिप करना।

5

स्वायत्त नेविगेशन सेटअप

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 डीडब्ल्यूबी स्थानीय योजनाकार में पार्श्व गति योजना (मेकेनम/ओमनी पहियों के लिए आवश्यक) को सक्षम करने के लिए।
नेविगेशन के दौरान टेलीपॉप सुरक्षा। स्वायत्त नेविगेशन परीक्षण के दौरान फियरलेस प्लेटफ़ॉर्म टेलोप पैनल को खुला रखें। एजेंट के 300 एमएस कमांड टाइमआउट का मतलब है कि यदि एनएवी2 लक्ष्यों को प्रकाशित करना बंद कर देता है, तो एजीवी स्वतः बंद हो जाएगा - भौतिक कटऑफ स्विच के अलावा एक सॉफ्टवेयर-स्तरीय सुरक्षा जाल प्रदान करेगा।
6

रोबोट भुजा स्थापित करना

एक OpenArm या DK1 को शीर्ष प्लेट पर बोल्ट करें और दोनों को एक प्लेटफ़ॉर्म सत्र में पंजीकृत करें

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

भौतिक स्थापना

  1. एजीवी और बांह को बंद करें किसी भी यांत्रिक कार्य से पहले.
  2. रोबोट आर्म बेस प्लेट को एजीवी टॉप प्लेट माउंटिंग होल के ऊपर रखें। दिए गए M6 सॉकेट-हेड बोल्ट (या हल्के हथियारों के लिए M5) का उपयोग करें। सभी फास्टनरों पर थ्रेड-लॉकिंग कंपाउंड लगाएं।
  3. आर्म की पावर और CAN/USB केबल को शीर्ष प्लेट में केबल प्रबंधन चैनल के माध्यम से AGV चेसिस डिब्बे तक रूट करें। केबल संबंधों से सुरक्षित करें - बिना खींचे बांह के पूरे कार्यक्षेत्र के लिए पर्याप्त ढीलापन आने दें।
  4. एजीवी चेसिस में एक अलग बैटरी या विनियमित आपूर्ति से हाथ को बिजली दें। उचित अलगाव के बिना एजीवी ड्राइव बैटरी को आर्म कंट्रोलर के साथ साझा न करें।

मल्टी-नोड प्लेटफ़ॉर्म सत्र

एक ही सत्र आईडी की ओर इशारा करते हुए दोनों एजेंटों को लॉन्च करें। वे स्वतंत्र नोड्स के रूप में पंजीकृत होते हैं और प्लेटफ़ॉर्म दोनों धाराओं को समकालिक रूप से रिकॉर्ड करता है:

# 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 संग्रह में सभी नोड्स के टेलीमेट्री को कैप्चर करती है - बेस वेलोसिटी और आर्म जॉइंट पोजीशन सहित संपूर्ण मोबाइल हेरफेर प्रक्षेपवक्र, टाइमस्टैम्प द्वारा सिंक्रनाइज़।

यह भी देखें. The ओपनआर्म 101 हार्डवेयर हब और यह DK1 द्वि-मैनुअल किट पेज में आर्म-विशिष्ट सेटअप गाइड शामिल हैं। उपरोक्त बढ़ते चरण से पहले आर्म सेटअप पूरा करें।
7

कैन बस और मोटर कॉन्फ़िगरेशन

CAN FD बस को कॉन्फ़िगर करें और AGV पर लगे किसी भी डेमियाओ एक्चुएटर्स के लिए मोटर आईडी सेट करें

जब एक OpenArm या DK1 आर्म को AGV टॉप प्लेट पर लगाया जाता है, तो इसके डेमियाओ QDD मोटर्स ऑनबोर्ड कंप्यूटर से CAN FD बस पर संचार करते हैं। इस अनुभाग में बस लाने-ले जाने, मोटर आईडी असाइनमेंट, कमीशनिंग कमांड और एलईडी डायग्नोस्टिक्स शामिल हैं।

एजीवी ड्राइवट्रेन बनाम आर्म मोटर्स। AGV गति को UART5/DBUS के माध्यम से नियंत्रित किया जाता है - CAN नहीं। यहां वर्णित CAN FD बस विशेष रूप से AGV पर लगे किसी भी रोबोट आर्म पेलोड में डेमियाओ QDD मोटर्स के लिए है। AGV ड्राइवट्रेन नियंत्रक को CAN फ़्रेम भेजने का प्रयास न करें।

कैन-यूटिल्स स्थापित करें

# 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ईसी0x010x11
जे2 - कंधे की पिचडीएम-जे4340पी-2ईसी0x020x12
जे3 - कंधे का रोलडीएम-जे4340पी-2ईसी0x030x13
जे4 - कोहनी की पिचDM-J4340-2EC0x040x14
जे5-कोहनी घुमानाDM-J4340-2EC0x050x15
जे6 - कलाई की पिचDM-J4340-2EC0x060x16
J7 - कलाई का रोलडीएम-जे4310-2ईसी वी1.10x070x17
J8 - ग्रिपरडीएम-जे4310-2ईसी वी1.10x080x18

आईडी प्रति 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 वी से कम आपूर्ति), कैन बस-ऑफ (समाप्ति और वायरिंग की जांच करना)।

फ़्लैश लिखें चेतावनियाँ

फ़्लैश लिखने की सीमा: ~10,000 चक्र प्रति मोटर। मोटर आईडी और पैरामीटर स्टोरेज आंतरिक फ्लैश मेमोरी का उपयोग करता है। CAN आईडी और अंशांकन पैरामीटर सेट करें एक बार कमीशनिंग के दौरान और उन्हें स्थायी रूप से छोड़ दें। रनटाइम पैरामीटर परिवर्तन इसके बिना लागू किए गए --flash फ़्लैग केवल रैम पर जाएं और फ़्लैश चक्र का उपभोग न करें। ऐसी स्क्रिप्ट से बचें जो मोटर मापदंडों को बार-बार री-फ्लैश करती हैं।
आईडी कॉन्फ़िगर करने के लिए डेमियाओ विंडोज़ टूल की आवश्यकता होती है। CAN आईडी का उपयोग करके सेट किया जाना चाहिए डिबगिंग_टूल्स_v.1.6.8.8.exe - आईडी टकराव से बचने के लिए एक समय में केवल एक ही मोटर कनेक्ट करें। देखना पूर्ण मोटर संदर्भ चरण-दर-चरण निर्देशों के लिए.
पूर्ण विवरण देखें → अक्सर पूछे जाने वाले प्रश्न और समुदाय → डेवलपर विकी →

मदद की ज़रूरत है?

समुदाय से पूछें या आउटपुट के साथ एसवीआरसी सहायता से संपर्क करें dami_agent.py --mock और आपका सीरियल पोर्ट पथ।