دليل إعداد دامياو AGV

من فتح العلبة إلى القيادة من متصفحك. يغطي سلامة فتح العلبة، والشحن، والبرمجيات، والتشغيل عن بعد، والملاحة المستقلة، وتركيب الذراع.

المعدات الثقيلة - مطلوب رفع الفريق. تعد Damiao AGV عبارة عن منصة متنقلة كبيرة. استخدم دائمًا مصعدًا يتسع لشخصين لإخراج العلبة وتغيير موضعها. تأكد من أن مساحة العمل بها مسافة لا تقل عن 2 متر في جميع الاتجاهات قبل تشغيلها لأول مرة.
1

فتح العلبة والتحقق من السلامة

فحص AGV وإعداد مساحة العمل

رفع الفريق مطلوب. استخدم شخصين لرفع AGV من صندوق الشحن الخاص به. ارفع من الهيكل السفلي - وليس عن طريق العجلات أو أي إلكترونيات بارزة. ضع المنصة على سطح مستو وصلب مع استخدام الفرامل (إذا كانت السيارة مجهزة بذلك).
  1. قم بإزالة العبوة. قم بإزالة جميع الحشوات الرغوية وروابط الكابلات وقيود الشحن بعناية. افحص العجلات للتأكد من عدم وجود تلف أثناء الشحن - يجب أن تدور جميع العجلات الميكانيكية الأربعة بحرية باليد.
  2. فحص الموصلات. تأكد من تثبيت جميع موصلات الكابلات الموجودة على وحدة التحكم الرئيسية. أحيانًا يؤدي اهتزاز الشحن إلى فك موصلات JST أو Deans.
  3. تخليص مساحة العمل. قبل أي تشغيل، قم بإخلاء ما لا يقل عن 2 متر من المساحة المفتوحة في جميع الاتجاهات. يمكن لمركبة AGV أن تتسارع بسرعة، ويجب على المارة الوقوف في الخلف أثناء اختبارات الحركة الأولى.
  4. توقف اضطراري. حدد موقع مفتاح قطع الطاقة الرئيسي بالهيكل. تعرف على كيفية الوصول إليه قبل التشغيل. في الجلسة الأولى، احتفظ بيد واحدة بالقرب من القطع في جميع الأوقات.
  5. فحص السطح. تتطلب عجلات الميكانوم سطحًا صلبًا ومسطحًا (خرسانة أو أرضيات خشبية أو بلاط أملس) للحصول على أداء صحيح متعدد الاتجاهات. يقلل السجاد والأسطح غير المستوية من سلطة التحكم الجانبي بشكل كبير.
2

شحن البطارية وتشغيلها

اشحن مجموعة البطارية بالكامل قبل الاستخدام الأول

  1. قم بتوصيل الشاحن. حدد موقع منفذ شحن البطارية على هيكل AGV (عادةً موصل أسطواني كبير أو منفذ XT60). قم بتوصيل شاحن التوازن المرفق. قم بتوصيل الشاحن بمنفذ مؤرض 110/220 فولت.
  2. شحن كامل. اسمح للبطارية بالشحن بالكامل قبل الاستخدام الأول — عادةً ما بين 2 إلى 4 ساعات حسب الحالة الأولية. سيتحول مؤشر LED الخاص بالشاحن إلى اللون الأخضر (أو يتوقف عن الوميض) عند اكتماله. لا تترك دون مراقبة أثناء الشحن الأول.
  3. تحقق من جهد البطارية. بعد الشحن، يجب قراءة جهد البطارية عند المستوى الاسمي المشحون بالكامل (تحقق من ملصق حزمة البطارية). استخدم مقياسًا متعددًا أو الشاشة الموجودة على اللوحة إذا كانت مجهزة بذلك.
  4. السلطة على التسلسل. قم بتوصيل البطارية بوحدة التحكم الرئيسية. تبديل مفتاح الطاقة الرئيسي. يجب أن يتم تشغيل وحدة التحكم خلال 5 إلى 10 ثوانٍ، وستستقر مؤشرات LED. لا ترسل أوامر الحركة أثناء التمهيد.
سلامة بطارية ليبو. إذا كان AGV يستخدم حزمة بطارية LiPo (شائعة)، فلا يتم تفريغها أبدًا أقل من الحد الأدنى لجهد الخلية (عادةً 3.0 فولت/خلية). قم بتخزينه برسوم 50% إذا لم يتم استخدامه لأكثر من أسبوع. لا تقم أبدًا بشحن جهاز LiPo المنتفخ أو التالف.
3

البرمجيات ومكدس الملاحة ROS2

قم بتثبيت وكيل Python وحزم ROS2 الاختيارية على جهاز الكمبيوتر الخاص بك

ال dami_agent.py البرنامج النصي هو الجسر الأساسي بين منصة Fearless Platform وأجهزة AGV. يتطلب 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

