LeRobot documentation

reBot B601

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

reBot B601

الذراع الروبوتية reBot B601 هي ذراع روبوتية مفتوحة المصدر من Seeed Studio مخصصة لتعلم التقليد والذكاء الاصطناعي التجسدي. يتكون الإعداد من ذراع متتبعة بست درجات حرية مزودة بمقبض، وذراع reBot Arm 102 قائدة للتحكم عن بُعد.

يتوفر المتتبع مع محركات Damiao (DM) أو RobStride (RS). تستخدم كلا التوليفات نفس نوع روبوت LeRobot وأسماء المفاصل؛ اختر العتاد باستخدام --robot.motor_family.

البناءmotor_familyمحركاتاتصال افتراضي
B601-DMdmداميانو (قاعدة 4340P، معصمان 4310)جسر Damiao التسلسلي
B601-RSrsRobStride (قاعدة rs-06، معصم rs-00)CAN الأصلي

يتناول هذا الدليل إعداد العتاد، والمعايرة، والتشغيل عن بُعد، والتسجيل، وذلك للإعدادات ذات الذراع الواحدة والإعدادات ذات الذراعين.

reBot B601 follower arm reBot Arm 102 leader arm

متتبع B601 (يسارًا) وقائد reBot Arm 102 (يمينًا). يتشارك متتبعا DM وRS نفس ترتيب المفاصل والمظهر العام، لكنهما يستخدمان محركات مختلفة. الصور بترتيب من Seeed Studio.

المعدات والسلامة

اجمع المحركات وصِلها وضبطها باستخدام دليل Seeed Studio الخاص بمتابِعك: B601-DM أو B601-RS.

Secure the follower to a stable surface and keep its workspace clear. Support the arm whenever torque is disabled or the program disconnects because it can move under gravity. If power or a data cable disconnects during operation, stop the program, return the leader and follower to their zero positions, then reconnect and restart.

تثبيت LeRobot 🤗

اتبع دليل التثبيت، ثم ثبّت دعم reBot:

pip install -e ".[rebot]"

يقوم هذا الأمر بتثبيت motorbridge للمتابعة وmotorbridge-smart-servo ليد الروبوت reBot Arm 102.

اتصال العتاد

يستخدم DM جسر التسلسل الافتراضي بشكل افتراضي ويمكنه اختيارياً استخدام CAN الأصلي. يتطلب RS استخدام CAN الأصلي.

can_adapterاستخداممنفذ مثال
damiaoجسر Damiao التسلسلي؛ DM فقط/dev/ttyACM0
socketcanCAN الأصلي في MotorBridge؛ مطلوب لـ RScan0

تختار عائلة المحرك المُكيّف الافتراضي. لتشغيل DM عبر CAN الأصلي بدلاً من ذلك، أضف --robot.can_adapter=socketcan واستخدم قناة CAN الخاصة به كـ --robot.port.

جسر تسلسلي

استخدم lerobot-find-port لتحديد منفذي جسر التسلسل DM والقائد. إذا كانت أسماء الأجهزة صعبة التمييز، فقم بتوصيل جهاز تسلسلي واحد في كل مرة.

lerobot-find-port
On Linux, remove `brltty` (`sudo apt remove brltty`) if it captures a serial device. You may also need temporary access with `sudo chmod 666 /dev/ttyACM* /dev/ttyUSB*`.

CAN الأصلي

يُحافظ على اسم التهيئة socketcan عبر المنصات. يستخدم نظام Linux تقنية SocketCAN. يتطلب نظام macOS محوّل PCAN متوافقًا وبيئة التشغيل MacCAN PCBUSB. دعم CAN الأصلي في نظام Windows تجريبي ويتطلب محوّل PEAK PCAN ومكتبة PCAN-Basic. راجع إعداد منصة MotorBridge لمعرفة تفاصيل التثبيت.

على نظام لينكس، قم بإعداد كل واجهة CAN أصلية بسرعة 1 ميغابت في الثانية قبل توصيل متابع RS:

sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
ip -details link show can0

