LeRobot documentation

SO-101

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SO-101

SO-101 SO-101

في الخطوات أدناه، نشرح كيفية تجميع روبوتنا الرائد، وهو SO-101.

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

اتبع هذا README. يحتوي على قائمة المواد، مع رابط للحصول على القطع، بالإضافة إلى تعليمات طباعة القطع بتقنية الطباعة ثلاثية الأبعاد. كما يتضمن نصائح إذا كانت هذه تجربتك الأولى في الطباعة أو إذا لم تكن تملك طابعة ثلاثية الأبعاد.

تثبيت LeRobot 🤗

لتثبيت LeRobot، اتبع دليل التثبيت

بالإضافة إلى هذه التعليمات، تحتاج إلى تثبيت Feetech SDK (إذا قمت بتثبيت LeRobot من PyPI، فقم بتشغيل pip install 'lerobot[feetech]' بدلاً من ذلك):

pip install -e ".[feetech]"

تعليمات التجميع خطوة بخطوة

تستخدم ذراع المتبوع 6 محركات من طراز STS3215 مع نسبة تروس 1/345. أما الذراع القائدة، فتستخدم ثلاثة محركات بنسب تروس مختلفة لضمان قدرتها على تحمل وزنها الذاتي، مع إمكانية تحريكها دون الحاجة إلى قوة كبيرة. يُوضح الجدول أدناه المحرك المطلوب لكل مفصل.

محور الذراع القائدالمحركنسبة التروس
الأساس / الكتف11 / 191
رفع الكتف21 / 345
ثني المرفق31 / 191
Wrist Flex41 / 147
تمرين دوران المعصم51 / 147
مقبض61 / 147

The input "Configure the motors" is a short phrase/heading. According to the instructions, headings and short phrases should be translated into natural Modern Standard Arabic. "Motors" in a technical context (likely robotics or hardware control) is translated as "المحركات". "Configure" is translated as "إعداد" or "تهيئة". "تهيئة المحركات" is a very common and professional term in technical documentation for "Configure the motors".

1. ابحث عن منافذ USB المرتبطة بكل ذراع

لإيجاد منفذ كل محوّل عتاد حافلة، قم بتوصيل MotorBus بجهازك عبر USB وتوصيله بالطاقة. نفّذ السكربت التالي وافصل MotorBus عند الطلب:

lerobot-find-port
Mac
Linux

مثال على المخرجات:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.

[...Disconnect corresponding leader or follower arm and press Enter...]

The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.

حيث أن المنفذ الذي تم العثور عليه هو: /dev/tty.usbmodem575E0032081 والذي يتوافق مع ذراع القائد أو التابع لديك.

2. تعيين معرّفات المحركات ومعدلات البود

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

لبلوغ هذا الهدف، نحتاج أولاً إلى الاتصال بكل محرك على حدة عبر وحدة التحكم من أجل ضبط هذه الإعدادات. وبما أننا سنكتب هذه المعلمات في القسم غير المتطاير من الذاكرة الداخلية للمحركات (EEPROM)، فلن نحتاج إلى القيام بذلك إلا مرة واحدة.

إذا كنت تعيد استخدام محركات من روبوت آخر، فستحتاج على الأرجح إلى تنفيذ هذه الخطوة أيضًا، حيث من المرجح أن تتطابق المعرفات ومعدل البود.

يُظهر الفيديو أدناه تسلسل الخطوات لضبط معرّفات المحركات.

فيديو إعداد المحركات

متابع

وصّل كابل usb من جهاز الحاسوب الخاص بك ومن مصدر الطاقة إلى لوحة تحكم ذراع المتابعة. ثم، نفّذ الأمر التالي أو نفّذ مثال الواجهة البرمجية API باستخدام المنفذ الذي حصلت عليه من الخطوة السابقة. ستحتاج أيضًا إلى منح ذراع المتابعة اسمًا باستخدام معامل id.

