Learning with pyCub: A Simulation and Exercise Framework for Humanoid Robotics
تقدم هذه الورقة pyCub، وهو إطار عمل محاكاة مفتوح المصدر وقائم على لغة بايثون للروبوت البشري iCub، والذي يلغي الحاجة إلى لغة C++ ووسيط YARP مع توفير تمارين قابلة للتوسع لتدريس أساسيات الروبوتات للطلاب ذوي المهارات البرمجية المتفاوتة.
تخيل أنك تريد تعليم فصل من الطلاب كيفية بناء روبوت والتحكم فيه. في الماضي، كان الأمر يشبه محاولة تعليم شخص ما كيفية قيادة سيارة فورمولا 1 عبر تسليمه دليلاً مكتوباً بلغة سرية (C++) وطلب منك تجميع المحرك بينما ترتدي قفازات الفرن (برمجيات معقدة تسمى YARP). كان ذلك قوياً، لكنه كان محبطاً للغاية للمبتدئين.
قرر مؤلفا هذه الورقة، لوكاس وماتيج، بناء مدرسة لتعليم قيادة الروبوتات يمكن لأي شخص الانضمام إليها، حتى لو لم يلمس مفتاح ربط أو يكتب سطراً برمجياً واحداً من قبل. وقد أطلقوا على أداتهم الجديدة اسم pyCub.
إليك تفصيل لمشروعهم باستخدام تشبيهات بسيطة:
1. الروبوت: توأم رقمي لطفل
الروبوت الذي يعلمونه هو iCub. فكر في iCub كتوأم رقمي لطفل في الرابعة من عمره. لديه 53 مفصلاً متحركاً (مثل المرفقين، والركبتين، والأصابع)، والأهم من ذلك، لديه "جلد".
الجلد: تخيل أن الروبوت مغطى بـ 4,000 مستشعر لمس صغير وغير مرئي. إذا نقرت على ذراعه، فهو لا يشعر فقط بـ "الألم"؛ بل يعرف بالضبط أين نقرت ومدى قوة الضربة.
الطريقة القديمة: كانت المحاكيات السابقة تشبه محاولة قيادة هذا الروبوت عبر ضباب كثيف باستخدام جهاز تحكم عن بعد يتحدث لغة أجنبية فقط. كان عليك أن تكون ساحراً في البرمجة لمجرد جعله يلوح بيده للتحية.
الطريقة الجديدة (pyCub): بنى المؤلفون محاكياً جديداً باستخدام لغة Python، وهي لغة برمجة تُقرأ تقريباً مثل اللغة الإنجليزية. إنه يشبه الانتقال من سيارة سباق معقدة ذات ناقل حركة يدوي إلى سيارة لعبة أوتوماتيكية ذاتية القيادة يمكنك التحكم فيها بجهاز تحكم بسيط.
2. الملعب: صندوق رمال افتراضي
يعمل نظام المحاكاة على محرك فيزيائي (عالم رقمي حيث تعمل الجاذبية والاصطدامات مثل الحياة الواقعية).
البصريات: يمكنك رؤية الروبوت، وطاولة، وكرة خضراء. يمكنك حتى رؤية ما "يراه" الروبوت من خلال عينيه.
الجلد في العمل: إذا اصطدم الروبوت بالكرة، يضيء المحاكي النقاط المحددة على جلد الروبوت حيث حدث التلامس، تماماً مثل الخريطة الحرارية التي تظهر مكان لمس موقد ساخن.
الأداء: يعمل النظام بسرعة كافية لتتمكن من مشاهدة الروبوت وهو يتحرك في الوقت الفعلي، أو حتى إبطاء الحركة لدراسة كل حركة صغيرة، مثل مشاهدة فيلم بالتصوير البطيء.
3. الدروس: من "الدفع" إلى "الرقص"
الورقة ليست مجرد بحث عن البرمجيات؛ بل هي عن التمارين المصممة لتعليم الطلاب. فكر في هذه التمارين كأنها مستويات في لعبة فيديو:
المستوى 1: "ادفع الكرة!"
الهدف: إخراج كرة من فوق الطاولة.
الدرس: يتعلم الطلاب الأساسيات. يمكنهم ضرب الكرة، أو دفعها، أو حتى التقاطها ورميها. إنها لحظة "Hello World" حيث يدركون: "مهلاً، يمكنني جعل هذا الشيء يتحرك!"
المستوى 2: "الحركات السلسة"
الهدف: جعل الروبوت يرسم دائرة مثالية أو يتحرك في خط مستقيم دون اهتزاز.
الدرس: الروبوتات الحقيقية لا تقفز ببساطة من النقطة أ إلى النقطة ب؛ بل تحتاج إلى الانسيابية. هذا يعلم الطلاب كيفية تخطيط مسار بحيث يتحرك الروبوت ببراعة، مثل الراقص بدلاً من الآلة.
المستوى 3: "التحكم في النظر"
الهدف: إبقاء عيني الروبوت مثبتتين على كرة متحركة.
الدرس: يتعلق هذا بالتركيز. يجب على الروبوت تحريك رأسه وعينيه في آن واحد لتتبع جسم ما. الأمر يشبه لعب "الالتقاط" مع صديق؛ عليك باستمرار تعديل رأسك لتبقي الكرة في مجال رؤيتك.
** المستوى 4: "اللمس التفاعلي"**
الهدف: إذا اصطدم الروبوت بشيء ما، يجب أن يبتعد فوراً.
الدرس: يتعلق هذا بالسلامة وردود الفعل. إذا لمس إنسان الروبوت، فلا ينبغي للروبوت أن يستمر في الدفع. هو يستخدم "جلده" ليشعر باللمسة ويحسب فوراً كيف يحرك ذراعه بعيداً. إنه مثل رد الفعل الذي تملكه عندما تلمس مقلاة ساخنة وتسحب يدك فوراً.
المستوى 5: "الإمساك"
الهدف: يجب على الروبوت النظر إلى الكرة، والعثور عليها، والتقاطها، ورفعها دون إسقاطها.
الدرس: هذا يجمع بين "الرؤية" (رؤية الكرة) و"المهارات الحركية" (الإمساك بها). إنه الاختبار النهائي للتنسيق.
4. لماذا هذا مهم؟
اختبر المؤلفون هذا النظام في فصل جامعي حقيقي.
قبل: كان الطلاب يقضون أسابيع في صراع مع البرمجيات، وتجميع الأكواد، وإصلاح الأخطاء. كانوا مشغولين جداً بإصلاح "السيارة" لدرجة منعتهم من تعلم كيفية "القيادة".
بعد: مع pyCub، قضى الطلاب وقتهم في تعلم الروبوتات. ركزوا على المنطق، والحركة، والتفاعل. حتى أن أحد الطلاب اكتشف كيفية ركل الكرة بدلاً من دفعها، مما أظهر أنهم كانوا يفكرون بإبداع بدلاً من مجرد اتباع دليل التعليمات.
الخلاصة
pyCub يشبه مجموعة "ليغو" للروبوتات. بدلاً من إعطاء الطلاب كومة من المعدن الخام ودليلاً بلغة لا يتحدثونها، أعطاهم المؤلفون مجموعة جاهزة التركيب وسهلة الاستخدام حيث يمكنهم البدء فوراً في البناء، والتجربة، والتعلم. إنه يفتح باب عالم الروبوتات البشرية أمام أي شخص يرغب في التعلم، وليس فقط الخبراء.
1. بيان المشكلة
حدد المؤلفون عائقًا كبيرًا في تعليم الروبوتات: فبينما توجد كتب مدرسية ومحاكيات ممتازة، إلا أنها غالبًا ما تفتقر إلى التمارين العملية الميسرة للمبتدئين. وتحديدًا، يواجه بيئة المحاكاة القياسية لروبوت الإنسان iCub (وهو منصة بحثية مفتوحة المصدر واسعة الاستخدام) عدة عقبات:
التعقيد: تعتمد محاكيات iCub الحالية (iCub SIM و iCub Gazebo) على لغة C++ ووسيط YARP.
منحنى تعلم حاد: إعداد البيئة عملية معقدة، كما أن بناء الجملة (syntax) للغة C++/YARP صعبة على الطلاب ذوي الخبرة البرمجية المحدودة.
التغذية الراجعة: في الدورات التدريبية السابقة، اشتكى الطلاب من أن تعقيد الوسيط (middleware) ومشكلات التجميع (compilation) تشتت انتباههم عن تعلم مفاهيم الروبوتات الأساسية.
كان الهدف هو إنشاء إطار عمل محاكاة موحد وسهل الوصول يعتمد على لغة Python، مع الحفاظ على الدقة الفيزيائية لـ iCub (بما في ذلك جلده الكامل الفريد) مع خفض حاجز الدخول للطلاب.
2. المنهجية
طوّر المؤلفون pyCub، وهو إطار عمل محاكاة قائم على الفيزياء ومفتوح المصدر، مكتوب بالكامل بلغة Python.
أ. بنية المحاكاة
محرك الفيزياء: مبني على PyBullet، الذي تم اختياره لكونه مفتوح المصدر، ومتعدد المنصات، وفعالًا حاسوبيًا مقارنة بالمحركات الثقيلة مثل NVIDIA Isaac Sim.
نموذج الروبوت: توأم رقمي كامل لروبوت iCub، يتميز بـ:
53 درجة حرية (DoF) نشطة.
جلد اصطناعي: محاكاة لأكثر من 4,000 مستشعر لمسي (taxel) تغطي سطح الجسم.
الرؤية: كاميرتان تقعان في العينين.
الرندرة (Rendering): يستخدم Open3D لواجهة مستخدم رسومية (GUI) قابلة للتخصيص، لتحل محل واجهة PyBullet الافتراضية للسماح بتصورات مخصصة (مثل ناقلات النظر/gaze vectors) وأداء أفضل.
تقنية محاكاة الجلد: بدلاً من محاكاة التشوه الفيزيائي، يستخدم الجلد تقنية إسقاط الأشعة (raycasting). يتم إطلاق أشعة من كل مستشعر لمسي؛ وإذا اصطدمت الأشعة بجسم ما، يتم حساب قيمة المستشعر بشكل تناسبي مع طول الشعاع. ولتحسين الأداء، يتم تفعيل إسقاط الأشعة فقط عند اكتشاف تداخل في الصندوق المحيط (bounding box).
ب. أوضاع التحكم
يدعم إطار العمل ثلاث واجهات تحكم، جميعها متاحة عبر Python:
التحكم في سرعة المفاصل (Joint Velocity Control): ضبط السرعة المباشرة (راديان/ثانية) للتحكم التفاعلي.
التحكم في موضع المفاصل (Joint Position Control): ضبط الموضع المستهدف (راديان) مع التحقق الاختياري من التصادم الذاتي.
التحكم في الموضع الكارتيزي (Cartesian Position Control): يحرك النهاية الطرفية (end-effector) إلى وضعية سداسية الأبعاد باستخدام الحركية العكسية (IK) عبر طريقة "المربعات الصغرى المخمدة" (Damped Least Squares). ملاحظة: لا يتضمن تخطيط المسار أو التحقق من التصادم، حيث يعمل كأداة تعليمية لفهم حدود الحركية العكسية.
ج. الإطار التعليمي
يتضمن النظام مجموعة من التمارين تتراوح من الأساسية إلى المتقدمة، وكل منها مصحوب بملفات تهيئة، ونصوص مهام (assignment scripts)، ونصوص اختبار.
التهيئة: قابلة للتخصيص بالكامل عبر ملفات .yaml (تمكين/تعطيل الواجهة الرسومية، الجلد، ضبط مواضع المفاصل الأولية، إضافة أشياء مثل الطاولات أو الكرات).
النشر: متاح عبر PyPI، وحاويات Docker، وGitPod (عبر الإنترنت)، مما يضمن التوافق عبر المنصات (Linux، Windows، macOS).
3. المساهمات الرئيسية
محاكي pyCub: محاكي وظيفي كامل لروبوت iCub يعتمد أصليًا على Python، ويلغي الحاجة إلى YARP وC++.
محاكاة جلد عالية الدقة: نجح في محاكاة الجلد الاصطناعي الفريد لـ iCub المكون من 4,000 مستشعر باستخدام تقنية إسقاط الأشعة المحسنة، وهي ميزة غالبًا ما تُفقد أو تُبسط في محاكيات تعليمية أخرى.
تمارين جاهزة للمناهج الدراسية: مجموعة منظمة من التمارين تغطي:
التحكم الأساسي: دفع الأشياء، توليد مسارات سلسة (خطوط/دوائر).
التحكم في النظر (Gaze Control): التثبيت على أهداف متحركة باستخدام الجبر المتجهي.
التحكم التفاعلي: استخدام بيانات الجلد والتحكم في الحركة عبر معدل الحل (RRMC) لتجنب الاصطدامات.
الإمساك (Grasping): الإمساك القائم على الرؤية الحاسوبية (اكتشاف كرة في صور RGB-D، وإعادة الإسقاط إلى 3D، وتنفيذ عملية الإمساك).
سهولة الوصول: يتيح إطار العمل للطلاب ذوي الخبرة البرمجية الدنيا الانخراط في مفاهيم روبوتات بشرية معقدة.
4. النتائج
تقييم الأداء:
تم الاختبار على جهاز لاب توب متوسط (Ryzen 7 PRO) ومحطة عمل (Intel i9).
عامل الوقت الحقيقي (Real-time Factor): تعمل المحاكاة بالقرب من الوقت الحقيقي (عامل ~0.95) على لاب توب مع تفعيل النموذج الكامل (الجلد + الواجهة الرسومية). بدون الجلد، يزدير الأداء بشكل كبير (عامل ~6.73 على اللاب توب).
محطة العمل: تحقق باستمرار عوامل أكبر من 2.0، مما يسمح بمحاكاة أسرع من الوقت الحقيقي أو تشغيل نسخ متعددة لتعلم التعزيز (reinforcement learning).
النشر التعليمي:
تم النشر بنجاح في دورتين جامعيتين حول الروبوتات البشرية.
تعليقات الطلاب: مقارنة بالدورات السابقة التي استخدمت C++/YARP، أفاد الطلاب بانخفاض ملحوظ في الإحباط الناتج عن إعداد النظام. لقد تمكنوا من التركيز على خوارزميات الروبوت (الحركية، الديناميكا، التحكم) بدلاً من تجميع الوسيط (middleware compilation).
التفاعل: أظهر الطلاب إبداعًا في التمارين (مثل إيجاد طرق مبتكرة لدفع الكرة، مثل الركل أو الرمي، بدلاً من مجرد ضربها).
5. الأهمية
دمقرطة الروبوتات البشرية: من خلال إزالة حاجز C++/YARP، يجعل pyCub دراسة الروبوتات البشرية المتقدمة متاحة لنطاق أوسع من الطلاب، بما في ذلك أولئك في المراحل الأولى من تعليمهم الهندسي.
القيمة التربوية: يجسد إطار العمل الفجوة بين الكتب المدرسية النظرية والتطبيق العملي. تم تصميم التمارين لتدريس المفاهيم الأساسية (IK، Jacobians، RRMC، الرؤية الحاسوبية) من خلال التعامل المباشر مع نموذج بشري واقعي.
العلم المفتوح: النظام البيئي بأكمله (الكود، التوثيق، صور Docker، والفيديوهات) متاح للجمهور، مما يعزز قابلية التكرار والمساهمة المجتمعية.
الإمكانات المستقبلية: يخطط المؤلفون لدمج واجهات ROS للتخطيط الكارتيزي المتقدم وتطوير تمارين للمشي البشري والاستشعار القائم على الأحداث، مما يوسع نطاق فائدة المنصة في البحث والتعليم.