استبدل can0 بالقناة التي يوفرها نظام CAN الخاص بك. تتطلب الإعدادات الثنائية اليدوية الأصلية لـ CAN قنوات منفصلة مثل can0 وcan1 لأن كلا الذراعين يستخدمان نفس معرّفات المحركات.

أنواع الأجهزة

النوعالجهاز
rebot_b601_followerمتابع واحد
bi_rebot_b601_followerالمتتبع ذو اليد
rebot_102_leaderذراع روبوت واحدة 102 قائد
bi_rebot_102_leaderBimanual reBot Arm 102 leader

motor_family افتراضيًا هو dm. في تكوين ثنائي اليد، لكل ذراع إعداداتها الخاصة left_arm_config.* أو right_arm_config.* ويمكنها اختيار عائلة المحركات الخاصة بها بشكل مستقل.

المعايرة

تقوم عملية المعايرة بتعيين الوضع الفيزيائي الحالي للمحرك كموضع الصفر، مع حفظ ملف معايرة LeRobot. ضع كل ذراع في موضع الصفر الموضح أدناه مع إغلاق الماسك بالكامل، ثم اضغط على ENTER عند الطلب.

reBot B601 follower arm at its zero position reBot Arm 102 leader arm at its zero position

موضع الصفر للمتبّع (يسار) وموضع الصفر للقائد (يمين). يُظهر الشكل المتبّع DM؛ بينما يستخدم المتبّع RS نفس ترتيب المفاصل.

أعد استخدام نفس --robot.id و--teleop.id في الأوامر اللاحقة حتى يقوم LeRobot بتحميل المعايرة المحفوظة. إذا كانت المعايرة موجودة مسبقًا، يتيح لك الأمر إعادة استخدامها أو إدخال c لإعادة المعايرة.

متابع

ذراع واحد (DM)
ذراع واحد (RS)
الذراعان (DM)
lerobot-calibrate \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower

القيادي

ذراع واحد
ذراعان
lerobot-calibrate \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader

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

ابدأ بحركات صغيرة وتحقق من اتجاه كل مفصل قبل استخدام مساحة العمل الكاملة.

ذراع واحد (DM)
ذراع واحد (RS)
الذراعان (DM)
lerobot-teleoperate \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader

تسجيل مجموعة بيانات

اختبر التشغيل عن بُعد قبل التسجيل. لإضافة كاميرا، حدّدها أولاً باستخدام:

lerobot-find-cameras opencv

ذراع واحد

يسجّل هذا المثال خمس حلقات DM محليًا باستخدام كاميرا OpenCV واحدة:

lerobot-record \
    --robot.type=rebot_b601_follower \
    --robot.motor_family=dm \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower \
    --robot.cameras='{"front": {"type": "opencv", "index_or_path": 0, "width": 640, "height": 480, "fps": 30}}' \
    --teleop.type=rebot_102_leader \
    --teleop.port=/dev/ttyUSB0 \
    --teleop.id=leader \
    --dataset.repo_id=your_username/rebot-dm-test \
    --dataset.single_task="Pick up the object" \
    --dataset.num_episodes=5 \
    --dataset.episode_time_s=30 \
    --dataset.reset_time_s=10 \
    --dataset.push_to_hub=false \
    --display_data=true

بالنسبة إلى RS، غيّر motor_family إلى rs ومنفذ الروبوت إلى قناة CAN الأصلية. احذف معامل الكاميرا لاختبار المحرك فقط.

اليدوي

يسجّل هذا المثال الخاص بـ DM كاميرا علوية مشتركة وكاميرا معصم واحدة لكل ذراع. مفاتيح الكاميرات في مجموعة البيانات هي top وleft_wrist وright_wrist.

