LeRobot documentation
OpenArm
OpenArm
OpenArm هي ذراع إنسانية مفتوحة المصدر ذات سبع درجات حرية، مصممة لأبحاث ونشر الذكاء الاصطناعي المادي.
للحصول على OpenArm، سواءً كانت مجمّعة أو مبنية يدوياً، والانضمام إلى المجتمع العالمي، تصفّح المصنّعين المعتمدين والموثوقين حول العالم على openarm.dev.
ما الذي يميزه؟
التصميم بمقياس بشري: صُمم OpenArm بنسب تشبه الإنسان، مُصغَّرًا ليناسب شخصًا طوله حوالي 160-165 سم. وهذا يوفر توازنًا مثاليًا بين مدى عملي وإعجاز قابل للإدارة، لضمان تشغيل آمن وسريع الاستجابة.
بنية تضع السلامة في المقام الأول: صُمم OpenArm بمحركات قابلة للتشغيل العكسي من نوع QDD وبمرونة عالية، مما يجعله يولي الأولوية للتفاعل الآمن بين الإنسان والروبوت مع الحفاظ على قدرات حمل عملية (6.0 كجم ذروة / 4.1 كجم اسمي) للقيام بمهام حقيقية.
مصمَّم ليدوم: تُستخدم في المكونات الهيكلية الحرجة مواد من الألومنيوم والفولاذ المقاوم للصدأ، مما يضمن أداءً متينًا لجمع البيانات المتكرر والاستخدام المستمر في البحث.
قابلة للوصول والبناء بالكامل: كل مكوّن، من الأجزاء المصنوعة بتقنية CNC والأغلفة المطبوعة بتقنية الطباعة ثلاثية الأبعاد إلى الأسلاك الكهربائية، مصمّم ليكون قابلاً للشراء والبناء من قبل الباحثين الأفراد والمختبرات، مع توفير بيانات التصنيع الكاملة.
عملي وبأسعار معقولة: مقابل 6500 دولار أمريكي لنظام ثنائي اليد كامل، يوفر OpenArm قدرات بمستوى البحث العلمي بتكلفة أقل بكثير من تكلفة روبوتات humanoid التقليدية.
متطلبات المنصة
**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter does not have macOS drivers and has not been tested on Windows.
دليل السلامة
قبل تشغيل OpenArm، يرجى قراءة دليل السلامة الرسمي. النقاط الرئيسية:
- تثبيت آمن: ثبّت الذراع على سطح مستوٍ وثابت باستخدام براغي أو مشابك
- المسافة الآمنة: إبقاء أجزاء الجسم والأجسام خارج نطاق الحركة أثناء التشغيل
- معدات الحماية: ارتدِ دائمًا نظارات السلامة؛ واستخدم معدات الحماية الشخصية الإضافية عند الحاجة
- حدود الحمولة: لا تتجاوز حدود الحمولة المحددة (6.0 كجم ذروة / 4.1 كجم اسمي لكل ذراع)
- التوقف الطارئ: معرفة موقع جهاز التوقف الطارئ وطريقة تشغيله
- الفحص الدوري: تحقق من براغي مفكوكة، حدود ميكانيكية تالفة، أصوات غير طبيعية، وأضرار في الأسلاك
إعداد العتاد
اتبع وثائق OpenArm المادية الرسمية من أجل:
- قائمة المواد والمصادر
- تعليمات الطباعة ثلاثية الأبعاد
- التجميع الميكانيكي
- التوصيلات الكهربائية
تتوفر مستودعات العتاد على github.com/enactic/openarm.
إعداد حافلة CAN
OpenArm uses CAN bus communication with Damiao motors. Once you have the CAN bus USB adapter plugged into your Linux PC, follow the Damiao Motors and CAN Bus guide to configure the interface.
الإعداد السريع:
# Setup CAN interfaces
lerobot-setup-can --mode=setup --interfaces=can0,can1
# Test motor communication
lerobot-setup-can --mode=test --interfaces=can0,can1تثبيت LeRobot 🤗
اتبع دليل التثبيت، ثم ثبّت دعم محرك Damiao:
pip install -e ".[damiao]"الاستخدام
ذراع المتابعة (روبوت)
lerobot-calibrate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_followerfrom lerobot.robots.openarm_follower import OpenArmFollower, OpenArmFollowerConfig
config = OpenArmFollowerConfig(
port="can0",
side="right", # or "left" for left arm
id="my_openarm_follower",
)
follower = OpenArmFollower(config)
follower.connect()
# Read current state
obs = follower.get_observation()
print(obs)
# Send action (position in degrees)
action = {
"joint_1.pos": 0.0,
"joint_2.pos": 0.0,
"joint_3.pos": 0.0,
"joint_4.pos": 45.0,
"joint_5.pos": 0.0,
"joint_6.pos": 0.0,
"joint_7.pos": 0.0,
"gripper.pos": 0.0,
}
follower.send_action(action)
follower.disconnect()ذراع القائد (مشغّل عن بُعد)
تُستخدم الذراع القائدة للتشغيل عن بُعد - أي تحريكها يدويًا للتحكم في الذراع المتتبعة.
lerobot-calibrate \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderfrom lerobot.teleoperators.openarm_leader import OpenArmLeader, OpenArmLeaderConfig
config = OpenArmLeaderConfig(
port="can1",
id="my_openarm_leader",
manual_control=True, # Disable torque for manual movement
)
leader = OpenArmLeader(config)
leader.connect()
# Read current position (as action to send to follower)
action = leader.get_action()
print(action)
leader.disconnect()التشغيل عن بُعد
للتحكم في OpenArm عن بُعد باستخدام التحكم بالمتزعم والمتبوع:
lerobot-teleoperate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderاستخدم نفس --robot.id و--teleop.id كما في مرحلة المعايرة، حتى يجد LeRobot ملفات المعايرة.
التشغيل عن بُعد بإيد
للتحكم عن بُعد في إعداد OpenArm ثنائي الذراع باستخدام ذراعين قائدتين وذراعين تابعتين:
lerobot-teleoperate \
--robot.type=bi_openarm_follower \
--robot.left_arm_config.port=can0 \
--robot.left_arm_config.side=left \
--robot.right_arm_config.port=can1 \
--robot.right_arm_config.side=right \
--robot.id=my_bimanual_follower \
--teleop.type=bi_openarm_leader \
--teleop.left_arm_config.port=can2 \
--teleop.right_arm_config.port=can3 \
--teleop.id=my_bimanual_leaderتسجيل البيانات
لتسجيل مجموعة بيانات أثناء التشغيل عن بُعد:
lerobot-record \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leader \
--dataset.repo_id=${HF_USER}/my_openarm_dataset \
--dataset.single_task="Describe your task here" \
--dataset.fps=30 \
--dataset.num_episodes=10lerobot-record يضيف تاريخ الجلسة ووقتها إلى اسم مجموعة البيانات، لذا تُحفظ باسم my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS. راجع دليل التسجيل للكاميرات والتحكم بلوحة المفاتيح وباقي سير العمل.
خيارات التهيئة
إعدادات المتابع
| معامل | افتراضي | الوصف |
|---|---|---|
port | - | واجهة CAN (مثل can0) |
side | None | الجهة: "left"، "right"، أو None للحدود المخصصة |
use_can_fd | True | تفعيل CAN FD لمعدلات بيانات أعلى |
can_bitrate | 1000000 | معدل البت الاسمي (1 ميغابت في الثانية) |
can_data_bitrate | 5000000 | معدل بيانات CAN FD (5 ميغابت/ثانية) |
max_relative_target | None | حد الأمان للمواقع النسبية للأهداف |
position_kp | لكل مفصل | كسب التناسب للتحكم في الموضع |
position_kd | لكل مفصل | مكاسب مشتقة التحكم في الموضع |
إعدادات القائد
| معامل | افتراضي | الوصف |
|---|---|---|
port | - | واجهة CAN (مثل can1) |
manual_control | True | تعطيل العزم للحركة اليدوية |
use_can_fd | True | تفعيل CAN FD لمعدلات بيانات أعلى |
can_bitrate | 1000000 | معدل البت الاسمي (1 ميغابت في الثانية) |
can_data_bitrate | 5000000 | معدل بيانات CAN FD (5 ميغابت/ثانية) |
إعداد المحرك
يستخدم OpenArm محركات Damiao مع الإعداد الافتراضي التالي:
| مفصلي | نوع المحرك | إرسال المعرّف | معرف الاستلام |
|---|---|---|---|
| joint_1 (تدوير الكتف) | DM8009 | 0x01 | 0x11 |
| joint_2 (رفع الكتف) | DM8009 | 0x02 | 0x12 |
| joint_3 (دوران الكتف) | DM4340 | 0x03 | 0x13 |
| joint_4 (ثني المرفق) | DM4340 | 0x04 | 0x14 |
| joint_5 (دوران المعصم) | DM4310 | 0x05 | 0x15 |
| joint_6 (انحناء المعصم) | DM4310 | 0x06 | 0x16 |
| joint_7 (دوران المعصم) | DM4310 | 0x07 | 0x17 |
| gripper | DM4310 | 0x08 | 0x18 |
استكشاف الأخطاء وإصلاحها
لا توجد استجابة من المحركات
- تحقق من توصيلات مصدر الطاقة
- Verify CAN wiring (CAN-H, CAN-L, GND)
- تشغيل التشخيصات:
lerobot-setup-can --mode=test --interfaces=can0 - راجع دليل استكشاف أخطاء Damiao لمزيد من التفاصيل
لم يتم العثور على واجهة CAN
تأكد من إعداد واجهة CAN:
ip link show can0