LeRobot documentation
OMX
OMX
ترتيب الأجزاء وتجميعها
أولاً، قم بتجميع عتاد OMX وفقاً لدليل التجميع الرسمي.
دليل تجميع OMX: https://ai.robotis.com/omx/assembly_guide_omx.html
تُشحن روبوتات OMX مُهيأة مسبقًا من المصنع. حيث تم ضبط معرّفات المحركات، ومعاملات الاتصال، وإزاحات المفاصل مسبقًا، لذا لا حاجة إلى أي إعداد إضافي للمحركات أو معايرة قبل استخدام LeRobot.
تثبيت LeRobot 🤗
لتثبيت LeRobot، اتبع دليل التثبيت
بالإضافة إلى هذه التعليمات، تحتاج إلى تثبيت دعم محركات Dynamixel:
pip install -e ".[dynamixel]"اتصل بالروبوت
لإيجاد منفذ كل محوّل عتاد حافلة، نفّذ هذا النص البرمجي:
lerobot-find-port
This command runs and when prompted, disconnect the USB cable from either the leader or follower arm and press Enter. The output will show ‘The port of this MotorsBus is [port]’. This identifies the port for the disconnected arm. Repeat for the other arm to identify both ports.
مثال على المخرجات في macOS:
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 والذي يتوافق مع ذراع القائد أو التابع لديك.
على نظام Linux، نوصي بشدة باستخدام قواعد udev لتعيين أسماء أجهزة دائمة وقابلة للقراءة من قبل الإنسان على ذراعي القادة والمتابعين في OMX. وهذا يتجنب المشكلات التي تنشأ عندما تتغير أسماء الأجهزة مثل ttyACM0 و ttyACM1 عند فصل الروبوت أو إعادة توصيله، أو عند إعادة تشغيل النظام.
1. ابحث عن أرقام تسلسل أجهزتك
يجب أن تكون قد حصلت على أرقام المنافذ على غرار ../../ttyACM? للقائد والمتبّع باستخدام lerobot-find-port. يمكنك مطابقة تلك النتائج مع الأرقام التسلسلية باستخدام أمر ls -l /dev/serial/by-id/.
لإنشاء قواعد udev، تحتاج إلى الرقم التسلسلي الفريد لكل جهاز OMX. أسهل طريقة هي سرد الأجهزة الموجودة تحت:
ls -l /dev/serial/by-id/ستظهر لك مخرجات مماثلة لما يلي:
usb-ROBOTIS_OpenRB-150_228BDD7B503059384C2E3120FF0A2B19-if00 -> ../../ttyACM0 usb-ROBOTIS_OpenRB-150_67E1ED68503059384C2E3120FF092234-if00 -> ../../ttyACM1
في كل سطر، الرقم التسلسلي هو السلسلة الطويلة بعد usb-ROBOTIS_OpenRB-150_ وقبل -if00.
سلسلة المتابع: 228BDD7B503059384C2E3120FF0A2B19
المتسلسل للقائد: 67E1ED68503059384C2E3120FF092234
2. إنشاء قاعدة udev
أنشئ ملف قاعدة udev جديد:
sudo nano /etc/udev/rules.d/99-omx.rulesالصق الأسطر التالية، مع استبدال الأرقام التسلسلية بالقيم التي وجدتها أعلاه:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="228BDD7B503059384C2E3120FF0A2B19", SYMLINK+="omx_follower"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="67E1ED68503059384C2E3120FF092234", SYMLINK+="omx_leader"احفظ الملف وأعد تحميل قواعد udev:
sudo udevadm control --reload-rules
sudo udevadm triggerالآن افصل الجهازين وأعد توصيلهما مرة واحدة.
3. تحقق من الروابط الرمزية
تحقق من وجود أسماء الأجهزة الدائمة:
ls -l /dev/omx_follower /dev/omx_leaderيجب أن ترى أنهما يشيران إلى أجهزة ttyACM*:
/dev/omx_follower -> ttyACM* /dev/omx_leader -> ttyACM*
تبقى هذه الأسماء مستقرة عبر عمليات إعادة التشغيل وإعادة الاتصال.
التشغيل عن بُعد
بعد تحديد المنافذ الصحيحة، يمكنك تشغيل الذراع التابع عن بُعد مباشرةً باستخدام الذراع القائد.
التحكم عن بُعد دون كاميرا
lerobot-teleoperate \ --robot.type=omx_follower \ --robot.port=<your_follower_port> \ --robot.id=omx_follower_arm \ --teleop.type=omx_leader \ --teleop.port=<your_leader_port> \ --teleop.id=omx_leader_arm
أثناء التشغيل عن بُعد، تُنقل حركات الذراع القائدة إلى الذراع المتتبعة في الوقت الفعلي. تم ضبط OMX مسبقًا، ويمكن بدء التشغيل عن بُعد فورًا دون الحاجة إلى أي خطوات معايرة.
التحكم عن بُعد باستخدام الكاميرا
يمكنك أيضًا تمكين إدخال الكاميرا أثناء التشغيل عن بُعد من خلال توفير تكوين كاميرا للذراع التابع.
lerobot-teleoperate \
--robot.type=omx_follower \
--robot.port=<your_follower_port> \
--robot.id=omx_follower_arm \
--robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
--teleop.type=omx_leader \
--teleop.port=<your_leader_port> \
--teleop.id=omx_leader_arm \
--display_data=trueعند تفعيل الكاميرا، يتم عرض بث الكاميرا في الوقت الفعلي ومزامنته مع حالة الروبوت. يُعد هذا الإعداد مفيدًا للمراقبة البصرية ويمكن إعادة استخدامه لاحقًا لتسجيل العروض التوضيحية وتعلم التقليد.
التحكم عن بُعد دون كاميرا
lerobot-teleoperate \ --robot.type=omx_follower \ --robot.port=/dev/omx_follower \ --robot.id=omx_follower_arm \ --teleop.type=omx_leader \ --teleop.port=/dev/omx_leader \ --teleop.id=omx_leader_arm
أثناء التشغيل عن بُعد، تُنقل حركات الذراع القائدة إلى الذراع المتتبعة في الوقت الفعلي. تم ضبط OMX مسبقًا، ويمكن بدء التشغيل عن بُعد فورًا دون الحاجة إلى أي خطوات معايرة.
التحكم عن بُعد باستخدام الكاميرا
يمكنك أيضًا تمكين إدخال الكاميرا أثناء التشغيل عن بُعد من خلال توفير تكوين كاميرا للذراع التابع.
lerobot-teleoperate \
--robot.type=omx_follower \
--robot.port=/dev/omx_follower \
--robot.id=omx_follower_arm \
--robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
--teleop.type=omx_leader \
--teleop.port=/dev/omx_leader \
--teleop.id=omx_leader_arm \
--display_data=trueعند تفعيل الكاميرا، يتم عرض بث الكاميرا في الوقت الفعلي ومزامنته مع حالة الروبوت. يُعد هذا الإعداد مفيدًا للمراقبة البصرية ويمكن إعادة استخدامه لاحقًا لتسجيل العروض التوضيحية وتعلم التقليد.
تهانينا 🎉، روبوتك جاهز تمامًا لتعلم مهمة على نحو مستقل.
Update on GitHubإذا كانت لديك أي أسئلة أو كنت بحاجة إلى مساعدة، يرجى التواصل معنا عبر Discord.