lerobot-record \
    --robot.type=bi_rebot_b601_follower \
    --robot.id=bi_follower \
    --robot.left_arm_config.motor_family=dm \
    --robot.left_arm_config.port=/dev/ttyACM0 \
    --robot.right_arm_config.motor_family=dm \
    --robot.right_arm_config.port=/dev/ttyACM1 \
    --robot.cameras='{
      top: {
        type: opencv,
        index_or_path: "/dev/video2",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --robot.left_arm_config.cameras='{
      wrist: {
        type: opencv,
        index_or_path: "/dev/video0",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --robot.right_arm_config.cameras='{
      wrist: {
        type: opencv,
        index_or_path: "/dev/video4",
        width: 640,
        height: 480,
        fps: 30,
        fourcc: "MJPG"
      }
    }' \
    --teleop.type=bi_rebot_102_leader \
    --teleop.id=bi_leader \
    --teleop.left_arm_config.port=/dev/ttyUSB0 \
    --teleop.right_arm_config.port=/dev/ttyUSB1 \
    --dataset.repo_id=local/rebot-bimanual-dm-camera-test \
    --dataset.root=/tmp/rebot-bimanual-dm-camera-test \
    --dataset.single_task="Test coordinated movement of both reBot DM arms" \
    --dataset.fps=30 \
    --dataset.num_episodes=2 \
    --dataset.episode_time_s=20 \
    --dataset.reset_time_s=10 \
    --dataset.push_to_hub=false \
    --display_data=false

لإعداد ثنائي اليد من نوع RS، اضبط كلا عائلتي المحركات على rs واستخدم قنوات CAN أصلية منفصلة. يمكن لإعداد مختلط اختيار dm ليد واحدة وrs لليد الأخرى.

راجع التعلّم بالتقليد للروبوتات لرفع البيانات وإعادة تشغيلها وتدريب سياسة وتقييمها.

التحكم المتقدم

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

  • يستخدم DM التحكم MIT للذراع وforce_pos للمقبض افتراضياً. القيمة الافتراضية لـgripper_torque_ratio هي 0.07؛ كما يدعم DM أيضاً --robot.control_mode=pos_vel.
  • يستخدم RS التحكم MIT ومقبض عزم مقاوم محدود القوة لأن MotorBridge لا يوفر force_pos لـ RobStride. اعتمادًا على حركة المقبض المقاسة، يُحدَّد العزم المُمرَّر بحد أقصى 3.5 نيوتن·متر أثناء الحركة أو 1.0 نيوتن·متر أثناء الإمساك. إذا فشل التغذية الراجعة، يحاول LeRobot تمرير عزم صفر للمقبض ثم يعطّل الذراع.
  • mit_kp وmit_kd وpos_vel_velocity تقبل قيمة عددية واحدة لكل مفصل أو تخطيطًا مفاتيحيًا للمفاصل.
  • max_relative_target يحدد الحد الأقصى للفارق بين الأمر والموقع المقاس الأخير. على سبيل المثال، --robot.max_relative_target=5.0 يقيّد كل مفصل مُصدر أمر له بتغيير قدره خمس درجات.
  • joint_limits يتجاوز افتراضات العائلة اختيارياً في درجات المفاصل العامة.

تُختار اتجاهات محرك المتبوع داخليًا من عائلة المحرك. وتبقى joint_directions الخاصة بالمتصدر قابلة للتهيئة إذا تحرك مفصل التشغيل عن بُعد في الاتجاه الخاطئ.

DM and RS use the same coordinate convention, but their geometry, gains, and dynamics differ. Validate policies and datasets before transferring them between builds.

استكشاف الأخطاء وإصلاحها

المشكلةتحقق
الجهاز التسلسلي مفقود أو مشغولأعد توصيل جهاز واحد في كل مرة، وأعد تشغيل lerobot-find-port، وتحقق من الصلاحيات، وأزل brltty على نظام Linux.
لا يمكن لـ CAN الأصلي الاتصالتحقق من وقت تشغيل المحوّل، واسم القناة، ومعدل البت 1 ميغابت في الثانية، وقوة المحرك، وتوصيلات CAN، والإنهاء.
يتحرك مفصل مُدار عن بُعد في الاتجاه الخاطئأوقف البرنامج، وتأكد من motor_family، وتحقق من joint_directions للقائد.
لا يتم إعادة استخدام المعايرةاستخدم id نفسه للروبوت أو المشغّل عن بُعد الذي تم استخدامه أثناء المعايرة.

بالنسبة للتجميع والتوصيل وتشخيصات الأجهزة المحددة، راجد أدلة Seeed Studio الخاصة بـ B601-DM و B601-RS.

Update on GitHub