دليل إعداد OpenArm 101

اتبع هذا المسار بدءًا من فتح العلبة وحتى أول حركة مدربة على الذكاء الاصطناعي. يستغرق حوالي 4-5 ساعات في المجموع.

الخطوة 1 من 7
1

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

⏱ ~30 دقيقة
⚠️
اقرأ إرشادات السلامة أولاً اقرأ إرشادات السلامة الكاملة قبل التشغيل. لا تصل أبدًا إلى مساحة العمل أثناء تشغيلها. قم دائمًا بإيقاف التشغيل قبل ضبط الكابلات.

قبل أن تبدأ

  • تأكد من أن لديك مساحة عمل واضحة تبلغ 1 م × 1 م على سطح ثابت
  • احصل على جهاز كمبيوتر محمول مزود بنظام Ubuntu 22.04 جاهز (يعمل VM، ويفضل أن يكون أصليًا)
  • حافظ على قوة الذراع عن أثناء الفحص البدني أدناه

في الصندوق

وحدة ذراع OpenArm 101
مصدر الطاقة (24 فولت تيار مستمر)
يمكن محول USB
تركيب الأجهزة
بطاقة البداية السريعة

قائمة التفتيش

  • جميع المفاصل الثمانية تدور بحرية (بدون طحن أو مقاومة)
  • توجيه الكابل سليم على طول جسم الذراع
  • موصل الطاقة غير تالف
  • التوقف في حالات الطوارئ يمكن الوصول إليه وعملي
⚠️
قواعد السلامة
  • لا تصل أبدًا إلى مساحة العمل أثناء تشغيل الذراع
  • قم دائمًا بإيقاف التشغيل قبل ضبط الكابلات أو إجراء تغييرات على الأجهزة
  • أبقِ الأطفال والحيوانات الأليفة بعيدًا أثناء التشغيل
  • قم بتثبيت القاعدة على سطح ثابت قبل التشغيل لأول مرة
2

بيئة البرمجيات وتكوين CAN

⏱ ~60 دقيقة

متطلبات النظام

  • Ubuntu 22.04 LTS (مستحسن) أو 20.04
  • بايثون 3.10+
  • ROS2 متواضع
  • محول USB-CAN (CANable أو متوافق - يجب أن يدعم CAN FD لمعدل بيانات كامل يبلغ 5 ميجابت/ثانية)

الخطوة 2 أ - تكوين معرف المحرك

قبل إعداد أي برنامج، يجب تعيين معرف CAN لكل محرك من محركات Damiao. هذه خطوة لمرة واحدة يتم إجراؤها على نظام التشغيل Windows باستخدام Damiao USB CAN Debugger.

أداة تصحيح دامياو (ويندوز): تحميل Debugging_Tools_v.1.6.8.8.exe واستخدمه لتعيين معرف جهاز الإرسال والاستقبال لكل محرك. اختبر دائمًا محركًا واحدًا في كل مرة قبل ربطه بالتسلسل.

استخدم الجدول أدناه كتخصيص معرف أساسي لكل مفصل (J1 – J8):

مشترك معرف الارسال معرف المتلقي
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J80x080x18

الخطوة 2 ب – تثبيت حزم OpenArm

على جهاز Ubuntu الخاص بك، قم بتثبيت جميع الحزم المطلوبة من OpenArm PPA الرسمي:

sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:openarm/main
sudo apt update
sudo apt install -y \
  can-utils \
  iproute2 \
  libeigen3-dev \
  libopenarm-can-dev \
  liborocos-kdl-dev \
  liburdfdom-dev \
  liburdfdom-headers-dev \
  libyaml-cpp-dev \
  openarm-can-utils

الخطوة 2ج - إعداد واجهة CAN (CAN FD)

تدعم محركات OpenArm كلاً من CAN 2.0 وCAN FD. يوصى باستخدام CAN FD — يقوم بتشغيل مرحلة البيانات بسرعة 5 ميجابت/ثانية ويدعم حمولات تصل إلى 64 بايت، وهي مطلوبة لعرض النطاق الترددي الكامل لمحرك Damiao.

وضع الباود الاسمي باود البيانات الحمولة
يمكن 2.01 ميجابت/ثانية8 بايت
يمكن فد1 ميجابت/ثانية5 ميجابت/ثانيةما يصل إلى 64 بايت

موصى به - استخدم مساعد OpenArm:

# CAN FD, 1M nominal / 5M data (recommended for single arm)
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000

# CAN 2.0 fallback (1M baud, no FD)
openarm-can-configure-socketcan can0

