מדריך ההתקנה של Damiao AGV
מ-Unboxing ועד נהיגה מהדפדפן שלך. מכסה את בטיחות unboxing, טעינה, תוכנה, הפעלה טלפונית, ניווט אוטונומי והרכבת זרועות.
ביטול ארגז ובדיקת בטיחות
בדוק את ה-AGV והכן את סביבת העבודה
- הסר את האריזה. הסר בזהירות את כל תוספות הקצף, קשרי הכבלים ומעצורי המשלוח. בדוק את הגלגלים לאיתור נזקי משלוח - כל ארבעת גלגלי המקאנום צריכים להסתובב בחופשיות ביד.
- בדוק מחברים. בדוק שכל מחברי הכבלים בבקר הראשי תקועים. רטט למשלוח משחרר מדי פעם מחברי JST או Deans.
- פינוי סביבת עבודה. לפני כל הפעלה, פנה לפחות 2 מ' של שטח פתוח לכל הכיוונים. ה-AGV יכול להאיץ במהירות - עוברי אורח צריכים לעמוד מאחור במהלך בדיקות תנועה ראשונה.
- עצירת חירום. אתר את מתג ניתוק החשמל הראשי במארז. דע כיצד להגיע אליו לפני ההפעלה. במהלך הפגישה הראשונה, שמור יד אחת ליד החתך כל הזמן.
- בדיקת פני השטח. גלגלי Mecanum דורשים משטח שטוח וקשיח (בטון, ריצוף עץ או אריח חלק) לביצועים נכונים בכל הכיוונים. שטיח ומשטחים לא אחידים מפחיתים את סמכות השליטה הצידית באופן משמעותי.
טעינת סוללה והפעלה
טען את ערכת הסוללות במלואה לפני השימוש הראשון
- חבר את המטען. אתר את יציאת טעינת הסוללה על מארז AGV (בדרך כלל מחבר חבית גדול או יציאת XT60). חבר את מטען האיזון הכלול. חבר את המטען לשקע 110/220V מוארק.
- טען עד מלא. אפשר לסוללה להיטען במלואה לפני השימוש הראשון - בדרך כלל 2-4 שעות בהתאם למצב הראשוני. נורית המטען תהפוך לירוקה (או תפסיק להבהב) בסיום. אין להשאיר ללא השגחה במהלך הטעינה הראשונה.
- בדוק את מתח הסוללה. לאחר הטעינה, מתח הסוללה צריך לקרוא ברמה הנומינלית של טעינה מלאה (בדוק את תווית ערכת הסוללה שלך). השתמש במולטימטר או בצג המשולב אם מצויד.
- רצף הפעלה. חבר את הסוללה לבקר הראשי. החלף את מתג ההפעלה הראשי. הבקר אמור לאתחל תוך 5-10 שניות - נוריות חיווי יתייצבו. אל תשלח פקודות תנועה במהלך האתחול.
ערימת ניווט תוכנה ו-ROS2
התקן את סוכן Python וחבילות ROS2 אופציונליות במחשב האישי שלך
ה dami_agent.py הסקריפט הוא הגשר העיקרי בין הפלטפורמה ללא פחד לחומרת ה-AGV. זה דורש Python 3.8+ ושתי חבילות pip.
# 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
חוט את מתאם ה-USB ל-TTL: חבר את המתאם TX הצמד לבקר הראשי של AGV UART5_RX (pin 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
מצב מדומה מדלג על פתיחת יציאה טורית. כל ניתוח הפקודות של WebSocket, העברת הטלמטריה והלוגיקה הבטיחותית של זמן קצוב פועלים באופן זהה.
טלאופרציה
הסע את ה-AGV מהדפדפן שלך דרך הפלטפורמה ללא פחד
- לִפְתוֹחַ platform.roboticscenter.ai, נווט למקטע Teleop וצור הפעלה חדשה. העתק את מזהה הפגישה (פורמט:
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 הרץ. - פתח את כתובת האתר של ההפעלה בדפדפן שלך. השתמש בפקדי הכיוון כדי לשלוח
moveפקודות. ה-AGV מגיב בתוך לולאת בקרה אחת (33 אלפיות השנייה ב-30 הרץ).
סוגי פקודות המקובלים על ידי הסוכן:
# 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
אם ה-AGV נע בכיוון הלא נכון, השתמש --invert-x, --invert-y, או --invert-z להעיף צירים ללא כל שינוי קושחה.
הגדרת ניווט אוטונומית
הגדר את ROS2 nav2, SLAM ומעקב אחר נקודת ציון
עבור ניווט אוטונומי, פרסם נתוני מרחק וחיישן (ממצלמת LiDAR או מצלמת עומק ב-AGV) לנושאים ROS2, ולאחר מכן השתמש ב-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 לכוונון עבור Damiao AGV:
- רובוט_רדיוס - מוגדר לחצי הרוחב של ה-AGV בתוספת מרווח בטיחות (בדרך כלל 0.4-0.6 מ').
- max_vel_x / max_vel_y - הגדר על סמך שלך
--ampערך ומהירות מרבית נמדדת. התחל באופן שמרני (0.3 מ'/שניה). - max_vel_theta - הגבלת מהירות סיבוב. למדוד עם איטי
--amp 400בדיקה ראשונה. - הולונומי - הגדר ל
trueבמתכנן המקומי של DWB כדי לאפשר תכנון תנועה לרוחב (נדרש עבור גלגלי mecanum/omni).
הרכבת זרוע רובוט
הברג OpenArm או DK1 לצלחת העליונה ורשום את שניהם בסשן פלטפורמה אחד
הצלחת העליונה של Damiao AGV נועדה לקבל אוגנים סטנדרטיים של בסיס זרועות הרובוט. שלב זה מכסה את האינטגרציה הפיזית ואת הגדרת הפגישה מרובת הצמתים של Fearless Platform.
הרכבה פיזית
- כבה את ה-AGV והזרוע לפני כל עבודה מכנית.
- מקם את לוחית הבסיס של זרוע הרובוט מעל חורי ההרכבה של לוחית ה-AGV העליונה. השתמש בבורגי ראש שקע M6 המסופקים (או M5 עבור זרועות קלות יותר). החל תרכובת נעילה של חוט על כל המחברים.
- נתב את כבלי החשמל וה-CAN/USB של הזרוע למטה דרך ערוץ ניהול הכבלים בצלחת העליונה אל תא המרכב של AGV. אבטח באמצעות קשרי כבלים - אפשר מספיק רפיון עבור סביבת העבודה המלאה של הזרוע מבלי למשוך.
- הפעל את הזרוע מסוללה נפרדת או אספקה מווסתת בשלדת AGV. אל תשתף את סוללת כונן 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
בחלונית Teleop Fearless Platform, שני הצמתים מופיעים. מפעילים יכולים לשלוח פקודות תנועה ל-AGV (ציר x/y/z) ופקודות זרוע באופן עצמאי באותה הפעלה. הקלטת פרקים לוכדת את כל הטלמטריה של הצמתים בארכיון JSONL יחיד - מסלול המניפולציה הנייד השלם, כולל מהירות הבסיס ומיקומי מפרקי הזרוע, מסונכרנים לפי חותמת זמן.
תצורת CAN אוטובוס ומנוע
הגדר את אוטובוס ה-CAN FD והגדר מזהי מנוע עבור כל מפעילי Damiao שמורכבים על ה-AGV
כאשר זרוע OpenArm או DK1 מותקנת על הלוח העליון של AGV, מנועי ה-Damiao QDD שלו מתקשרים דרך אפיק CAN FD מהמחשב המובנה. סעיף זה עוסק בהעלאת אוטובוס, הקצאת מזהה מנוע, פקודות הפעלה ואבחון LED.
התקן can-utils
# Install SocketCAN utilities (Ubuntu / Debian)
sudo apt update && sudo apt install -y can-utils
העלה את ממשק CAN FD
CAN FD בקצב נומינלי של 1 Mbit/s + 5 Mbit/s נתונים הוא המצב המומלץ עבור כל הפריסה החדשה:
# 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)
כל מנוע Damiao באוטובוס CAN חייב להיות בעל זוג מזהים ייחודי: מזהה משדר (מארח → מנוע) ומזהה מקלט (מנוע → מארח). מזהים מוגדרים באמצעות כלי ניפוי באגים Damiao Windows לפני הרכבת הזרוע. מיפוי OpenArm רגיל:
| מְשׁוּתָף | דגם מוטורי | מזהה TX (מארח → מנוע) | מזהה RX (מנוע → מארח) |
|---|---|---|---|
| J1 - סיבוב בסיס | DM-J4340p-2EC | 0x01 | 0x11 |
| J2 - גובה הכתפיים | DM-J4340p-2EC | 0x02 | 0x12 |
| J3 - גלגול כתף | DM-J4340p-2EC | 0x03 | 0x13 |
| J4 - גובה המרפק | DM-J4340-2EC | 0x04 | 0x14 |
| J5 - גלגול מרפקים | DM-J4340-2EC | 0x05 | 0x15 |
| J6 - גובה פרק כף היד | DM-J4340-2EC | 0x06 | 0x16 |
| J7 - גלגול פרק כף היד | DM-J4310-2EC V1.1 | 0x07 | 0x17 |
| J8 - תפסן | DM-J4310-2EC V1.1 | 0x08 | 0x18 |
המזהים הם ייחודיים לכל אוטובוס CAN, לא גלובלי. הגדרה דו-ידנית (שתי זרועות) משתמשת באוטובוס שני - can1 - עם אותה ערכת זיהוי.
יכול לשלוח פקודות בדיקה
לְהִשְׁתַמֵשׁ cansend עבור הזמנה ברמה נמוכה. לְהַחלִיף 001 עם מזהה המשושה TX של מפרק המטרה (למשל, 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. ערבוב סוגי מסגרת באותו אוטובוס יגרום לשגיאות אוטובוס.
מחווני מצב LED
לכל מנוע Damiao יש LED מובנה יחיד הנראה מבעד לחלון הבית:
| תבנית LED | מְדִינָה | נדרשת פעולה |
|---|---|---|
| ירוק (יציב) | מנוע מופעל ומוכן | אין - המנוע פעיל ומקבל פקודות |
| אדום (יציב) | מנוע מושבת (מופעל, לא מופעל) | שלח את הפקודה Enable כדי להפעיל את המנוע |
| אדום (מהבהב) | תקלה במנוע / מצב שגיאה | שלח פקודת נקה שגיאה, חקור את הסיבה ולאחר מכן הפעל מחדש |
גורמי תקלה נפוצים: זרם יתר (הפחתת רווחים או עומס), טמפרטורת יתר (אפשר קירור), שגיאת מקודד (השבה מחדש של כבלים), תת-מתח (הספק מתחת ל-18 V על מערכת 24 V), כיבוי CAN (בדוק סיום וחיווט).
אזהרות כתיבה בפלאש
--flash דגל עבור ל-RAM בלבד ואל תצרוך מחזורי פלאש. הימנע מסקריפטים המהבהבים שוב ושוב פרמטרים מנועיים.