فصل أبحاثي في الروبوتات
Table of Contents
هذه التدوينة تحكي عن رحلتي في عالم الروبوتات، بدءًا من اكتشاف شغفي بالروبوتات في FRC خلال المدرسة الثانوية في 2015 إلى وقتي كمساعد بحث في مختبر الروبوتات المتمحورة حول الإنسان في مدرسة كولورادو للمناجم من فبراير 2021 إلى سبتمبر 2021. لاحظ أنه منذ أواخر 2022، انتقل مختبر HCR من مدرسة كولورادو للمناجم إلى جامعة ماساتشوستس أمهيرست، مع تغيير موقعه من hcr.mines.edu إلى hcr.cs.umass.edu.
الخلفية
بدأت دراستي الجامعية في مدرسة كولورادو للمناجم في فصل الخريف من عام 2018. كان تخصصي هو علوم الحاسوب مع التركيز على الروبوتات والأنظمة الذكية. وتخرجت في ربيع 2022.
كنت محظوظًا لأنني وجدت شغفي في وقت مبكر من حياتي. خلال المدرسة الثانوية، قضيت وقتًا جيدًا في محاولة معرفة ما أحب وما يمكنني أن أكون جيدًا فيه. بعد بعض التجارب والخطأ، تمكنت من اكتشاف أن شغفي هو علوم الحاسوب. لكن في نفس الوقت، اكتشفت أن لدي حبًا كبيرًا للبناء من خلال البرمجة.
في مدرسة كولورادو، حصلت على فرصة للعمل في مختبر الروبوتات المتمحورة حول الإنسان (HCR) تحت إشراف الدكتور هاو زانغ. التقيت لأول مرة بالدكتور زانغ في ربيع 2020 من خلال صفه “الروبوتات المتمحورة حول الإنسان” (CSCI473)، وبعد فوضى COVID وأعمال الصف، تمكنت من العمل في مختبره في أوائل ربيع 2021.
صف الروبوتات المتمحورة حول الإنسان (CSCI473)
كان صف الروبوتات المتمحورة حول الإنسان (CSCI473) واحدًا من القليل من الصفوف التي كان لها تأثير عميق عليّ خلال تجربتي الجامعية. كان الصف يُدرس بواسطة الدكتور هاو زانغ. كانت درجتنا الكاملة في الصف تتكون من ثلاثة مشاريع فقط، كل منها قدم مشكلة صعبة قدمت مفاهيم أساسية في الروبوتات. كانت هذه المشاريع تتكون من:
- تعلم نظام تشغيل الروبوتات (ROS)
- التعلم المعزز لتتبع الجدران بواسطة الروبوت
- فهم الروبوت للسلوكيات البشرية باستخدام تمثيلات قائمة على الهيكل العظمي
تعلم نظام تشغيل الروبوتات (ROS)
كان هذا هو المشروع الأول الذي تم تكليفنا به. كان المشروع يتكون من ثلاث مهام:
- إعداد بيئة التطوير
- فهم محاكي غازبو
- كتابة “مرحبا بالعالم” في ROS
بالنسبة للمهام 1 و2، كان علينا فقط إعداد بيئة التطوير الخاصة بنا واتباع مقدمة إلى دروس غازبو. شمل ذلك:
- إعداد ROS Melodic، والذي قمت به على حاسبي المحمول HP من عام 2011 والذي كان جيدًا بما فيه الكفاية
- تثبيت وتكوين ROS وغازبو
- المرور عبر دروس غازبو ودروس الدليل الإلكتروني.
أما المهمة 3، فكانت تحديًا حقيقيًا. كانت المهمة هي استخدام turtlesim وجعل السلحفاة ترسم شعار “M” الخاص بمدرسة كولورادو:
![]() |
![]() |
كانت هذه المهمة، على الرغم من أنها بدت بسيطة، أكثر صعوبة مما تبدو. قدم هذا المشروع لي في النهاية مفهوم الأنظمة المفتوحة والمغلقة. للحصول على الوصف الكامل للمشروع، تحقق من csci473-p1.pdf أو يمكنك معرفة المزيد عن هذا المشروع وحلّي على صفحة مشروع ROS Move Turtle.
التعلم المعزز لتتبع الجدران بواسطة الروبوت
كان هذا هو المشروع الثاني الذي تم تكليفنا به، وكان واحدًا من أصعب المشاريع التي عملت عليها في الكلية. كان وصف المشروع كما يلي:
في هذا المشروع، سيقوم الطلاب بتصميم وتنفيذ خوارزميات التعلم المعزز لتعليم روبوت متنقل مستقل لتتبع جدار وتجنب الاصطدام بالعقبات. سيستخدم الطلاب محاكاة غازبو في ROS Melodic لمحاكاة روبوت متنقل متعدد الاتجاهات يسمى Triton، باستخدام خريطة بيئية تم توفيرها لك. سيستخدم الطلاب جهاز مسح ليزري على الروبوت لأداء الاستشعار والتعلم، حيث يتم التحكم في الروبوت باستخدام أوامر التوجيه والسرعة. يُطلب من الطلاب برمجة هذا المشروع باستخدام C++ أو Python في ROS Melodic الذي يعمل على Ubuntu 18.04 LTS (أي نفس بيئة التطوير المستخدمة في المشروع 1). أيضًا، يُطلب من الطلاب كتابة تقرير يتبع تنسيق مؤتمرات الروبوتات القياسية IEEE باستخدام LATEX.
بالنسبة لخوارزمية التعلم المعزز، تم توجيهنا لاستخدام Q-Learning. استخدمنا أيضًا بيئة محاكاة Stingray التي تم توفيرها من قبل الصف. كانت Stingray تتكون من نموذج Triton ومنطق الفيزياء. تم توفير متاهة للروبوت ليتبعها. بشكل عام، كانت البيئة تبدو هكذا:
لم أنشر حلي على GitHub أو الويب لأنه لم يكن جيدًا جدًا وكان مليئًا بالعيوب. أيضًا، كان من الصعب والمزعج تشغيل الكود في البيئة الصحيحة. ومع ذلك، لدي فيديو عرض قمت بتقديمه للصف، يظهر حلي. يمكنك مشاهدته هنا:
للحصول على الوصف الكامل للمشروع، تحقق من csci473-p2.pdf
فهم الروبوت للسلوكيات البشرية باستخدام تمثيلات قائمة على الهيكل العظمي
بالنسبة للمشروع الثالث، كان وصف المشروع كما يلي:
في هذا المشروع، سيقوم الطلاب بتنفيذ عدة تمثيلات قائمة على الهيكل العظمي (النتيجة 1) واستخدام آلات الدعم المتجهة (SVMs) (النتيجة 2) لتصنيف السلوكيات البشرية باستخدام مجموعة بيانات نشاط عامة تم جمعها من مستشعر Kinect V1. بالإضافة إلى ذلك، يُطلب من الطلاب كتابة تقرير يتبع تنسيق مؤتمرات الروبوتات القياسية IEEE باستخدام LATEX في النتيجة 3.
كان هذا المشروع تحديًا ولكنه لم يكن صعبًا مثل المشروع الثاني. كان الهدف الرئيسي هو استخدام بيانات مستشعر Kinect V1 من مجموعة بيانات النشاط اليومي MSR 3D، وآلات الدعم المتجهة لتصنيف بعض الأفعال/السلوكيات البشرية. للحصول على الوصف الكامل للمشروع، تحقق من csci473-p3.pdf أو يمكنك معرفة المزيد عن هذا المشروع وحلّي على تدوينة توقع الأفعال البشرية باستخدام LIBSVM.
استنتاج CSCI473
CSCI473 هو واحد من، إن لم يكن أفضل صف أخذته خلال دراستي الجامعية في مدرسة كولورادو للمناجم. علمتني جميع هذه المشاريع الكثير وسمحت لي بامتلاك مجموعة رائعة من المشاريع للتفكير فيها والإشارة إليها في سيرتي الذاتية. كانت أيضًا أول صف شعرت فيه أنني في عنصري، حيث لم أكن يومًا جيدًا في الاختبارات ولكنني تفوقت في إكمال المشاريع. كما أنني من خلال هذا الصف التقيت بالدكتور هاو زانغ، الذي ساعدني في النهاية في تأمين وظيفة كمساعد بحث في مختبر الروبوتات المتمحورة حول الإنسان (HCR) في مدرسة كولورادو.
جلسة مجال علوم الحاسوب (صيف 2020)
خلال صيف 2020، بين إكمال CSCI473 والانضمام إلى مختبر HCR، أخذت CSCI370 أو “هندسة البرمجيات المتقدمة” كجزء من برنامجي الجامعي في علوم الحاسوب في مدرسة كولورادو للمناجم. CSCI370 هو دورة تجعل الطلاب يصممون وينفذون ويوثقون حلولًا متعلقة بالبرمجيات لشركة. يسمح للطلاب بتطبيق معرفتهم من الدروس على مشاكل علوم الحاسوب في العالم الحقيقي. يمكنك معرفة المزيد عن الدورة هنا.
في الدورة، يمكنك أن تقرر ما هو المشروع/الشركة التي ستعمل عليها. قدمت الدورة ملفات PDF توضح كل مشروع وشركة. في النهاية، قررت العمل على مشروع نشرته شركة تسمى Lunar Outpost بعنوان “الكشف عن انزلاق العجلات في الوقت الحقيقي وتصحيحات الأخطاء لتحسين الملاحة القمرية”. نظرًا لأن الاسم طويل، دعنا نعطي المشروع اسمًا مستعارًا هو “كشف انزلاق العجلات”.
المشكلة
Lunar Outpost هي شركة ناشئة تحاول إنشاء مركبات قمرية مستقلة. على القمر، هناك الكثير من الغبار القمري المعروف بأنه يسبب الكثير من انزلاق العجلات. هذا ليس مثاليًا لأن انزلاق العجلات يمكن أن يتسبب في فقدان الأنظمة المستقلة لتتبع موقعها في العالم الحقيقي. على الأرض، يتم حل هذه المشكلة باستخدام بيانات GPS لتصحيح أي انزلاق ناتج عن انزلاق العجلات. لكن المشكلة مع GPS هي أنه يعمل فقط من خلال وجود 30+ من الأقمار الصناعية للملاحة تدور باستمرار حول الأرض في مدار وتبث إشارات فريدة تسمح لأجهزة الكمبيوتر بحساب موقعها. لكن على القمر، لا يوجد حاليًا شيء مثل GPS. مع العلم بذلك، يجب استخدام طريقة أخرى غير GPS لاكتشاف انزلاق العجلات. يمكن الاطلاع على تقرير أكثر تفصيلًا عن مشكلة المشروع هنا.
الفريق
لم يكن هذا المشروع مشروعًا بسيطًا، لذا كان يجب أن يتم في فريق. كان الفريق يتكون من خمسة طلاب آخرين من مدرسة كولورادو للمناجم:
لم يكن هذا المشروع مشروعًا بسيطًا، لذا كان يجب أن يتم في فريق. كان هذا الفريق يتكون من محمد يلمز (أنا)، كين بروس، بريدون أوكالاغان، ليام ويليامز، وكيفن غرانت.
كان المشروع يتطلب منا معرفة بعض ROS وC++ وPython وLinux وRaspberry Pi وArduino. كان لدى معظمنا خبرة في واحد أو أكثر من هذه التقنيات لكنني كنت الوحيد الذي لديه خبرة في ROS حيث استخدمت ROS في صف الروبوتات المتمحورة حول الإنسان (CSCI473) خلال فصل ربيع 2020. بسبب ذلك، ساعدت في البداية في توضيح الأمور للجميع حول ROS وكيفية التطوير له.
التحديات
في هذا المشروع كانت هناك العديد من التحديات. لكن أكبر تحدٍ واجهناه كان عدم وجود وصول إلى روبوت حقيقي للاختبار. كان ذلك بسبب COVID الذي جعل كل شيء عن بُعد ومنعنا من العمل في مختبرات/مباني محطة القمر. بسبب ذلك، كان علينا استخدام المحاكاة.
أيضًا، قمنا بمراجعة بعض الأبحاث الأكاديمية من مختبر التنقل في WVU للحصول على فكرة عن كيفية حل مشكلة انزلاق العجلات لاستخدام محطة القمر، والتي كانت بالنسبة لنا، كطلاب في السنة الثانية والثالثة، أكثر صعوبة مما توقعنا.
تحدٍ آخر واجهناه كان كمية الوقت التي كان لدينا للعمل على هذا المشروع. CSCI370 هي دورة مدتها شهر واحد. لكن المشكلة نفسها هي مشكلة ضخمة حاولت العديد من الشركات والأكاديميين حلها/تحسينها لعقود. لذا، فإن شهر واحد بعيد عن كونه وقتًا كافيًا لحل هذه المشكلة. لكن، على الرغم من كل هذه التحديات، استمررنا في العمل وتأكدنا من تقديم النتائج.
الخاتمة
بعد العمل على جميع الأبحاث والتطوير، توصلنا إلى أنه من شبه المستحيل محاكاة فيزياء القمر بشكل صحيح رقميًا، لذا فإن تجربة هذا الخوارزم في محاكاة ليست جيدة حقًا ولن تؤدي إلى أي أبحاث ذات مغزى في اكتشاف انزلاق العجلات في الفضاء وعلى القمر. استنتجنا أن إعداد بيئة اختبار مناسبة باستخدام شيء مثل الرمل والأجهزة الحقيقية، مثل روبوت هسكي، هو أكثر أهمية بكثير لهذا النوع من الأبحاث. قمنا بتحديث كود اكتشاف انزلاق العجلات ليعمل كعقدة ROS وعمل بشكل صحيح ويمكن استيراده بسهولة إلى الأجهزة الحقيقية للاختبار. أتاح لي هذا المشروع أن أتولى دور القيادة، وأعلم زملائي عن تطوير ROS، وأكتسب خبرة في بايثون وROS وGazebo أثناء معالجة مشكلة معقدة لم أواجهها من قبل. والأهم من ذلك، أن هذه التجربة عززت شغفي بالروبوتات وأكدت رغبتي في متابعة الأبحاث في هذا المجال، مما مهد الطريق لما سيأتي بعد ذلك في رحلتي في عالم الروبوتات.
البدء في مختبر HCR
بعد الانتهاء من CSCI473، جلسة مجال علوم الكمبيوتر في صيف 2020، وفصل الخريف 2020، قررت متابعة الأبحاث في مجال الروبوتات. كانت لدي تجارب رائعة مع كل من CSCI473 وجلسة مجال علوم الكمبيوتر، لذا قررت أنني أريد القيام بأبحاث لمختبر HCR. منذ أن التقيت بالدكتور زانغ في العام السابق، قررت أن أرسل له بريدًا إلكترونيًا وأسأله عن أي فرص قد تكون متاحة في المختبر في يناير 2021. خلال حوالي أسبوعين، أعرب الدكتور زانغ عن اهتمامه، وقدم لي خيارات بحث، وعرض علي دورًا في المختبر. ثم بدأت العمل في المختبر في فبراير 2021.
فيديو التعريف
إليك فيديو التعريف الخاص بي الذي سجلته بعد بضعة أشهر من وجودي في مختبر HCR. تم تسجيله في مايو 2021 ويغطي الأبحاث التي سأركز عليها في مختبر HCR خلال صيف 2021:
مشروعي
خلال فترة وجودي في مختبر HCR، ركزت بشكل أساسي على مشروع Triton. مشروع Triton هو روبوت متنقل تم تطويره بواسطة مختبر الروبوتات المتمحورة حول الإنسان في مدرسة كولورادو للمناجم. إنه روبوت أرضي ثلاثي العجلات مدعوم من NVIDIA Jetson Nano.
يتكون Triton، في نظرة عامة بسيطة، من الأجزاء التالية:
- NVIDIA Jetson Nano
- لوحة حاملة A205 من NVIDIA Seed Studio
- Arduino Mega
- بطاقة Micro SD بسعة 64 جيجابايت
- هيكل مطبوع بتقنية الطباعة ثلاثية الأبعاد مخصص
- 3 عجلات ميكانوم
- 1 بطارية AR
- دوائر مخصصة لتوزيع الطاقة وتحسين الأسلاك
- كاميرا Intel Realsense D435
- بعض مصابيح LED
تم تصميمه وبناؤه وتصنيعه حوالي 2018-2020 كروبوت لأغراض تعليمية. بحلول الوقت الذي انضممت فيه، كان Triton قد تم تأسيسه بشكل جيد، وكان المختبر يفكر في صنع نسخة جديدة منه. ومع ذلك، كانت المشكلة الرئيسية مع Triton هي برامجه. كان بإمكان Triton التحرك، والشحن، والعمل بشكل أساسي لكنه لم يكن يقوم بأي شيء ذكي حقًا. حتى أنه كان يفتقر إلى القدرة على القيام بحركات أكثر تقدمًا.
![]() |
![]() |
![]() |
![]() |
للبدء في معالجة ذلك، قام المختبر بإعداد منطقة حيث يمكننا تتبع Triton. للقيام بذلك، أنشأوا منطقة بمساحة 2 متر في 2 متر مع 8 كاميرات Optitrack Flex (الأشعة تحت الحمراء) في شكل مربع على ارتفاع حوالي 6-7 أقدام فوق الأرض.
![]() |
![]() |
بالإضافة إلى بناء هذه المنطقة، كان لكل Triton ثلاث كرات كروية رمادية ملحقة بأعلى أجسامها.
مع هذا الإعداد، كنا قد بنينا بشكل فعال نظام GPS صغير خاص بنا سمح لنا بالحصول على الإحداثيات الدقيقة بالمتر لـ Triton في منطقتنا المعنية. باستخدام كاميرات الأشعة تحت الحمراء Optitrack والكرات الرمادية Optitrack في شكل مثلث، كنا قادرين على تحديد الإحداثيات الدقيقة لـ Triton في منطقتنا. سمح لنا ذلك بتطبيق نظام حلقة مغلقة للحصول على دقة أفضل في الحركة.
قدم نظام Optitrack بيانات الموقع والاتجاه بمعدل حوالي 120 هرتز بدقة دون المليمتر عند المعايرة بشكل صحيح. شكلت العلامات العاكسة الثلاثة لكل Triton نمطًا مثلثيًا فريدًا يمكن للنظام تتبعه كجسم صلب. تم معايرة نظام الإحداثيات بحيث كانت (0،0) في مركز منطقة التتبع، مع محاور X وY متوافقة مع هندسة الغرفة. لكن على الرغم من هذه البيانات الدقيقة، كان Triton لا يزال يعاني من الحركة.
مع هذا الإعداد، كانت إحدى الميزات الأساسية التي أردنا توفيرها لـ Triton هي القدرة على الانتقال إلى إحداثية معينة. يمكن للمستخدم، أو برنامجهم، تقديم إحداثية (x، y) ضمن منطقتهم المعنية. ثم يتحرك الروبوت إلى تلك الإحداثية بأسرع ما يمكن بدقة وسلاسة. عندما انضممت، كانت هذه الميزة موجودة لكنها لم تكن تعمل بشكل جيد. إليك رسم متحرك بسيط يوضح كيف كانت تعمل منطق الحركة الأصلية:
لم أسجل الحل الأصلي أثناء العمل، لذا أنشأت هذا الرسم المتحرك البسيط الذي يوضح لك منطق الحركة القديمة أثناء العمل. مع العلم بذلك، ما هي المشكلات المتعلقة بهذه الطريقة؟
- إنها بطيئة جدًا
- تجعل الروبوت يشغل مساحة كبيرة فقط للذهاب إلى نقطة معينة. جعل هذا من الصعب علينا استخدام هذا الحل عندما كانت عدة Tritons تتحرك حولها.
فلماذا كان يحدث هذا السلوك؟ كانت المشكلة أن Triton أولاً يدور، مما يغير ألفا، حتى يشير نحو النقطة المستهدفة ضمن هامش خطأ معين. ثم يندفع للأمام، وبعد أن كانت ثيتا بعيدة عن الهدف بمقدار معين، يتوقف ويبدأ في الدوران مرة أخرى حتى تكون ألفا ضمن النطاق المقبول للهدف. ثم يندفع مرة أخرى ويستمر في القيام بذلك حتى يصل إلى النقطة. أيضًا، كلما اقترب من نقطة الهدف، كانت سرعة الدوران والاندفاع تتباطأ كثيرًا للتأكد من أنه لا يتجاوز الهدف. أدى ذلك إلى حركة غير طبيعية لـ Triton، مما استغرق وقتًا طويلاً للوصول إلى نقطة الهدف، واحتاج إلى مساحة كبيرة فقط للوصول إلى نقطة هدف معينة. لذا، مع كل هذه المشكلات، ونظرًا لمدى أهمية هذه الميزة لتطوير مشروع Triton، عندما بدأت العمل في مختبر HCR، كانت مهمتي الأولى هي تطوير حلول أكثر فعالية تسمح لـ Triton بالتنقل بشكل أفضل نحو نقطة الهدف.
مع العلم بذلك، قضيت الكثير من الوقت في البحث عن أفضل طريقة ممكنة لمعالجة هذه المشكلة. من المثير للسخرية أنني كنت أدرس مادة تسمى مقدمة في أنظمة التحكم المرتدة (EENG307) في مدرسة المناجم. في وقت مبكر من تلك المادة، تعلمنا عن مفهوم التحكم في الحلقة المفتوحة والتحكم في الحلقة المغلقة. مع العلم بذلك، وبعد بعض المناقشات التي أجريتها مع أستاذ تلك المادة وزميلي الذكي، أصبح من الواضح أن هدف الحصول على Triton إلى نقطة الهدف كان مشكلة نظام حلقة مغلقة.
الآن، بعد اختبارات وبحوث مكثفة، طورت نهجين مختلفين للتحكم لـ Tritons:
الطريقة 1: وحدة التحكم في المسافة-ثيتا
استخدم هذا النهج وحدتين تحكم تفاضليتين تعملان في نفس الوقت:
- وحدة التحكم في المسافة: تحسب المسافة الإقليدية إلى الهدف وتطبق كسبًا تفاضليًا لتحديد سرعة الحركة للأمام/الخلف
- وحدة التحكم في ثيتا: تحسب الخطأ الزاوي بين اتجاه الروبوت الحالي والاتجاه المرغوب نحو الهدف، وتطبق كسبًا تفاضليًا منفصلًا لسرعة الدوران
كان الخوارزم يحسب باستمرار المسافة الإقليدية إلى الهدف والخطأ الزاوي بين اتجاه الروبوت الحالي والاتجاه المرغوب. تم تطبيق كسبين تفاضليين منفصلين لتوليد السرعات الخطية والزوايا على التوالي.
نتج عن ذلك أن Triton كان يدور بشكل طبيعي نحو الهدف بينما يتحرك للأمام في نفس الوقت، مما يخلق مسارات منحنية سلسة. كانت الميزة الرئيسية هي أن الروبوت كان دائمًا يحافظ على واجهته الأمامية موجهة نحو الوجهة، وهو أمر حاسم للتطبيقات المعتمدة على الكاميرا.
الطريقة 2: وحدة التحكم بالإحداثيات X-Y
تعاملت هذه الطريقة مع الروبوت مثل طابعة ثنائية الأبعاد، مع التحكم المستقل في حركة X و Y:
- وحدة التحكم X: تتحكم مباشرة في الحركة من الشرق إلى الغرب بناءً على خطأ إحداثي X
- وحدة التحكم Y: تتحكم مباشرة في الحركة من الشمال إلى الجنوب بناءً على خطأ إحداثي Y
حسّنت التنفيذ من خلال حساب أخطاء الإحداثيات X و Y بشكل مستقل، وتطبيق مكاسب تناسبية منفصلة، ثم تحويل هذه المكونات العالمية للسرعة إلى إطار الإحداثيات المحلي للروبوت باستخدام مصفوفات الدوران. كانت هذه التحويلات ضرورية لأن نظام الدفع بعجلات الروبوت المتعددة يتطلب سرعات في إطار مرجعي خاص به، وليس في الإحداثيات العالمية. أنتجت هذه الطريقة أكثر المسارات مباشرة نحو الأهداف وكانت أسرع بشكل ملحوظ، لكن اتجاه الروبوت كان ينحرف لأنه لم يكن هناك تحكم واضح في الاتجاه.
بالنسبة للطريقة #1، دخلت في تفاصيل كاملة حول هذه الطريقة في مدونتي تحريك السلحفاة (TurtleSim). أوصي بشدة بقراءة هذه المدونة للحصول على جميع التفاصيل حول كيفية عمل وحدات التحكم PID بشكل عام، بالإضافة إلى كيفية عمل الطريقة #1. طورت الطريقة #1 باستخدام TurtleSim من ROS، ثم نقلت هذا الكود إلى Triton وقمت بتحديثه ليأخذ في الاعتبار بيئة أكثر واقعية.
استخدمت الطريقة #2 نهجًا مختلفًا تمامًا ولكنه فعال بنفس القدر. بدلاً من التفكير في اتجاه الروبوت والمسافة إلى الهدف، تعالج هذه الطريقة الحركة مثل مشكلة في مستوى الإحداثيات. يقوم المتحكم بحساب الخطأ في كلا الاتجاهين X و Y بشكل مستمر. على سبيل المثال، إذا كان يجب على الروبوت التحرك من (0،0) إلى (2،3)، فإنه يرى ذلك على أنه يحتاج إلى تصحيح خطأ بمقدار 2 متر في X وخطأ بمقدار 3 أمتار في Y. عملت وحدتان تحكم تناسبيتان في وقت واحد: واحدة تعدل سرعة الروبوت في اتجاه X بناءً على خطأ X، بينما تتعامل الأخرى مع حركة اتجاه Y بناءً على خطأ Y. خلق ذلك مسارًا أكثر مباشرة نحو الهدف، مشابهًا لكيفية تحرك رأس الطابعة ثلاثية الأبعاد، وسمح بحركات قطرية سلسة. لم يكن الروبوت بحاجة إلى الدوران بشكل صريح لمواجهة هدفه، مما جعل هذه الطريقة فعالة بشكل خاص في المساحات الضيقة أو عندما تكون الدقة في التموقع مطلوبة.
أثبتت الطريقتان أنهما أسرع وأكثر موثوقية بشكل ملحوظ من النهج الأصلي. لرؤية هذه الطرق الجديدة في العمل، تحقق من قائمة تشغيل Tritons in Action، التي تعرض جميع Tritons في العمل مع الطرق الجديدة.
ما كان يستغرق 30-45 ثانية لحركة بسيطة من نقطة إلى نقطة أصبح الآن يستغرق حوالي 8-12 ثانية. والأهم من ذلك، أصبح بإمكان Triton الآن التنقل بشكل أكثر كفاءة في المساحات الضيقة، مما أصبح مفيدًا لسيناريوهات الروبوتات المتعددة لدينا.
تحديات التطوير وتصحيح الأخطاء
لم يكن تنفيذ هذه الوحدات التحكم أمرًا سهلاً وواجه العديد من التحديات الكبيرة في تصحيح الأخطاء:
تحويلات نظام الإحداثيات: كانت واحدة من أصعب الجوانب هي الحصول على تحويلات الإحداثيات بشكل صحيح. قدم نظام Optitrack بيانات في إطار إحداثياته الخاص، وكان للروبوت إطار إحداثيات محلي خاص به، وكنت بحاجة إلى التحويل بينهما بدقة. كانت التطبيقات المبكرة تجعل الروبوتات تتحرك في الاتجاهات الخاطئة لأنني كنت قد خلطت بين حسابات مصفوفة الدوران.
السلوك الواقعي مقابل السلوك المثالي: كانت أكبر تحدٍ هو حساب العوامل الواقعية التي لا تظهر في نظرية التحكم في الكتب الدراسية. كانت عجلات الروبوت تتمتع بخصائص احتكاك مختلفة، ولم تستجب المحركات بشكل متطابق، وكان هناك دائمًا بعض التأخير في سلسلة الاتصال من Optitrack إلى برنامج التحكم إلى Arduino الخاص بالروبوت. قضيت أسابيع في ضبط المكاسب التناسبية وإضافة فلاتر منطقة ميتة لحساب هذه الحقائق الفيزيائية.
مشاكل الاهتزاز والاستقرار: عانت تطبيقاتي الأولى من مشاكل الاهتزاز حيث كانت الروبوتات تتجاوز أهدافها وتتأرجح ذهابًا وإيابًا. علمتني هذه التجربة أهمية الحدود المشتقة في وحدات التحكم PID والحاجة إلى ضبط المكاسب بشكل صحيح. في النهاية، استقريت على التحكم التناسبي بشكل أساسي مع مكاسب مضبوطة بعناية بدلاً من PID الكامل، حيث كان التخميد الفطري للنظام كافيًا لمعظم التطبيقات.
تداخل الروبوتات المتعددة: عندما كانت تعمل عدة روبوتات في وقت واحد، اكتشفت أنماط تداخل غير متوقعة. كانت الروبوتات أحيانًا “تتنافس” على نفس المساحة أو تخلق حالات انسداد حيث كانت تعيق بعضها البعض إلى أجل غير مسمى. أدى ذلك إلى تنفيذ آليات التنسيق وخوارزميات تجنب التصادم.
نظام التحكم متعدد Triton
بمجرد أن حليت مشكلة حركة Triton الفردية، كانت التحدي التالي في المختبر هو جعل عدة Tritons تعمل معًا في وقت واحد. أصبح هذا أحد مجالات تركيزي الرئيسية وانتهى به الأمر ليكون مساهمة كبيرة في المشروع.
كان النظام الأصلي قادرًا فقط على التحكم في Triton واحد في كل مرة، مما حد بشدة من إمكانيات البحث. أراد المختبر محاكاة سيناريوهات حيث تحتاج عدة مركبات ذاتية القيادة إلى تنسيق حركتها، مثل السيارات ذاتية القيادة التي تتواصل مع بعضها البعض لتحسين تدفق المرور وإنشاء خرائط SLAM (الموقع والتخطيط المتزامن) أفضل.
لحل هذه المشكلة، نفذت نهج المعالجة المتعددة باستخدام مكتبة multiprocessing في Python. حصل كل Triton على عملية مخصصة خاصة به يمكن أن تعمل بشكل مستقل بينما لا تزال منسقة بواسطة نظام التحكم المركزي. سمح ذلك لعدة Tritons بالتحرك في وقت واحد دون التداخل مع حلقات التحكم الخاصة ببعضها البعض.
تصميم بنية الروبوتات المتعددة
تكونت بنية النظام التي طورتها من عدة مكونات رئيسية:
عملية التحكم الرئيسية: كانت تعمل كمنسق مركزي، تتعامل مع تفاعلات واجهة المستخدم، تخطيط المسارات، والتنسيق على مستوى عالٍ بين الروبوتات. حافظت على الحالة العالمية ووزعت الأوامر على عمليات الروبوت الفردية.
عمليات الروبوت الفردية: كان لكل Triton عملية Python مخصصة خاصة به تتعامل مع:
- حسابات التحكم PID في الوقت الحقيقي بمعدل ~50Hz
- التواصل مع الأجهزة الخاصة بالروبوت (Arduino/Jetson)
- تنفيذ المسار المحلي وتجنب العقبات
- الإبلاغ عن الحالة مرة أخرى إلى وحدة التحكم الرئيسية
التواصل عبر الذاكرة المشتركة: استخدمت multiprocessing.shared_memory و Queue في Python لتمكين التواصل الفعال بين العمليات. سمح ذلك بالتنسيق في الوقت الحقيقي دون عبء التواصل عبر الشبكة.
آليات التزامن: لمنع النزاعات عندما تحتاج عدة روبوتات إلى التنسيق (مثل تجنب التصادمات)، نفذت إشارات و أقفال تسمح للروبوتات بطلب الوصول الحصري إلى مناطق معينة من مساحة العمل.
كانت التحدي هو ضمان أن جميع الروبوتات يمكن أن تعمل حلقات التحكم الخاصة بها بشكل مستقل مع الحفاظ على التنسيق العالمي. كانت كل عملية روبوت تقوم بحسابات PID الخاصة بها وترسل أوامر المحرك مباشرة إلى الأجهزة، بينما كانت العملية الرئيسية تتعامل مع التنسيق على مستوى أعلى مثل تجنب التصادم وتخطيط المسارات.
![]() |
![]() |
فتح نظام متعدد Triton إمكانيات بحث جديدة تمامًا. أصبح بإمكاننا الآن محاكاة:
- سيناريوهات التواصل بين المركبات
- تخطيط مسارات منسقة مع تجنب العقبات
- سلوكيات الروبوتات السرب
- رسم خرائط SLAM متعددة الوكلاء
- التحكم في التشكيل وسلوكيات المتابعة
إليك كيف كان إعداد المختبر مع تشغيل عدة Tritons في وقت واحد:
![]() |
![]() |
طورت أيضًا واجهة سهلة الاستخدام سمحت للباحثين بتعريف المسارات بصريًا لكل Triton. يمكنك حرفيًا رسم المسار الذي تريده أن يتبعه كل روبوت، وكانوا ينفذون هذه المسارات بتنسيق مثالي. كان هذا مفيدًا للغاية لإعداد تجارب معقدة دون الحاجة إلى ترميز كل حركة يدويًا.
كان النظام قادرًا على التعامل مع ما يصل إلى 5 Tritons في وقت واحد، كل منها يعمل بوحدات التحكم PID الخاصة به بينما يتم تنسيقها من خلال نظام التحكم المركزي. كانت الأداء مثيرًا للإعجاب، حيث حافظت جميع الروبوتات على دقتها الفردية أثناء العمل معًا كفريق.
إليك قائمة تشغيل تعرض Tritons في العمل، من التحكم في الروبوت الفردي إلى التنسيق بين الروبوتات المتعددة: قائمة تشغيل Tritons in Action
دمج مستشعر العمق وتصحيح الإحداثيات
تقدم رئيسي آخر عملت عليه كان يتعلق باستخدام كاميرات العمق Intel RealSense D435 المثبتة على كل Triton. بينما قدم نظام Optitrack لنا بيانات تحديد موقع دقيقة للغاية، أردت استكشاف كيفية استخدام الروبوتات لمستشعراتها المدمجة لتحسين وعيها المكاني وتصحيح أخطاء الإحداثيات.
كانت الفكرة هي أن Tritons يمكن أن تستخدم مستشعرات العمق الخاصة بها لاكتشاف Tritons الأخرى في محيطها ومقارنة مواقعها. سيخدم ذلك عدة أغراض:
-
تصحيح الأخطاء: إذا كان لدى نظام Optitrack أي انحراف في المعايرة أو انسداد مؤقت، يمكن للروبوتات استخدام التأكيد البصري لمواقع بعضها البعض للحفاظ على أنظمة إحداثيات دقيقة.
-
تحسين SLAM: من خلال وجود عدة روبوتات مزودة بمستشعرات عمق تعمل معًا، يمكننا إنشاء خرائط أكثر ثراءً للبيئة مع نقاط بيانات زائدة.
-
تجنب التصادم: سيسمح استشعار العمق في الوقت الحقيقي للروبوتات بالكشف عن بعضها البعض وتجنبها حتى لو كان هناك تأخيرات في التواصل مع النظام المركزي.
بدأت في تجربة الخوارزميات التي ستسمح لـ Tritons بـ:
- الكشف عن Tritons الأخرى باستخدام شكلها المثلث المميز وعلامات الكرة العاكسة
- حساب المواقع النسبية والاتجاهات باستخدام بيانات العمق
- مقارنة هذه القياسات مع بيانات Optitrack لتحديد التباينات
- إمكانية تعديل نظام الإحداثيات الخاص بها في الوقت الحقيقي للحفاظ على الدقة
تجارب الرؤية الحاسوبية
قضيت وقتًا كبيرًا في تجربة خط أنابيب للرؤية الحاسوبية الذي عمل في عدة مراحل:
![]() |
![]() |
![]() |
![]() |
![]() |
معالجة بيانات العمق: قدمت Intel RealSense D435 كل من تدفقات بيانات RGB وبيانات العمق. عملت بشكل أساسي مع بيانات العمق، التي جاءت كصفيف 640x480 من قياسات المسافة عند 30Hz. كانت التحدي الأول هو تصفية بيانات العمق المزعجة لاستخراج معلومات هندسية ذات مغزى.
محاولات الكشف عن الأجسام: جربت خوارزميات الكشف متعددة المراحل. حققت بعض النجاح في تقسيم صورة العمق لتحديد الأجسام على مستوى الأرض (مع تصفية الجدران والسقف، إلخ) والبحث عن الأجسام ذات الخصائص الحجمية المناسبة، بحجم تقريبي 0.3x0.3 متر. حاولت استخدام كشف الحواف والتحليل الهندسي لتحديد ملف تعريف تريتون المميز، مع نتائج مختلطة.
تجارب التعرف على العلامات: بدت الكرات العاكسة الثلاثة على كل تريتون كأكثر ميزات الكشف وعدًا. جربت خوارزميات كشف الكتل لتحديد النمط المثلث المميز لثلاث نقاط ساطعة في صورة العمق. حققت بعض النتائج الواعدة في ظروف الإضاءة المتحكم فيها، على الرغم من أنها لم تكن موثوقة باستمرار.
بحث دمج الإحداثيات: بحثت في طرق دمج تقديرات المواقع المعتمدة على الرؤية مع بيانات Optitrack، بما في ذلك تنفيذات مرشح كالمان الأساسية. كانت الفكرة هي إعطاء وزن أكبر لبيانات Optitrack عند توفرها ولكن العودة إلى الرؤية عند الحاجة، على الرغم من أنني لم أتمكن من جعل هذا يعمل بالكامل قبل انتهاء وقتي في المختبر.
تحديات الأداء: كان من الصعب جعل كل هذه المعالجة تعمل في الوقت الحقيقي جنبًا إلى جنب مع حلقات التحكم في الروبوت. جربت أساليب تحسين لتشغيل الخوارزميات عند حوالي 10-15Hz دون إغراق قدرات معالجة Jetson Nano.
للأسف، كان علي مغادرة المختبر قبل أن أتمكن من إكمال هذا العمل في الرؤية الحاسوبية بالكامل. بينما حققت بعض النتائج المبكرة الواعدة وتعلمت الكثير عن معالجة مستشعر العمق، لم أتمكن من جعل النظام في حالة موثوقة بالكامل. لا يزال اتجاه البحث الذي بدأت في استكشافه مثيرًا للاهتمام ويمكن للآخرين البناء عليه.
إليك فيديو لي أثناء اختبار خوارزميات الرؤية الحاسوبية:
إليك كيف بدت رؤية مستشعر العمق خلال تجاربي:
بينما لم أكمل عمل دمج مستشعر العمق، أظهر المفهوم وعدًا لتطبيقات مثل محاكاة سيناريوهات السيارات ذاتية القيادة، حيث تحتاج المركبات إلى أن تكون على دراية ببعضها البعض دون الاعتماد فقط على البنية التحتية الخارجية. يمكن أن يساهم اتجاه البحث الذي بدأت في استكشافه في العمل المستقبلي في المختبر.
توثيق وحفظ المعرفة
كانت واحدة من أهم مساهماتي في مختبر HCR، وربما الأكثر فخرًا بها، هي تنظيم وحفظ جميع وثائق المشروع. عندما انضممت إلى المختبر، كانت معرفة مشروع تريتون مبعثرة عبر منصات وصيغ متعددة. كانت المعلومات الحيوية منتشرة عبر:
- حسابات Google Drive مختلفة تعود لطلاب مختلفين تخرجوا
- رسائل بريد إلكتروني قديمة مدفونة في صناديق الوارد
- مجلدات Dropbox عشوائية
- مستودعات GitHub متعددة
- مستودعات GitLab بتنظيم غير متسق
- ملاحظات مكتوبة بخط اليد لا يمكن تفسيرها إلا من قبل أشخاص محددين
كانت هذه الوثائق المجزأة مشكلة كبيرة. قضى الطلاب الجدد أسابيع فقط في محاولة معرفة كيفية البدء، وكانت المعرفة القيمة تضيع باستمرار عندما يتخرج الناس أو يغادرون المختبر.
توليت على عاتقي حل هذه المشكلة بشكل منهجي. قضيت ساعات لا تحصى في تتبع كل قطعة من الوثائق، الكود، الفيديو، والملاحظات المتعلقة بمشروع تريتون. ثم نظمت كل شيء في مستودع GitLab مركزي بهيكل واضح ومنطقي.
![]() |
![]() |
تضمن التوثيق المركزي:
- أدلة البناء: تعليمات خطوة بخطوة لتجميع تريتونات من الصفر
- إعداد البرمجيات: أدلة كاملة لإعداد بيئة التطوير
- توثيق الكود: كود موثق جيدًا مع شروحات واضحة
- مواصفات الأجهزة: قوائم أجزاء مفصلة، مخططات توصيل، وتصاميم PCB
- أدلة استكشاف الأخطاء: مشاكل شائعة وحلولها
- دروس فيديو: أنشأت ورفعت مقاطع فيديو تعليمية على YouTube، بما في ذلك دروس تفصيلية لمعايرة Optitrack:
كما وضعت معايير توثيق لضمان أن تكون المساهمات المستقبلية منظمة وقابلة للوصول. أصبح هيكل المستودع الذي أنشأته أساسًا لجميع الأعمال اللاحقة في المختبر.
بعيدًا عن مجرد تنظيم الوثائق الموجودة، أنشأت عدة أدلة ودروس أصلية ملأت الفجوات الحرجة في قاعدة المعرفة. شملت هذه تعليمات إعداد مفصلة لأعضاء المختبر الجدد، وأدلة شاملة لاستكشاف الأخطاء، ومقاطع فيديو توضيحية للإجراءات المعقدة.
كان التأثير فوريًا ودائمًا. تمكن الطلاب الجدد من التكيف في أيام بدلاً من أسابيع. لا يزال مستودع الوثائق الذي أنشأته مستخدمًا من قبل المختبر اليوم، بعد سنوات من مغادرتي. أصبح المصدر الوحيد للحقيقة لمشروع تريتون وأنقذ ساعات/أيام لا تحصى للباحثين المستقبليين.
الإرشاد ونقل المعرفة
كانت واحدة من أكثر جوانب وقتي في مختبر HCR مكافأة هي الفرصة لتوجيه الآخرين ومشاركة المعرفة التي اكتسبتها. مع تقدم عملي وزيادة خبرتي في أنظمة تريتون، تحملت مسؤولية متزايدة في تدريب أعضاء الفريق الجدد.
إرشاد خلفاء المختبر
بينما كنت أستعد في النهاية لمغادرة المختبر للتركيز على إنهاء دراستي وع عملي في eBay، تأكدت من تدريب شخصين بشكل شامل سيتوليان مشروع تريتون بعد مغادرتي. لم يكن الأمر مجرد إظهار كيفية عمل الأشياء، بل كان يتعلق بضمان أنهم يفهمون المبادئ الأساسية حتى يتمكنوا من الاستمرار في الابتكار.
قضيت أسابيع أعمل عن كثب معهم، نمر عبر:
- الأسس الرياضية لأنظمة التحكم PID
- بنية المعالجة المتعددة لتنسيق الروبوتات المتعددة
- دمج مستشعر العمق وخوارزميات الرؤية الحاسوبية
- نظام التوثيق وكيفية الحفاظ عليه
- تقنيات تصحيح الأخطاء وأنماط الفشل الشائعة
كان نقل المعرفة شاملًا للغاية. مررنا بجلسات تصحيح أخطاء حقيقية معًا، جعلتهم يعدلون ويطورون الكود الموجود، وتأكدت من أنهم يستطيعون إعداد تريتونات جديدة من الصفر بشكل مستقل.
برنامج إرشاد المدارس الثانوية
ربما كان أكثر مكافأة هو تجربتي في توجيه طالب في المدرسة الثانوية من خلال برنامج التوعية في المختبر. كانت هذه فرصة رائعة لتعريف شخص ما بالروبوتات، وعلوم الكمبيوتر، والبحث في مرحلة تشكيلية من تعليمهم.
صممت منهجًا شاملاً يغطي:
أساسيات علوم الكمبيوتر:
- مفاهيم البرمجة باستخدام Python كلغة رئيسية
- مقدمة في البرمجة الكائنية
- فهم الخوارزميات وهياكل البيانات
مفاهيم الروبوتات:
- كيفية عمل المستشعرات وكيفية التفاعل معها
- التحكم في المحركات وأنظمة المحركات
- أساسيات الأنظمة المستقلة والتحكم في التغذية الراجعة
ROS (نظام تشغيل الروبوت):
- فهم نظام الرسائل publish/subscribe
- إنشاء العقد والخدمات
- العمل مع ملفات الإطلاق وخوادم المعلمات
أعمال المشروع العملية:
- تعاوننا في إنشاء خدمة ROS تتحكم في نظام LED على رأس تريتون
- تعلمت كتابة كود نظيف وموثق يتكامل مع أنظمتنا الحالية
- أصبحت خدمة التحكم في LED التي أنشأتها جزءًا دائمًا من قاعدة بيانات كود تريتون
ما جعل هذا الإرشاد مميزًا بشكل خاص هو مشاهدة تقدمها من معرفة القليل جدًا عن البرمجة إلى المساهمة بكود ذي مغزى في مشروع بحث نشط. انتقلت من طرح سؤال “ما هو المتغير؟” إلى تصحيح مشكلات الاتصال في ROS بشكل مستقل وكتابة تنفيذاتها الخاصة للخدمات.
سمح نظام التحكم في LED الذي طورته للباحثين بتغيير ألوان وأنماط LEDs رأس تريتون بسهولة من خلال أوامر ROS بسيطة. قد يبدو هذا بسيطًا، لكنه تطلب فهم بنية ROS، والتفاعل مع الأجهزة، وأنماط تصميم البرمجيات المناسبة. لا تزال مساهمتها مستخدمة في المختبر اليوم.
كانت الإرشاد تعليميًا لي كما كان لها. أجبرني على تفكيك المفاهيم المعقدة إلى قطع قابلة للهضم والتفكير حقًا في أساسيات ما كنا نقوم به. جعلتني تعليم شخص آخر مهندسًا وباحثًا أفضل.
التعاون مع بحث الدكتوراه
أحد أكثر الجوانب مكافأة مهنية خلال وقتي في المختبر كان العمل عن كثب مع بينغ، طالب الدكتوراه الذي كان بحثه يركز على خوارزميات السيارات ذاتية القيادة. ساعدت التحسينات البرمجية التي أجريتها على نظام تريتون في دعم بحثه للدكتوراه.
تطلب بحث بينغ تنسيقًا دقيقًا وموثوقًا بين الروبوتات المتعددة لمحاكاة سيناريوهات السيارات ذاتية القيادة. قبل تحسيناتي على التحكم في الحركة وأنظمة الروبوتات المتعددة، كانت هذه التجارب أكثر صعوبة في التنفيذ. كانت الروبوتات أبطأ، وأقل دقة، ولم تتمكن من العمل معًا بفعالية.
ساعدت مساهمتي في بحث بينغ في عدة مجالات:
دراسات إدارة التقاطعات: مع تحسينات وحدات التحكم PID وتنسيق الروبوتات المتعددة، تمكن بينغ من محاكاة سيناريوهات التقاطعات حيث كان يتعين على عدة “مركبات” (تريتون) تنسيق حركتها. ساعد التوقيت الأفضل والتوزيع في جعل هذه الدراسات أكثر قابلية للتنفيذ.
الاتصال بين المركبات: سمح الإطار متعدد المعالجة الذي طوّرته لبينغ بتنفيذ واختبار بروتوكولات الاتصال بين المركبات المحاكاة. كان بإمكان كل تريتون اتخاذ قرارات أثناء تنسيقه مع الآخرين، مشابهًا لكيفية عمل السيارات ذاتية القيادة.
بحث SLAM ورسم الخرائط: قدم عمل دمج مستشعر العمق لبينغ بيانات إضافية لبحثه في التوطين ورسم الخرائط المتزامن. سمح وجود عدة روبوتات بقدرات استشعار منسقة بإجراء تجارب رسم خرائط أكثر شمولاً.
ما جعل تعاوننا ذا قيمة خاصة هو أنه لم يكن مجرد مساعدتي في بحثه، بل كان شراكة حقيقية. ساعد فهم بينغ للجوانب النظرية للسيارات المستقلة في إبلاغ تطبيقاتي العملية. دفعتني ملاحظاته ومتطلباته لجعل الأنظمة أكثر قوة وقدرة.
قضينا ساعات عديدة معًا في المختبر، نقوم بتصحيح السيناريوهات، ونتحدث عن استراتيجيات التحكم المختلفة، ونستكشف ما يمكن أن يحققه نظام تريتون. أصبح بينغ زميلاً وصديقًا، وعملنا معًا علمني الكثير عن كيفية عمل البحث الأكاديمي فعليًا.
أصبحت الأنظمة التي بنيتها جزءًا مفيدًا من عمل بينغ في أطروحة الدكتوراه. كان رؤية مساهماتي الهندسية العملية تدعم البحث في تكنولوجيا السيارات ذاتية القيادة مُرضيًا حقًا. عزز ذلك اهتمامي بكيفية عمل الهندسة الصلبة والبحث معًا لخلق نتائج مفيدة.
حتى بعد مغادرتي المختبر، ظل بينغ وأنا على تواصل. كان من المُرضي للغاية معرفة أن عملي استمر في المساهمة في أبحاث مهمة حتى بعد مغادرتي.
المنظور: عصر ما قبل LLM في التطوير
من الجدير بالذكر أن كل هذا العمل تم إنجازه خلال عصر ما قبل LLM في تطوير البرمجيات. كل هذا حدث بين عامي 2020 و2021 (بشكل رئيسي في 2021)، قبل أن توجد ChatGPT، Claude، Perplexity، أو أدوات التطوير المدعومة بالذكاء الاصطناعي مثل Cursor IDE.
تمت كتابة كل سطر من التعليمات البرمجية من الصفر، وتم البحث عن كل خوارزمية من خلال الأوراق الأكاديمية والكتب الدراسية، وشملت كل جلسة تصحيح طرقًا تقليدية مثل عبارات الطباعة، وأدوات التصحيح، والاختبار المنهجي. عندما كنت أواجه مشكلة في تحويل الإحداثيات أو ضبط PID، لم أستطع فقط أن أسأل مساعد الذكاء الاصطناعي لشرح المفهوم أو المساعدة في تصحيح المشكلة.
جعل هذا عملية التطوير أكثر تحديًا بشكل كبير ولكنه أيضًا أكثر تعليمًا. كان عليّ أن:
أبحث عن كل شيء يدويًا: كان فهم نظرية التحكم PID يعني قراءة الكتب الدراسية والأوراق الأكاديمية. كان فهم تحويلات الإحداثيات يتطلب العمل على الرياضيات يدويًا. كان يجب فهم كل مفهوم بالكامل قبل التنفيذ.
أقوم بالتصحيح بدون مساعدة الذكاء الاصطناعي: عندما كانت الروبوتات تتحرك في اتجاهات غير متوقعة أو تتأرجح حول الأهداف، كان عليّ تتبع المنطق بشكل منهجي، وإضافة مخرجات تصحيح، واختبار الفرضيات واحدة تلو الأخرى. لم يكن هناك ذكاء اصطناعي يقترح مشكلات محتملة أو يساعد في تفسير أنماط الأخطاء.
أتعلم من المبادئ الأساسية: بدون القدرة على السؤال بسرعة “كيف يمكنني تنفيذ المعالجة المتعددة في بايثون للروبوتات؟” كان عليّ أن أفهم المفاهيم الأساسية بعمق. أجبرني هذا على بناء أساس قوي في البرمجة المتزامنة، وأنظمة التحكم، ورؤية الكمبيوتر.
كانت الوثائق حاسمة: نظرًا لأنني لم أستطع الاعتماد على الذكاء الاصطناعي لشرح التعليمات البرمجية لاحقًا، كان عليّ كتابة وثائق وتعليقات واضحة للغاية. أثبتت هذه الانضباط أنها لا تقدر بثمن عند نقل المعرفة للآخرين.
عند النظر إلى الوراء، بينما كانت أدوات الذكاء الاصطناعي الحديثة ستسرع العديد من جوانب التطوير، فإن العمل بدونها أجبرني على تطوير مهارات حل المشكلات بشكل أعمق وفهم أكثر شمولاً للأنظمة الأساسية. من المثير للاهتمام التفكير في مدى اختلاف هذا المشروع لو كانت أدوات التطوير المتاحة اليوم متاحة.
القرار الصعب بالمغادرة
على الرغم من أنني أحببت العمل في مختبر HCR، بحلول أواخر عام 2021 واجهت قرارًا صعبًا يواجهه العديد من الطلاب: موازنة الفرص والمسؤوليات المتعددة. كنت أعمل في نفس الوقت بدوام كامل كمهندس برمجيات في eBay، وأنهيت درجة علوم الكمبيوتر في Mines، وساهمت في البحث في مختبر HCR.
كانت فرصة eBay مهمة؛ كانت أول دور رئيسي لي في هندسة البرمجيات، وقدمت خبرة صناعية لا تقدر بثمن، ووفرت لي دخلًا ثابتًا. ومع ذلك، كان محاولة الحفاظ على العمل بدوام كامل، وإكمال درجتي، والمساهمة بشكل هادف في البحث ببساطة غير مستدامة. كان يجب أن يتخلى شيء ما.
عندما اقتربت من الدكتور زانغ بشأن تقليل عبء الدروس للتركيز أكثر على العمل في المختبر، نصح بشدة ضد ذلك. كانت حجته منطقية: يجب أن تكون إكمال درجتي هي الأولوية، وكانت الخبرة الصناعية في eBay ستكون قيمة لتطوير مسيرتي المهنية. شعر أن ترك الدروس للتركيز على البحث، على الرغم من أنه مغري، قد لا يكون أفضل قرار على المدى الطويل.
لذا في سبتمبر 2021، بعد حوالي 8 أشهر من العمل المكثف في المختبر، اتخذت القرار الصعب بالتراجع عن دوري كمساعد بحث للتركيز على إكمال درجتي وع عملي في eBay. كان أحد أصعب القرارات المهنية التي كان عليّ اتخاذها في ذلك الوقت.
حتى بعد مغادرتي رسميًا المختبر، واصلت تقديم الدعم كلما احتاج أي شخص للمساعدة في الأنظمة التي بنيتها. قمت بتحديث الوثائق حسب الحاجة، وأجبت على الأسئلة حول التصحيح، وساعدت في حل المشكلات عن بُعد. لم تختفِ الروابط التي أنشأتها والاستثمار الذي قمت به في نجاح المشروع لمجرد أنني لم أعد جزءًا رسميًا من الفريق.
التأملات والنظر إلى الوراء
الآن، في عام 2025، بعد أربع سنوات، أجد نفسي أتأمل في ذلك الوقت بمشاعر معقدة. أخذت مسيرتي المهنية في عمق تطوير الويب وهندسة الذكاء الاصطناعي/التعلم الآلي، وهي مجالات كانت مجزية للغاية وقدمت فرصًا هائلة للنمو والتأثير.
ومع ذلك، هناك جزء مني يتساءل “ماذا لو.” كانت الروبوتات، وما زالت بصراحة، شغفي الحقيقي. هناك شيء ما في العمل مع الأنظمة الفيزيائية، ورؤية كودك يتحول إلى حركة وسلوك في العالم الحقيقي، لا يمكن لتطوير الويب أو حتى العمل في الذكاء الاصطناعي تكراره تمامًا.
أحيانًا أتساءل عما قد يحدث لو كنت قد اتخذت مسارًا مختلفًا. ماذا لو كنت قد وجدت طريقة للبقاء في بحث الروبوتات؟ ماذا لو كنت قد تابعت الدراسات العليا مباشرة بعد إنهاء درجة البكالوريوس؟ ماذا لو كنت قد اخترت إعطاء الأولوية للعمل في المختبر على الخبرة الصناعية؟
لكنني أدرك أيضًا أن كل مسار له تجاربه. كانت المهارات التي طورتها في تطوير الويب والذكاء الاصطناعي ذات قيمة كبيرة. علمتني الخبرة الصناعية عن هندسة البرمجيات على نطاق واسع، وتصميم تجربة المستخدم، والتحديات العملية لبناء منتجات يستخدمها الملايين من الناس. جعلتني هذه التجارب مهندسًا أفضل بشكل عام.
لا يزال العمل الذي قمت به في مختبر HCR يؤثر على كيفية اقترابي من المشكلات اليوم. يظهر التفكير المنهجي المطلوب لأنظمة التحكم PID في كيفية تصميمي لدورات التغذية الراجعة في أنظمة البرمجيات. كانت مهارات الوثائق والحفاظ على المعرفة التي طورتها لا تقدر بثمن في كل دور منذ ذلك الحين. شكلت تجربة الإرشاد والتعليم كيفية عملي مع المطورين المبتدئين ومساهمتي في مشاركة المعرفة في الفريق.
الأهم من ذلك، علمتني التجربة أنني أزدهر عندما أعمل على مشكلات تقنية صعبة لها تأثير حقيقي في العالم. سواء كان ذلك تحسين خوارزميات حركة الروبوتات أو بناء أنظمة ذكاء اصطناعي تساعد المستخدمين في تحقيق أهدافهم، فإن الرضا يأتي من حل المشكلات الصعبة التي تهم.
التأثير الدائم
عند النظر إلى تجربة مختبر HCR، أدهشني كم أنجزت في فترة زمنية قصيرة نسبيًا. غيرت الأنظمة التي بنيتها بشكل جذري كيفية عمل منصة تريتون، ولا تزال العديد من تلك التحسينات تُستخدم اليوم. أصبحت مستودع الوثائق الذي أنشأته قاعدة المعرفة للمشروع بأكمله. كانت علاقات الإرشاد التي شكلتها لها تأثير دائم على الأشخاص الذين عملت معهم.
لكن ربما الأهم من ذلك، أظهرت لي التجربة ما أنا قادر عليه عندما أعمل على مشكلات أنا شغوف بها حقًا. في تلك الأشهر الثمانية، أنا:
- تحسين نظام التحكم في حركة الروبوت الذي كان يحد من المنصة
- بناء نظام تنسيق متعدد الروبوتات من الصفر
- دمج قدرات الرؤية الحاسوبية ودمج المستشعرات
- إنشاء نظام شامل لإدارة الوثائق والمعرفة
- توجيه عدة أشخاص والمساعدة في نقل المعرفة
- دعم أبحاث على مستوى الدكتوراه في المركبات الذاتية القيادة
لم يكن الأمر يتعلق فقط بالإنجازات التقنية، على الرغم من أن تلك كانت ذات معنى بالنسبة لي. كان الأمر يتعلق بالتعلم أنه مع الإصرار والتفكير المنهجي، يمكنك تقديم مساهمات مفيدة حتى كطالب جامعي.
المستقبل والروبوتات
بينما أخذت مسيرتي المهنية في اتجاهات أخرى، لم تتضاءل شغفي بالروبوتات. لا أزال أتابع التطورات في هذا المجال، وأنا متحمس للتقدم في تعلم الروبوتات والأنظمة الذاتية القيادة، وأعمل أحيانًا على مشاريع روبوتات شخصية في وقت فراغي.
من يدري ماذا يحمل المستقبل؟ المهارات التي أطورها في الذكاء الاصطناعي وتعلم الآلة أصبحت ذات صلة متزايدة بالروبوتات. التجربة الصناعية التي اكتسبتها علمتني كيفية بناء أنظمة قوية وقابلة للتوسع. ربما هناك مستقبل حيث تتجمع هذه الخيوط المختلفة من تجربتي بطرق غير متوقعة.
في الوقت الحالي، أنا ممتن للوقت الذي قضيته في مختبر HCR والتجارب التي قدمها. كانت فترة تشكيلية شكلت كل من مهاراتي التقنية وفهمي لما هي أنواع العمل التي أجدها الأكثر إرضاءً. على الرغم من أنني أفتقدها أحيانًا، أعلم أن الدروس التي تعلمتها والأساليب التي طورتها لا تزال تؤثر على كل ما أفعله.
لا تزال روبوتات تريتون موجودة، لا تزال تخدم الباحثين، لا تزال تمكّن العمل المهم. وهذا أمر رائع حقًا.

