# 4-arm bimanual setup (can0–can3)
openarm-can-configure-socketcan-4-arms -fd

# Verify the interface is UP
ip link show can0

أوامر ارتباط IP اليدوية (في حالة عدم استخدام المساعد):

# CAN 2.0
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

# CAN FD — 1M nominal / 5M data
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
منفذ واحد لكل ذراع. يستخدم إعداد ذراع واحدة can0. يستخدم الإعداد ثنائي can0 (الزعيم الأيمن) + can1 (الزعيم الأيسر) + can2 (التابع الصحيح) + can3 (تابع اليسار).

الخطوة 2 د - أوامر التحكم في المحركات وتصحيح الأخطاء

استخدم هذه cansend أوامر لتصحيح الأخطاء ذات المستوى المنخفض. راقب الحافلة أولاً قبل إرسال أي أوامر:

# Monitor all CAN frames
candump -x can0

# Change motor baudrate (replace 1 with target motor CAN ID)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0
# Persist across power cycles (max ~10,000 flash writes per motor — use sparingly)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 --flash

يمكن 2.0 التحكم في المحركات - يستبدل 001 مع معرف جهاز الإرسال الخاص بالمفصل المستهدف من الجدول أعلاه:

# Clear motor error
cansend can0 001#FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001#FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001#FFFFFFFFFFFFFFFD

يمكن FD التحكم في المحركات - لاحظ الاضافي #1 بعد ## (علم BRS):

# Clear motor error
cansend can0 001##1FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001##1FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001##1FFFFFFFFFFFFFFFD
⚠️
اختبار محرك واحد في كل مرة عند التشغيل لأول مرة، قم بتوصيل واختبار كل محرك على حدة قبل ربطه بالتسلسل التعاقبي على ناقل CAN. يؤدي هذا إلى عزل تعارضات الهوية وأخطاء الأسلاك. ال --flash يستمر العلم في تغيير معدل الباود - يدعم كل محرك ما يصل إلى 10000 دورة كتابة فلاش كحد أقصى.

حالة LED للمحرك

يحتوي كل محرك من محركات Damiao على مؤشر LED يشير إلى الحالة الحالية. استخدم هذا كفحص صحي سريع بعد التشغيل:

نمط الصمام معنى
أخضر (ثابت)المحرك ممكّن وجاهز
أحمر (ثابت)المحرك معطل
أحمر (وامض)حالة خطأ المحرك — أرسل أمر Clear Error قبل إعادة التمكين

الخطوة 2 هـ - تثبيت حزم ROS2

sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers
git clone https://github.com/enactic/openarm_ros2
cd openarm_ros2 && colcon build

تثبيت بايثون SDK

pip install roboticscenter
python -c "import roboticscenter; print('SDK ready')"
3

الحركة الأولى

⏱ ~30 دقيقة

ابدأ بالأجهزة المزيفة (آمنة — بدون حركة جسدية)

تحقق دائمًا من المحاكاة قبل تحريك الذراع الحقيقية. قم بتشغيل ملف الإطلاق باستخدام use_fake_hardware:=true - لا حاجة إلى اتصال CAN:

ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
ros2 run openarm_ros2 test_trajectory

افتح RViz للتحقق من تحرك الذراع المحاكى خلال مسار الاختبار بشكل صحيح. يجب أن تتحرك جميع المفاصل الثمانية بسلاسة.

قم بالتبديل إلى الأجهزة الحقيقية

بمجرد أن تبدو المحاكاة صحيحة، قم بتوصيل محول CAN وقم بتشغيل الذراع:

ros2 launch openarm_ros2 openarm.launch.py

إرسال أمر الحركة الأولى (الموضع الرئيسي)

ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory \
  control_msgs/action/FollowJointTrajectory "{...}"
⚠️
أبقِ يدك على نقطة توقف الطوارئ لأول جولة حقيقية. سوف تتحرك الذراع إلى وضع المنزل. كن مستعدًا للتوقف فورًا إذا بدت الحركة خاطئة.
4

المعايرة والتوجيه

⏱ ~45 دقيقة

يجب أن تتطابق مواضع الصفر المشتركة مع الواقع المادي للتحكم الدقيق. تتسبب الوصلات التي تمت معايرتها بشكل خاطئ في فشل السياسة – لا تتخطى هذه الخطوة.

