LeRobot documentation
reBot B601
reBot B601
الذراع الروبوتية reBot B601 هي ذراع روبوتية مفتوحة المصدر من Seeed Studio مخصصة لتعلم التقليد والذكاء الاصطناعي التجسدي. يتكون الإعداد من ذراع متتبعة بست درجات حرية مزودة بمقبض، وذراع reBot Arm 102 قائدة للتحكم عن بُعد.
يتوفر المتتبع مع محركات Damiao (DM) أو RobStride (RS). تستخدم كلا التوليفات نفس نوع روبوت LeRobot وأسماء المفاصل؛ اختر العتاد باستخدام --robot.motor_family.
| البناء | motor_family | محركات | اتصال افتراضي |
|---|---|---|---|
| B601-DM | dm | داميانو (قاعدة 4340P، معصمان 4310) | جسر Damiao التسلسلي |
| B601-RS | rs | RobStride (قاعدة rs-06، معصم rs-00) | CAN الأصلي |
يتناول هذا الدليل إعداد العتاد، والمعايرة، والتشغيل عن بُعد، والتسجيل، وذلك للإعدادات ذات الذراع الواحدة والإعدادات ذات الذراعين.

متتبع 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 |
socketcan | CAN الأصلي في MotorBridge؛ مطلوب لـ RS | can0 |
تختار عائلة المحرك المُكيّف الافتراضي. لتشغيل 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_leader | Bimanual reBot Arm 102 leader |
motor_family افتراضيًا هو dm. في تكوين ثنائي اليد، لكل ذراع إعداداتها الخاصة left_arm_config.* أو right_arm_config.* ويمكنها اختيار عائلة المحركات الخاصة بها بشكل مستقل.
المعايرة
تقوم عملية المعايرة بتعيين الوضع الفيزيائي الحالي للمحرك كموضع الصفر، مع حفظ ملف معايرة LeRobot. ضع كل ذراع في موضع الصفر الموضح أدناه مع إغلاق الماسك بالكامل، ثم اضغط على ENTER عند الطلب.

موضع الصفر للمتبّع (يسار) وموضع الصفر للقائد (يمين). يُظهر الشكل المتبّع DM؛ بينما يستخدم المتبّع RS نفس ترتيب المفاصل.
أعد استخدام نفس --robot.id و--teleop.id في الأوامر اللاحقة حتى يقوم LeRobot بتحميل المعايرة المحفوظة. إذا كانت المعايرة موجودة مسبقًا، يتيح لك الأمر إعادة استخدامها أو إدخال c لإعادة المعايرة.
متابع
lerobot-calibrate \
--robot.type=rebot_b601_follower \
--robot.motor_family=dm \
--robot.port=/dev/ttyACM0 \
--robot.id=followerlerobot-calibrate \
--robot.type=rebot_b601_follower \
--robot.motor_family=rs \
--robot.port=can0 \
--robot.id=followerتُنفَّذ عمليات المعايرة للمتبِع الأيسر ثم للمتبِع الأيمن.
lerobot-calibrate \
--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لأتباع RS اثنين، اضبط كلا العائلتين على rs واستخدم قنوات CAN أصلية منفصلة للميناءين. تستخدم ملفات معايرة كل ذراع لاحقات _left و_right.
القيادي
lerobot-calibrate \
--teleop.type=rebot_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=leaderlerobot-calibrate \
--teleop.type=bi_rebot_102_leader \
--teleop.id=bi_leader \
--teleop.left_arm_config.port=/dev/ttyUSB0 \
--teleop.right_arm_config.port=/dev/ttyUSB1التشغيل عن بُعد
ابدأ بحركات صغيرة وتحقق من اتجاه كل مفصل قبل استخدام مساحة العمل الكاملة.
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=leaderlerobot-teleoperate \
--robot.type=rebot_b601_follower \
--robot.motor_family=rs \
--robot.port=can0 \
--robot.id=follower \
--teleop.type=rebot_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=leaderlerobot-teleoperate \
--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 \
--teleop.type=bi_rebot_102_leader \
--teleop.id=bi_leader \
--teleop.left_arm_config.port=/dev/ttyUSB0 \
--teleop.right_arm_config.port=/dev/ttyUSB1تسجيل مجموعة بيانات
اختبر التشغيل عن بُعد قبل التسجيل. لإضافة كاميرا، حدّدها أولاً باستخدام:
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