02 · 2025

بناء خريطة مشتركة باستخدام سرب من روبوتات Lego EV3 ونظام ROS 2

روبوتان من طراز Lego Mindstorms EV3 يبنيان معًا خريطة واحدة مشتركة، عبر جسر MQTT يربطهما بنظام ROS 2 و SLAM Toolbox — أول مشروع لي في ROS 2، منفَّذ على عتاد لم يُصمَّم أصلًا لتشغيله.

المشكلة

لم يكن لدى مخبر الجامعة إمكانيات لبناء روبوتات من الصفر، فكانت الروبوتات الوحيدة المتاحة هي وحدات Lego Mindstorms EV3 — قادرة فقط على تشغيل المحركات وقراءة حساس تقارب واحد بالأشعة تحت الحمراء، وبعيدة كل البعد عن القدرة الحوسبية اللازمة لتشغيل ROS 2 عليها مباشرة. مع ذلك، كان مطلوبًا من روبوتين استكشاف المكان بشكل مستقل ثم دمج ما يرصدانه في خريطة واحدة متسقة، ما فرض تصميم طريقة لربط روبوت EV3 بمنظومة ROS 2 كاملة لا يمكنه استضافتها بنفسه.

ما الذي بنيته

عقدة ROS 2 تعمل بالكامل على حاسوب مركزي وتتواصل مع كل روبوت EV3 عبر جسر MQTT (باستخدام وسيط Mosquitto)، بينما لا يشغّل الروبوت نفسه سوى سكربت Python خفيف (ev3dev2) مهمته نقل قراءات الحساسات وتنفيذ أوامر المحركات. على جهة الحاسوب، تُحوَّل قراءة الحساس الواحد إلى إشارة LaserScan مؤلفة من ثلاث أشعة حتى يستطيع SLAM Toolbox العمل وكأن حساس ليزر حقيقي متصل، مع نشر الحركة التفاضلية (odometry) وإطارات TF لكل روبوت، وتشغيل SLAM Toolbox في وضع متزامن (synchronized) للروبوتين معًا. حزمة منفصلة لدمج الخرائط تجمع شبكتي الإشغال الخاصتين بكل روبوت وتنشر التحويل (TF) بين خريطة كل روبوت والخريطة المدموجة.

كيف يعمل

  • جسر MQTT (عبر Mosquitto) بين سكربت ev3dev2 على كل روبوت EV3 وعقدة ROS 2 على الحاسوب المركزي — بيانات الحساسات والمشفّرات (encoders) باتجاه، وأوامر المحركات بالاتجاه المعاكس، بمعدل تحديث نحو 10 مرات بالثانية.
  • حساس تقارب واحد بالأشعة تحت الحمراء لكل روبوت، جرى تحويله على جهة الحاسوب إلى إشارة sensor_msgs/LaserScan من ثلاث أشعة، لتلبية متطلبات SLAM Toolbox دون الحاجة لحساس ليزر (LiDAR) حقيقي.
  • حساب الحركة التفاضلية (odometry) لكل روبوت ونشر التحويل odom → base_footprint، إضافة إلى وحدة تحكم بسيطة لتجنب العوائق تعمل على الحاسوب.
  • تشغيل SLAM Toolbox في الوضع المتزامن، نسخة لكل روبوت، تُغذّي حزمة خارجية لدمج الخرائط تنشر شبكة الإشغال المدموجة والتحويل بين إطار خريطة كل روبوت والإطار المشترك.
  • بناء محاكيات برمجية بحتة (نموذج فيزيائي مع محاكاة أشعة الحساس) موازية للمسار الحقيقي، لتصحيح مشاكل التكامل بين الروبوتين دون الحاجة لوجود روبوتين حقيقيين متاحين وشاحنين في الوقت نفسه.
  • مساران للتشغيل: تدفق آلي لتجنب العوائق، وتدفق كامل بالتحكم اليدوي (teleoperation) لعدة روبوتات معًا، بحيث يمكن تجربة النظام بوجود سائق بشري أو بدونه.

كيف تم اختباره

تم التشغيل على عتاد Lego EV3 الحقيقي عبر جسر واي فاي (نقطة اتصال هاتف/حاسوب محمول) مع استكشاف روبوتين في آن واحد، إضافة إلى اختبار منفصل عبر محاكيات برمجية مبنية من الصفر لعزل مشاكل التكامل عن أعطال العتاد.

النتائج

  • بنى الروبوتان خريطة مدموجة واحدة للمكان نفسه في اختبار حقيقي على العتاد الفعلي، ما أثبت عمل المسار كاملًا من طرف إلى طرف: جسر MQTT، إشارة LaserScan المصطنعة، SLAM لكل روبوت، ودمج الخرائط.
  • أول مشروع لي في ROS 2 بدءًا من الصفر، على عتاد (Lego EV3) لا يملك دعمًا رسميًا لـ ROS 2.

ما تعلمته

  • محركات EV3 وحساس الأشعة تحت الحمراء الوحيد كانا القيد الحقيقي، وليس البرمجيات — معظم جهد التصميم ذهب نحو جعل SLAM Toolbox يعمل ببيانات حساسات أقل بكثير مما يتوقعه، لا نحو خوارزمية SLAM نفسها.
  • بناء محاكٍ برمجي مبكرًا، بدل الاعتماد الدائم على توفر روبوتين حقيقيين وشاحنين، سرّع كثيرًا العمل على التكامل.
  • الربط عبر MQTT بدل محاولة تشغيل أي شكل من ROS 2 على الروبوت نفسه كان المسار العملي الوحيد بالنظر لقدرة EV3 الحوسبية المحدودة — تذكير بأن المعمارية الصحيحة أحيانًا تعني إبقاء الجهاز محدود الإمكانيات بسيطًا قدر الإمكان.

دوري

قائد الفريق؛ برمجة ROS 2 لطبقة التواصل بين الروبوتات والحاسوب المركزي، وإجراء التجارب على العتاد.