أمر
مثال على واجهة برمجة التطبيقات
lerobot-setup-motors \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem585A0076841  # <- paste here the port found at previous step

يجب أن ترى التعليمات التالية

Connect the controller board to the 'gripper' motor only and press enter.

كما هو موضح، قم بتوصيل محرك الماسك. تأكد من أنه المحرك الوحيد المتصل باللوحة، وأن المحرك نفسه غير موصول بعد بسلسلة متسلسلة مع أي محرك آخر. عند الضغط على [Enter]، سيقوم السكربت تلقائيًا بإعداد المعرّف ومعدل البود لهذا المحرك.

Troubleshooting

إذا واجهت خطأً في تلك النقطة، فتأكد من الكابلات وتأكد من أنها موصولة بشكل صحيح:

  • مزود الطاقة
  • كابل USB بين حاسوبك ولوحة التحكم
  • كابل 3-أطراف من لوحة التحكم إلى المحرك

إذا كنت تستخدم لوحة تحكم Waveshare، فتأكد من ضبط القفزين على قناة B (USB).

يجب أن ترى الرسالة التالية:

'gripper' motor id set to 6

يُتبع ذلك بالتعليم التالي:

Connect the controller board to the 'wrist_roll' motor only and press enter.

يمكنك فصل كابل 3-pin عن لوحة التحكم، لكن يمكنك تركه موصولاً بمحرك القبضة في الطرف الآخر، إذ سيكون في مكانه الصحيح بالفعل. الآن، وصّل كابل 3-pin آخر بمحرك دوران المعصم (wrist roll motor) ووصّله بلوحة التحكم. وكما في المحرك السابق، تأكد من أنه المحرك الوحيد الموصول باللوحة، وأن المحرك نفسه غير موصول بأي محرك آخر.

كرر العملية لكل محرك كما هو موضح في التعليمات.

تحقق من التوصيلات في كل خطوة قبل الضغط على مفتاح Enter. على سبيل المثال، قد تنفصل كابل مصدر الطاقة أثناء التعامل مع اللوحة.

عند الانتهاء، سينتهي تشغيل السكربت ببساطة، وعند ذلك تكون المحركات جاهزة للاستخدام. يمكنك الآن توصيل كابل 3-pins من كل محرك إلى المحرك التالي، ثم توصيل الكابل من المحرك الأول (وهو ‘shoulder pan’ المعرّف بـ id=1) إلى لوحة التحكم، والتي يمكن الآن تثبيتها على قاعدة الذراع.

القيادي

قم بنفس الخطوات للذراع القائدة.

أمر
مثال على واجهة برمجة التطبيقات
lerobot-setup-motors \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem575E0031751  # <- paste here the port found at previous step

أجزاء نظيفة

أزل جميع مواد الدعم من الأجزاء المطبوعة ثلاثية الأبعاد. أسهل طريقة للقيام بذلك هي استخدام مفك صغير للوصول إلى أسفل مواد الدعم.

يُنصح بتثبيت كابل واحد من ثلاث فتحات في المحرك بعد وضعها قبل المتابعة في التجميع.

المفصل 1

  • قم بتثبيت كلا من بوقَي المحرك. ثبّت البوق العلوي بمسمار M3x6mm. لا يلزم استخدام مسامير للبوق السفلي.
  • ضع المحرك الأول في القاعدة.
  • ثبّت المحرك بأربعة مسامير مقاس M2x6mm (أصغر المسامير). اثنان من الأعلى واثنان من الأسفل.
  • مرّر فوق حامل المحرك الأول وثبّته باستخدام برغيين من نوع M2x6mm (واحد على كل جانب).
  • أثبِت الجزء الخاص بالكتف.
  • شُدّ الجزء العلوي للكتف بأربعة براغي M3x6mm في الأعلى وأربعة براغي M3x6mm في الأسفل
  • أضِف حامل محرك الكتف.