إجراء صاروخ موجه

  1. قم بالتشغيل والذراع في وضع آمن معروف (ممتد تقريبًا، بعيدًا عن العوائق)
  2. تشغيل البرنامج النصي صاروخ موجه:
    ros2 run openarm_ros2 homing
  3. سيطالبك البرنامج النصي بتوجيه كل مفصل يدويًا إلى نقطة توقفه الصلبة - تحرك ببطء
  4. تأكد من حفظ موضع الصفر لكل مفصل عند المطالبة بذلك

التحقق من المعايرة

ros2 topic echo /joint_states  # check all positions read near zero
النتيجة المتوقعة: يجب أن تقرأ جميع المواضع المشتركة ضمن ±0.05 راد من الصفر عندما يكون الذراع في وضعه المرجعي. تشير الانحرافات الأكبر إلى وجود مشكلة في المفصل أو جهاز التشفير - كرر إجراء التوجيه لهذا المفصل.
5

التشغيل عن بعد

⏱ ~60 دقيقة

اختر جهاز المشغل الخاص بك

وحدة تحكم الواقع الافتراضي

Meta Quest / Steam VR — جيد للمهام المكانية

لوحة المفاتيح / لوحة الألعاب

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

قم بتوصيل جهاز المشغل

ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand

تحقق من الكمون

زمن الوصول المستهدف من طرف إلى طرف أقل من 50 مللي ثانية. قم بإجراء اختبار زمن الوصول وتحقق مما يلي:

ros2 run openarm_ros2 latency_check
الكمون عالية؟ تختلف محولات USB-CAN في الأداء. إذا تجاوز زمن الوصول 80 مللي ثانية، فجرّب منفذ USB مختلفًا (يفضل USB 3.0)، أو قلل العمليات في الخلفية، أو قم بالتبديل إلى واجهة CAN الأصلية.
6

جمع البيانات

⏱ مستمر

اختر تنسيق البيانات

  • ليروبوت (موصى به) - مصمم خصيصًا للتعلم بالتقليد والتدريب النموذجي
  • RLDS - متوافق مع Open-X-Embodiment ومجموعات البيانات عبر الروبوتات

ابدأ التسجيل

ros2 launch openarm_ros2 record.launch.py \
  output_format:=lerobot \
  task_name:=pick_and_place \
  episode_id:=0

يتم حفظ كل حلقة كملف مستقل به حالات مشتركة وإطارات الكاميرا وتسميات الأحداث. قم بتشغيل حلقات متعددة، ثم استخدم منصة SVRC للمراجعة والتصفية.

قائمة التحقق من جودة الحلقة

  • تتم مزامنة خلاصات الكاميرا (الطوابع الزمنية خلال 5 مللي ثانية)
  • الحالات المشتركة المسجلة عند ≥50 هرتز
  • تتطابق تسميات الإجراءات مع السلوك الموضح
  • يتم وضع علامة على الحلقات الفاشلة للاستبعاد، ولا يتم حذفها
احتفظ بحلقات الفشل. تحتوي العروض التوضيحية الفاشلة على إشارة مفيدة لتعلم المتانة. ضع علامة عليها is_failure:=true - يمكن للمنصة استخدامها للتعلم المتباين أو التصفية.
7

تدريب ونشر نموذج الذكاء الاصطناعي

⏱ مستمر

النماذج الموصى بها لـ OpenArm

  • ACT (محول تقطيع العمل) - الأفضل للاختيار والمكان. يتنبأ بأجزاء العمل من ملاحظات الكاميرا.
  • سياسة الانتشار - الأفضل للمهام الغنية بالاتصال. يولد مسارات سلسة عن طريق تقليل الضوضاء.
  • OpenVLA - الأفضل للمهام المشروطة باللغة. يجمع بين فهم لغة الرؤية وإجراءات الروبوت.

قم بضبط ACT على بياناتك

pip install lerobot
python train.py --config act_openarm --data-path ./recordings/

عادةً ما يستغرق التدريب على وحدة معالجة الرسومات (RTX 3090 أو أفضل) للمستهلك من 2 إلى 4 ساعات لعدد 50 حلقة. استخدم --resume العلم للمتابعة من نقطة تفتيش.

نشر على الحافة

ros2 launch openarm_ros2 inference.launch.py \
  model_path:=./checkpoints/best.pt

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

لقد أكملت مسار الإعداد الكامل!

تتم معايرة OpenArm الخاص بك وتشغيله عن بعد وجمع البيانات وتشغيل الذكاء الاصطناعي. شارك ما قمت ببنائه مع المجتمع.

← العودة إلى OpenArm Hub زيارة المنتدى شراء OpenArm آخر →

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

يعد منتدى OpenArm أسرع مكان للحصول على إجابات من المجتمع وفريق SVRC.