قم بتوصيل محول USB إلى TTL: قم بتوصيل المحول TX قم بتثبيته على وحدة التحكم الرئيسية AGV UART5_RX (دبوس PD2). قم بتوصيل GND إلى GND. لا تقم بتوصيل دبوس RX الخاص بالمحول أو 5 فولت بـ 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 من متصفحك عبر منصة Fearless Platform

  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. افتح عنوان URL للجلسة في متصفحك. استخدم عناصر التحكم الاتجاهية للإرسال 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:

  • robot_radius — اضبط على نصف عرض AGV بالإضافة إلى هامش الأمان (عادةً 0.4–0.6 متر).
  • max_vel_x / max_vel_y - تعيين على أساس الخاص بك --amp القيمة والسرعة القصوى المقاسة. ابدأ بشكل متحفظ (0.3 م/ث).
  • max_vel_theta - الحد الأقصى لسرعة الدوران. قياس مع بطيء --amp 400 الاختبار أولا.
  • com.holonomic — اضبط على true في مخطط DWB المحلي لتمكين تخطيط الحركة الجانبية (مطلوب للعجلات الميكانيكية/الأومنية).
سلامة Teleop أثناء الملاحة. أبقِ لوحة Fearless Platform teleop مفتوحة أثناء اختبار الملاحة الذاتية. تعني مهلة أمر الوكيل البالغة 300 مللي ثانية أنه إذا توقف 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

في لوحة Fearless Platform teleop، تظهر كلا العقدتين. يمكن للمشغلين إرسال أوامر الحركة إلى AGV (المحور x/y/z) وتسليح الأوامر بشكل مستقل في نفس الجلسة. يلتقط تسجيل الحلقة القياس عن بعد لجميع العقد في أرشيف JSONL واحد - مسار المعالجة المحمول الكامل بما في ذلك السرعة الأساسية ومواضع مفصل الذراع، والتي تتم مزامنتها بواسطة الطابع الزمني.

انظر أيضا. ال مركز الأجهزة OpenArm 101 و مجموعة DK1 ثنائية الاستخدام تحتوي الصفحة على أدلة إعداد خاصة بالذراع. أكمل إعداد الذراع قبل خطوة التثبيت أعلاه.
7

يمكن تكوين الحافلات والمحرك

قم بتكوين ناقل 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 ميجابت/ثانية اسمية + 5 ميجابت/ثانية هو الوضع الموصى به لجميع عمليات النشر الجديدة:

# 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 — دوران القاعدةماركا-J4340p-2EC0x010x11
J2 - خطوة الكتفماركا-J4340p-2EC0x020x12
J3 - لفة الكتفماركا-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 واحد يمكن رؤيته من خلال نافذة الهيكل:

نمط الصمام ولاية الإجراء مطلوب
أخضر (ثابت) المحرك ممكّن وجاهز لا شيء - المحرك نشط ويقبل الأوامر
أحمر (ثابت) المحرك معطل (يعمل بالطاقة، غير ممكّن) أرسل أمر تمكين لتنشيط المحرك
أحمر (وامض) خطأ المحرك / حالة الخطأ أرسل أمر مسح الخطأ، وتحقق من السبب، ثم أعد التمكين

أسباب الأخطاء الشائعة: التيار الزائد (تقليل المكاسب أو الحمل)، درجة الحرارة الزائدة (السماح بالتبريد)، خطأ في التشفير (إعادة تثبيت الكابلات)، انخفاض الجهد الكهربي (الإمداد أقل من ~ 18 فولت على نظام 24 فولت)، انقطاع ناقل CAN (التحقق من الإنهاء والأسلاك).

فلاش كتابة تحذيرات

حد كتابة الفلاش: ~ 10,000 دورة لكل محرك. يستخدم معرف المحرك وتخزين المعلمات ذاكرة فلاش داخلية. تعيين معرفات CAN ومعلمات المعايرة مرة واحدة أثناء التكليف وتركها بشكل دائم. تم تطبيق تغييرات معلمات وقت التشغيل بدون --flash انتقل إلى ذاكرة الوصول العشوائي (RAM) فقط ولا تستهلك دورات الفلاش. تجنب البرامج النصية التي تعيد وميض معلمات المحرك بشكل متكرر.
يتطلب تكوين المعرفات أداة Damiao Windows. يجب تعيين معرفات CAN باستخدام Debugging_Tools_v.1.6.8.8.exe - قم بتوصيل محرك واحد فقط في كل مرة لتجنب تصادمات الهوية. يرى المرجع الحركي الكامل للحصول على تعليمات خطوة بخطوة.
عرض المواصفات الكاملة → الأسئلة الشائعة والمجتمع → ويكي المطور →

هل تحتاج إلى مساعدة؟

اسأل المجتمع أو اتصل بدعم SVRC مع مخرجات dami_agent.py --mock ومسار المنفذ التسلسلي الخاص بك.