الارتباط 2

  • قم بتثبيت كلا من بوقَي المحرك. ثبّت البوق العلوي بمسمار M3x6mm. لا يلزم استخدام مسامير للبوق السفلي.
  • انزِع المحرك الثاني من الأعلى.
  • ثبّت المحرك الثاني بأربعة مسامير مقاس M2x6mm.
  • اربط العضد العلوي بأربعة براغي مقاس M3x6mm على كل جانب.

الارتباط 3

  • قم بتثبيت كلا من بوقَي المحرك. ثبّت البوق العلوي بمسمار M3x6mm. لا يلزم استخدام مسامير للبوق السفلي.
  • أدخل المحرك 3 وثبّته باستخدام 4 براغي مقاس M2x6mm.
  • اربط الساعد بالمحرك 3 باستخدام 4 براغي مقاس M3x6mm على كل جانب.

المفصل 4

  • قم بتثبيت كلا من بوقَي المحرك. ثبّت البوق العلوي بمسمار M3x6mm. لا يلزم استخدام مسامير للبوق السفلي.
  • منزلق حامل المحرك 4.
  • انزلق في المحرك 4.
  • ثبّت المحرك 4 بأربعة براغي مقاس M2x6mm.

المفصل 5

  • أدخل المحرك 5 في حامل المعصم وثبّته بمسمارين أماميين مقاس M2x6mm.
  • قم بتثبيت قرن واحد فقط على محرك المعصم وثبّته بمسمار قرن مقاس M3x6mm.
  • ثبّت المعصم على المحرك 4 باستخدام 4 براغي M3x6mm على كلا الجانبين.

مقبض / مقبض

متابع
القيادي
  • اربط الماسك بالمحرك 5، وثبّته على قرن المحرك الموجود في المعصم باستخدام 4 براغي مقاس M3x6mm.
  • أدخل محرك الماسك وثبّته بمسمارين مقاس M2x6mm على كل جانب.
  • قم بتثبيت كلا قرني المحرك على محرك الماسك. ثبّت القرن العلوي بمسمار M3x6mm؛ ولا يلزم استخدام مسامير للقرن السفلي.
  • قم بتثبيت مخلب القبضة وتثبيته بأربعة براغي مقاس M3x6mm على كلا الجانبين.

المعايرة

في الخطوة التالية، ستحتاج إلى معايرة روبوتك للتأكد من أن ذراعي القائد والمتبوع تمتلكان قيم موضع متطابقة عندما تكونان في الموضع الفيزيائي نفسه. تُعد عملية المعايرة بالغة الأهمية لأنها تتيح لشبكة عصبية مُدرَّبة على روبوت واحد أن تعمل على روبوت آخر.

متابع

شغّل الأمر أو مثال واجهة برمجة التطبيقات التالي لمعايرة ذراع المتبّع:

أمر
مثال على واجهة برمجة التطبيقات
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem58760431551 \
    --robot.id=my_awesome_follower_arm

يُظهر الفيديو أدناه كيفية إجراء المعايرة. أولاً، عليك تحريك الروبوت إلى الموضع الذي تكون فيه جميع المفاصل في منتصف نطاقاتها. ثم، بعد الضغط على مفتاح الإدخال، يجب عليك تحريك كل مفصل عبر كامل نطاق حركته.

فيديو المعايرة

القيادي

قم بنفس الخطوات لمعايرة الذراع الرئيسية، ونفّذ الأمر التالي أو مثال واجهة برمجة التطبيقات:

أمر
مثال على واجهة برمجة التطبيقات
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem58760431551 \
    --teleop.id=my_awesome_leader_arm

تهانينا 🎉، روبوتك جاهز تمامًا لتعلم مهمة بشكل مستقل. ابدأ تدريبه باتباع هذا الشرح التعليمي: البدء مع الروبوتات الواقعية

إذا كانت لديك أي أسئلة أو كنت بحاجة إلى مساعدة، يرجى التواصل معنا عبر Discord.

Update on GitHub