מדריך ההתקנה של Damiao AGV

מ-Unboxing ועד נהיגה מהדפדפן שלך. מכסה את בטיחות unboxing, טעינה, תוכנה, הפעלה טלפונית, ניווט אוטונומי והרכבת זרועות.

ציוד כבד - נדרשת הרמה קבוצתית. Damiao AGV היא פלטפורמה ניידת משמעותית. השתמש תמיד במעלית לשני אנשים לפתיחת הארגז והמיקום מחדש. ודא שלשטח העבודה יש ​​לפחות 2 מ' מרווח לכל הכיוונים לפני ההפעלה בפעם הראשונה.
1

ביטול ארגז ובדיקת בטיחות

בדוק את ה-AGV והכן את סביבת העבודה

נדרשת הרמה קבוצתית. השתמש בשני אנשים כדי להרים את ה-AGV מתוך ארגז המשלוח שלו. הרם מהמרכב התחתון - לעולם אל הגלגלים או כל אלקטרוניקה בולטת. הנח את הפלטפורמה על משטח שטוח וקשיח עם בלמים מופעלים (אם מצויד).
  1. הסר את האריזה. הסר בזהירות את כל תוספות הקצף, קשרי הכבלים ומעצורי המשלוח. בדוק את הגלגלים לאיתור נזקי משלוח - כל ארבעת גלגלי המקאנום צריכים להסתובב בחופשיות ביד.
  2. בדוק מחברים. בדוק שכל מחברי הכבלים בבקר הראשי תקועים. רטט למשלוח משחרר מדי פעם מחברי JST או Deans.
  3. פינוי סביבת עבודה. לפני כל הפעלה, פנה לפחות 2 מ' של שטח פתוח לכל הכיוונים. ה-AGV יכול להאיץ במהירות - עוברי אורח צריכים לעמוד מאחור במהלך בדיקות תנועה ראשונה.
  4. עצירת חירום. אתר את מתג ניתוק החשמל הראשי במארז. דע כיצד להגיע אליו לפני ההפעלה. במהלך הפגישה הראשונה, שמור יד אחת ליד החתך כל הזמן.
  5. בדיקת פני השטח. גלגלי Mecanum דורשים משטח שטוח וקשיח (בטון, ריצוף עץ או אריח חלק) לביצועים נכונים בכל הכיוונים. שטיח ומשטחים לא אחידים מפחיתים את סמכות השליטה הצידית באופן משמעותי.
2

טעינת סוללה והפעלה

טען את ערכת הסוללות במלואה לפני השימוש הראשון

  1. חבר את המטען. אתר את יציאת טעינת הסוללה על מארז AGV (בדרך כלל מחבר חבית גדול או יציאת XT60). חבר את מטען האיזון הכלול. חבר את המטען לשקע 110/220V מוארק.
  2. טען עד מלא. אפשר לסוללה להיטען במלואה לפני השימוש הראשון - בדרך כלל 2-4 שעות בהתאם למצב הראשוני. נורית המטען תהפוך לירוקה (או תפסיק להבהב) בסיום. אין להשאיר ללא השגחה במהלך הטעינה הראשונה.
  3. בדוק את מתח הסוללה. לאחר הטעינה, מתח הסוללה צריך לקרוא ברמה הנומינלית של טעינה מלאה (בדוק את תווית ערכת הסוללה שלך). השתמש במולטימטר או בצג המשולב אם מצויד.
  4. רצף הפעלה. חבר את הסוללה לבקר הראשי. החלף את מתג ההפעלה הראשי. הבקר אמור לאתחל תוך 5-10 שניות - נוריות חיווי יתייצבו. אל תשלח פקודות תנועה במהלך האתחול.
בטיחות סוללת LiPo. אם ה-AGV משתמש בחבילת סוללות LiPo (נפוצה), לעולם אל תתפרק מתחת למתח המינימלי בתא (בדרך כלל 3.0V/תא). אחסן בטעינה של 50% אם לא נעשה בו שימוש במשך יותר משבוע. לעולם אל תטעין LiPo נפוח או פגום.
3

ערימת ניווט תוכנה ו-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
בדוק תחילה ללא חומרה. הפעל את הסוכן במצב מדומה כדי לאמת את צינור הפקודה המלא לפני חיבור ה-AGV:
python3 dami_agent.py --session RC-XXXX-XXXX --mock מצב מדומה מדלג על פתיחת יציאה טורית. כל ניתוח הפקודות של WebSocket, העברת הטלמטריה והלוגיקה הבטיחותית של זמן קצוב פועלים באופן זהה.
4

טלאופרציה

הסע את ה-AGV מהדפדפן שלך דרך הפלטפורמה ללא פחד

  1. לִפְתוֹחַ platform.roboticscenter.ai, נווט למקטע Teleop וצור הפעלה חדשה. העתק את מזהה הפגישה (פורמט: 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. פתח את כתובת האתר של ההפעלה בדפדפן שלך. השתמש בפקדי הכיוון כדי לשלוח 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 להעיף צירים ללא כל שינוי קושחה.

5

הגדרת ניווט אוטונומית

הגדר את 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).
בטיחות טלאופ במהלך ניווט. השאר את פאנל הטלאופ של פלטפורמת Fearless פתוח במהלך בדיקות ניווט אוטונומיות. הזמן הקצוב לפקודה של 300 ms של הסוכן אומר שאם nav2 מפסיק לפרסם יעדים, ה-AGV ייעצר אוטומטית - מספק רשת ביטחון ברמת התוכנה בנוסף למתג הניתוק הפיזי.
6

הרכבת זרוע רובוט

הברג OpenArm או DK1 לצלחת העליונה ורשום את שניהם בסשן פלטפורמה אחד

הצלחת העליונה של Damiao AGV נועדה לקבל אוגנים סטנדרטיים של בסיס זרועות הרובוט. שלב זה מכסה את האינטגרציה הפיזית ואת הגדרת הפגישה מרובת הצמתים של Fearless Platform.

הרכבה פיזית

  1. כבה את ה-AGV והזרוע לפני כל עבודה מכנית.
  2. מקם את לוחית הבסיס של זרוע הרובוט מעל חורי ההרכבה של לוחית ה-AGV העליונה. השתמש בבורגי ראש שקע M6 המסופקים (או M5 עבור זרועות קלות יותר). החל תרכובת נעילה של חוט על כל המחברים.
  3. נתב את כבלי החשמל וה-CAN/USB של הזרוע למטה דרך ערוץ ניהול הכבלים בצלחת העליונה אל תא המרכב של AGV. אבטח באמצעות קשרי כבלים - אפשר מספיק רפיון עבור סביבת העבודה המלאה של הזרוע מבלי למשוך.
  4. הפעל את הזרוע מסוללה נפרדת או אספקה ​​מווסתת בשלדת 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 יחיד - מסלול המניפולציה הנייד השלם, כולל מהירות הבסיס ומיקומי מפרקי הזרוע, מסונכרנים לפי חותמת זמן.

ראה גם. ה רכזת חומרה של OpenArm 101 ואת ערכה דו-מנואלית DK1 הדף מכיל מדריכי הגדרה ספציפיים לזרוע. השלם את הגדרת הזרוע לפני שלב ההרכבה למעלה.
7

תצורת CAN אוטובוס ומנוע

הגדר את אוטובוס ה-CAN FD והגדר מזהי מנוע עבור כל מפעילי Damiao שמורכבים על ה-AGV

כאשר זרוע OpenArm או DK1 מותקנת על הלוח העליון של AGV, מנועי ה-Damiao QDD שלו מתקשרים דרך אפיק CAN FD מהמחשב המובנה. סעיף זה עוסק בהעלאת אוטובוס, הקצאת מזהה מנוע, פקודות הפעלה ואבחון LED.

מערכת הנעה AGV לעומת מנועי זרוע. תנועת ה-AGV נשלטת באמצעות UART5/DBUS - לא CAN. אפיק ה-CAN FD המתואר כאן מיועד אך ורק למנועי Damiao QDD בכל מטען זרוע רובוט המותקן על ה-AGV. אל תנסה לשלוח מסגרות CAN לבקרת ההנעה של AGV.

התקן 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-2EC0x010x11
J2 - גובה הכתפייםDM-J4340p-2EC0x020x12
J3 - גלגול כתףDM-J4340p-2EC0x030x13
J4 - גובה המרפקDM-J4340-2EC0x040x14
J5 - גלגול מרפקיםDM-J4340-2EC0x050x15
J6 - גובה פרק כף הידDM-J4340-2EC0x060x16
J7 - גלגול פרק כף הידDM-J4310-2EC V1.10x070x17
J8 - תפסןDM-J4310-2EC V1.10x080x18

המזהים הם ייחודיים לכל אוטובוס 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 (בדוק סיום וחיווט).

אזהרות כתיבה בפלאש

מגבלת כתיבה בפלאש: ~10,000 מחזורים לכל מנוע. מזהה מנוע ואחסון פרמטרים משתמש בזיכרון פלאש פנימי. הגדר מזהי CAN ופרמטרים של כיול פַּעַם במהלך ההפעלה ולהשאיר אותם לצמיתות. שינויים בפרמטרים של זמן ריצה הוחלו ללא --flash דגל עבור ל-RAM בלבד ואל תצרוך מחזורי פלאש. הימנע מסקריפטים המהבהבים שוב ושוב פרמטרים מנועיים.
הגדרת מזהים דורשת את הכלי Damiao Windows. יש להגדיר מזהי CAN באמצעות Debugging_Tools_v.1.6.8.8.exe - חבר רק מנוע בודד בכל פעם כדי למנוע התנגשויות מזהות. לִרְאוֹת ההתייחסות המוטורית המלאה להנחיות שלב אחר שלב.
צפה במפרט המלא → שאלות נפוצות וקהילה → מפתח ויקי →

צריך עזרה?

שאל את הקהילה או פנה לתמיכה של SVRC עם הפלט של dami_agent.py --mock ואת נתיב היציאה הטורית שלך.