فصل بحثي في الروبوتات

Table of Contents

يروي هذا المنشور رحلتي في مجال الروبوتات، بدءًا من اكتشاف شغفي بالروبوتات في FRC خلال المرحلة الثانوية في 2015 إلى فترة عملي كمساعد بحثي في مختبر الروبوتات المتمحورة حول الإنسان (HCR) التابع لـ كلية كولورادو للمعادن من فبراير 2021 إلى سبتمبر 2021. لاحظ أنه منذ أواخر 2022، انتقل مختبر HCR من كلية كولورادو للمعادن إلى جامعة ماساتشوستس أمهرست، مع موقعه من hcr.mines.edu إلى hcr.cs.umass.edu.

الخلفية

بدأت دراستي الجامعية في كلية كولورادو للمعادن في فصل خريف 2018. كان تخصصي علوم الحاسوب مع تركيز على الروبوتات والأنظمة الذكية. وتخرجت في ربيع 2022.

كنت محظوظًا لأنني وجدت شغفي مبكرًا في حياتي. خلال المرحلة الثانوية، قضيت وقتًا جيدًا في محاولة معرفة ما الذي أحبه وما الذي يمكن أن أكون جيدًا فيه. وبعد بعض المحاولة والخطأ، تمكنت من اكتشاف أن شغفي كان علوم الحاسوب. ولكن خلال هذه الفترة أيضًا اكتشفت أن لدي حبًا جارفًا للبناء من خلال الشفرة.

في Mines، أُتيحت لي الفرصة للعمل في مختبر الروبوتات المتمحورة حول الإنسان (HCR) التابع لـ Mines تحت إشراف الدكتور Hao Zhang. التقيت بالدكتور Zhang لأول مرة في ربيع 2020 من خلال مقرره “Human Centered Robotics” (CSCI473)، وبعد فوضى COVID والعمل الدراسي، تمكنت من العمل في مختبره في أوائل ربيع 2021.

مقرر الروبوتات المتمحورة حول الإنسان (CSCI473)

كان مقرر الروبوتات المتمحورة حول الإنسان (CSCI473) في Mines واحدًا من قلة قليلة من المقررات في تجربتي الجامعية التي كان لها أثر عميق عليّ. كان المقرر يُدرَّس على يد الدكتور Hao Zhang. كانت الدرجة الكاملة للمقرر مكوّنة من ثلاثة مشاريع فقط، قدّم كل واحد منها مشكلة صعبة وأدخل مفاهيم أساسية في الروبوتات. وقد كانت هذه المشاريع:

  1. تعلم نظام تشغيل الروبوت (ROS)
  2. التعلم التعزيزي لتتبع الجدار بواسطة الروبوت
  3. فهم الروبوت للسلوكيات البشرية باستخدام تمثيلات قائمة على الهيكل العظمي

تعلم نظام تشغيل الروبوت (ROS)

كان هذا أول مشروع أُسنِد إلينا. كان المشروع يتألف من ثلاث مهام:

  1. إعداد بيئة التطوير
  2. فهم محاكي Gazebo
  3. كتابة “Hello World” في ROS

بالنسبة للمهمتين 1 و2، كان علينا فقط إعداد بيئة التطوير واتباع درس تعليمي تمهيدي حول Gazebo. وشمل ذلك:

أما المهمة 3، فمن ناحية أخرى، فكانت تحديًا حقيقيًا. كانت المهمة هي استخدام turtlesim وجعل السلحفاة ترسم شعار “M” الخاص بـ Mines:

كانت هذه المهمة، رغم أنها بدت بسيطة، أكثر صعوبة مما كانت تبدو عليه. وقد قدّم لي هذا المشروع في النهاية مفهوم الأنظمة ذات الحلقة المفتوحة والأنظمة ذات الحلقة المغلقة. للحصول على الوصف الكامل للمشروع، اطّلع على csci473-p1.pdf أو يمكنك معرفة المزيد عن هذا المشروع وحليّ الخاص به في صفحة مشروع ROS Move Turtle.

التعلم التعزيزي لتتبع الجدار بواسطة الروبوت

كان هذا ثاني مشروع أُسنِد إلينا، وكان واحدًا من أصعب المشاريع التي عملت عليها في الكلية على الإطلاق. كان وصف المشروع كما يلي:

في هذا المشروع، سيقوم الطلاب بتصميم وتنفيذ خوارزميات التعلم التعزيزي لتعليم روبوت متنقل ذاتي القيادة أن يتبع جدارًا ويتجنب الاصطدام بالعوائق. سيستخدم الطلاب محاكاة Gazebo في ROS Melodic لمحاكاة روبوت متنقل متعدد الاتجاهات يُدعى Triton، مع استخدام خريطة بيئية مُقدَّمة إليكم. وسيستخدم الطلاب ماسح نطاق ليزري على الروبوت لإجراء الاستشعار والتعلم، حيث يتم التحكم في الروبوت باستخدام أوامر التوجيه والسرعة. ويُطلب من الطلاب برمجة هذا المشروع باستخدام C++ أو Python في ROS Melodic الذي يعمل على Ubuntu 18.04 LTS (أي نفس بيئة التطوير المستخدمة في المشروع 1). كما يُطلب من الطلاب كتابة تقرير باتباع صيغة مؤتمرات IEEE القياسية في الروبوتات باستخدام LATEX.

بالنسبة لخوارزمية التعلم التعزيزي، طُلب منا استخدام Q-Learning. كما استخدمنا بيئة محاكاة Gazebo Stingray المقدمة من المقرر. كانت Stingray تتكون من نموذج Triton ومنطق الفيزياء. كما زُوِّدنا أيضًا بمتاهة ليتبعها الروبوت. إجمالًا، بدت البيئة على هذا النحو:

لم أنشر حلي على GitHub أو على الويب لأنه لم يكن جيدًا جدًا وكان فيه الكثير من العيوب. كما أن تشغيل الشيفرة في البيئة الصحيحة أمر صعب ومزعج جدًا. ومع ذلك، لدي فيديو توضيحي قمت بتسليمه للمقرر، يوضح حلي. يمكنك مشاهدته هنا:

للحصول على الوصف الكامل للمشروع، اطّلع على csci473-p2.pdf

فهم الروبوت للسلوكيات البشرية باستخدام تمثيلات قائمة على الهيكل العظمي

بالنسبة للمشروع الثالث، كان وصف المشروع كما يلي:

في هذا المشروع، سيقوم الطلاب بتنفيذ عدة تمثيلات قائمة على الهيكل العظمي (المسلَّم 1) واستخدام آلات المتجهات الداعمة (SVMs) (المسلَّم 2) لتصنيف السلوكيات البشرية باستخدام مجموعة بيانات نشاط عامة جُمعت من مستشعر Kinect V1. بالإضافة إلى ذلك، يُطلب من الطلاب كتابة تقرير باتباع صيغة مؤتمرات IEEE القياسية في الروبوتات باستخدام LATEX في المسلَّم 3.

كان هذا المشروع تحديًا، لكنه لم يكن صعبًا بقدر المشروع الثاني. كان الهدف الرئيسي هو استخدام بيانات مستشعر Kinect V1، من مجموعة بيانات الأنشطة اليومية ثلاثية الأبعاد MSR، وآلات المتجهات الداعمة لتصنيف بعض الأفعال/السلوكيات البشرية. للحصول على الوصف الكامل للمشروع، اطّلع على csci473-p3.pdf أو يمكنك معرفة المزيد عن هذا المشروع وحليّ الخاص به في تدوينة Predict Human Actions Using LIBSVM.

خاتمة CSCI473

يُعد CSCI473 واحدًا من أفضل المقررات، إن لم يكن الأفضل، التي درستها خلال دراستي الجامعية في Mines. لقد علّمتني كل هذه المشاريع الكثير، ومكّنتني من امتلاك سجل جميل من المشاريع يمكنني التأمل فيه والرجوع إليه في سيرتي الذاتية. وكان أيضًا أول مقرر شعرت فيه أنني في مكاني الطبيعي، إذ لم أكن جيدًا في أداء الاختبارات لكنني برعت في إنجاز المشاريع. ومن خلال هذا المقرر أيضًا التقيت بالدكتور Hao Zhang، الذي ساعدني في النهاية على الحصول على منصب مساعد بحثي في مختبر الروبوتات المتمحورة حول الإنسان (HCR) التابع لـ Mines.

جلسة CS الميدانية (صيف 2020)

CG_GUI_19

خلال صيف 2020، وبين إنهاء CSCI473 والانضمام إلى مختبر HCR، درست CSCI370 أو “هندسة البرمجيات المتقدمة” ضمن برنامجي الجامعي في علوم الحاسوب في كلية كولورادو للمعادن. CSCI370 هو مقرر يجعل الطلاب يصممون ويطبقون ويوثقون حلولًا متعلقة بالبرمجيات لشركة. وهو يتيح للطلاب تطبيق معرفتهم الدراسية على مشكلات علوم الحاسوب الواقعية. يمكنك معرفة المزيد عن المقرر هنا.

في هذا المقرر، تحصل على فرصة اختيار المشروع/الشركة التي ستعمل عليها. وقد وفر المقرر ملفات PDF تفصل كل مشروع وكل شركة. وفي النهاية قررت العمل على مشروع نشرته شركة تُدعى Lunar Outpost بعنوان “اكتشاف انزلاق العجلات وتصحيح الأخطاء في الوقت الحقيقي من أجل تحسين الملاحة القمرية”. وبما أن الاسم طويل، فلنمنح المشروع اسمًا بديلًا هو “اكتشاف انزلاق العجلات”.

المشكلة

Lunar Outpost هي شركة ناشئة تحاول إنشاء عربات قمرية ذاتية القيادة. على القمر، يوجد الكثير من الغبار القمري المعروف بأنه يسبب الكثير من انزلاق العجلات. وهذا ليس مثاليًا لأن انزلاق العجلات يمكن أن يتسبب في فقدان الأنظمة الذاتية لموضعها الحقيقي في العالم. على الأرض، يتم حل هذا باستخدام بيانات GPS لتصحيح أي انحراف ناتج عن انزلاق العجلات. لكن المشكلة في GPS أنه لا يعمل إلا بوجود 30+ قمرًا صناعيًا للملاحة يدور باستمرار حول الأرض في المدار ويرسل إشارات فريدة تسمح لأجهزة الكمبيوتر بحساب موقعها. لكن على القمر، لا يوجد حاليًا شيء كهذا مثل GPS. ومع معرفة ذلك، يجب استخدام طريقة أخرى غير GPS لاكتشاف انزلاق العجلات. ويمكن الاطلاع على تقرير أكثر تفصيلًا عن مشكلة المشروع هنا.

الفريق

لم يكن هذا المشروع بسيطًا، لذلك كان لا بد من إنجازه ضمن فريق. كان الفريق يتألف من خمسة من زملائي الطلاب في كلية كولورادو للمعادن:

لم يكن هذا المشروع بسيطًا، لذلك كان لا بد من إنجازه ضمن فريق. كان هذا الفريق يتألف من Mehmet Yilmaz (أنا)، Kane Bruce، Braedon O’Callaghan، Liam Williams، وKevin Grant.

تطلّب المشروع منا معرفة بعض من ROS وC++ وPython وLinux وRaspberry Pi وArduino. كان لدى معظمنا خبرة في واحدة أو أكثر من هذه التقنيات، لكنني كنت الوحيد الذي لديه خبرة في ROS لأنني استخدمت ROS في مقرر الروبوتات المتمحورة حول الإنسان (CSCI473) خلال فصل ربيع 2020. وبسبب ذلك، ساعدت في وقت مبكر الجميع على مواكبة ROS وكيفية التطوير من أجله.

التحديات

في هذا المشروع كانت هناك الكثير من التحديات. لكن أكبر تحدٍّ واجهناه كان عدم وجود إمكانية الوصول إلى روبوت حقيقي لاختباره. وكان ذلك بسبب كوفيد الذي جعل كل شيء عن بُعد ومنعنا من العمل في مختبر/مباني Lunar Outpost. وبسبب ذلك، اضطررنا إلى استخدام المحاكاة.

كما أننا مررنا ببعض الأبحاث الأكاديمية من مختبر الملاحة في WVU للحصول على فكرة عن كيفية حل مشكلة انزلاق العجلات لحالة استخدام Lunar Outpost، وهو ما كان بالنسبة لنا، نحن طلاب السنة الثانية والثالثة في المرحلة الجامعية، أصعب مما توقعنا.

وكان تحدٍّ آخر واجهناه هو مقدار الوقت المتاح لنا للعمل على هذا المشروع. مادة CSCI370 هي مادة مدتها شهر واحد. لكن المشكلة نفسها مشكلة ضخمة حاولت العديد من الشركات والجهات الأكاديمية حلَّها/إتقانها لعقود. لذا فشهر واحد بعيد كل البعد عن أن يكون وقتًا كافيًا لحل هذه المسألة. لكن، رغم كل هذه التحديات، واصلنا العمل وتأكدنا من التسليم.

الخلاصة

بعد العمل عبر كل الأبحاث والتطوير، توصلنا إلى أنه من شبه المستحيل محاكاة فيزياء القمر بشكل صحيح رقميًا، لذا فإن محاولة تطبيق هذه الخوارزمية في محاكاة ليست ذات فائدة ولن تُنتج أي بحث ذي معنى في اكتشاف انزلاق العجلات في الفضاء وعلى القمر. واستنتجنا أن إعداد بيئة اختبار مناسبة باستخدام شيء مثل الرمال وأجهزة حقيقية، مثل روبوت Husky، هو أمر أكثر أهمية بكثير لهذا النوع من الأبحاث. لقد قمنا بالفعل بتحديث كود اكتشاف انزلاق العجلات ليعمل كعقدة ROS، وقد عمل بشكل صحيح وكان من السهل جدًا إدخاله إلى عتاد حقيقي للاختبار. أتاح لي هذا المشروع أن أتولى دورًا قياديًا، وأن أُعلِّم زملائي تطوير ROS، وأن أكتسب خبرة في Python وROS وGazebo أثناء التعامل مع مشكلة معقدة لم أواجهها من قبل. والأهم من ذلك، أن هذه التجربة رسّخت أكثر شغفي بالروبوتات وعززت رغبتي في متابعة البحث في هذا المجال، واضعةً الأساس لما سيأتي بعد ذلك في رحلتي مع الروبوتات.

البداية في مختبر HCR

بعد إكمال CSCI473، وجلسة المجال في علوم الحاسوب صيف 2020، وفصل الخريف 2020، قررتُ متابعة البحث في الروبوتات. كانت لديّ تجارب رائعة مع كل من CSCI473 وجلسة المجال، لذلك قررت أنني أريد أن أعمل في البحث لصالح مختبر HCR. وبما أنني كنت قد قابلت الدكتور Zhang في العام السابق، قررت أن أرسل له بريدًا إلكترونيًا وأسأله عن أي فرص قد يملكها المختبر في يناير 2021. وفي غضون نحو أسبوعين، أبدى الدكتور Zhang اهتمامًا، وقدم لي خيارات بحثية، وعرض عليّ دورًا في المختبر. ثم بدأت العمل في المختبر في فبراير 2021.

فيديو المقدمة

إليك فيديو المقدمة الذي سجلته بعد بضعة أشهر من وجودي في مختبر HCR. تم تسجيله في مايو 2021 ويغطي البحث الذي سأركز عليه في مختبر HCR خلال صيف 2021:

مشروعي

طوال فترة وجودي في مختبر HCR، ركزتُ بشكل أساسي على مشروع Triton. مشروع Triton هو روبوت متنقل طوّره مختبر الروبوتات المتمحورة حول الإنسان في كلية كولورادو للمناجم. وهو روبوت أرضي ثلاثي الشكل بعجلات omni-wheel يعمل بواسطة Jetson Nano من NVIDIA.

كان Triton، في نظرة عامة بسيطة، يتكون من الأجزاء التالية:

  • NVIDIA Jetson Nano
  • لوحة الناقل Seed Studio A205 من NVIDIA
  • Arduino Mega
  • بطاقة Micro SD بسعة 64 جيجابايت
  • هيكل مخصص مطبوع بتقنية الطباعة ثلاثية الأبعاد
  • 3 عجلات mecanum
  • 1 بطارية AR
  • دوائر مخصصة لتوزيع الطاقة والتوصيلات بشكل مُحسَّن
  • كاميرا Realsense D435 من Intel
  • بعض مصابيح LED

تم تصميمه وبناؤه وتصنيعه تقريبًا بين 2018 و2020 كروبوت لأغراض تعليمية. وبحلول الوقت الذي انضممت فيه، كان Triton قد أصبح مستقرًا إلى حد كبير، وكان المختبر يفكر في صنع نسخة جديدة منه. ومع ذلك، كانت المشكلة الرئيسية في Triton هي برمجياته. كان Triton قادرًا على الحركة والشحن والعمل بالمعنى الأساسي، لكنه لم يكن يفعل شيئًا ذكيًا حقًا. بل كان يفتقر حتى إلى القدرة على تنفيذ حركات أكثر تقدمًا.

إعداد شاحن البطارية تخطيط منطقة الاختبار
Tritons في مرحلة الاختبار المبكرة Tritons على الرفوف

للبدء في معالجة هذا الأمر، أنشأ المختبر منطقة يمكننا من خلالها تتبع Triton. ولعمل ذلك، أنشأوا منطقة بحجم 2 متر × 2 متر مع 8 كاميرات Optitrack Flex (الأشعة تحت الحمراء) على شكل مربع تقريبًا على ارتفاع نحو 6-7 أقدام فوق الأرض.

المنطقة I1 المنطقة I2

إلى جانب بناء هذه المنطقة، كان لكل Triton ثلاث كرات رمادية كروية مثبتة في أعلى هيكلها.

بهذا الإعداد، كنا قد بنينا فعليًا نظام GPS صغيرًا خاصًا بنا أتاح لنا الحصول على الإحداثيات الدقيقة بالمتر لـ Triton في منطقة اهتمامنا. وباستخدام كاميرات Optitrack تحت الحمراء وكرات Optitrack الرمادية بشكل مثلث، استطعنا تحديد الإحداثيات الدقيقة لـ Triton في منطقتنا. وقد أتاح لنا ذلك تطبيق نظام حلقة مغلقة لتحسين الدقة في الحركة.

وفّر نظام Optitrack بيانات الموضع والاتجاه بمعدل حوالي 120 هرتز بدقة أقل من المليمتر عند معايرته بشكل صحيح. كانت العلامات العاكسة الثلاثة لكل Triton تشكل نمطًا مثلثيًا فريدًا يمكن للنظام تتبعه كجسم صلب. وقد تمت معايرة نظام الإحداثيات بحيث تكون النقطة (0,0) في مركز منطقة التتبع، مع محاذاة محوري X وY مع هندسة الغرفة. لكن رغم هذه البيانات الدقيقة للتموضع، كان Triton لا يزال يعاني في الحركة.

مع هذا الإعداد، كانت إحدى الميزات الأساسية التي أردنا توفيرها لـ Triton هي القدرة على التحرك إلى إحداثية محددة. كان بإمكان المستخدم، أو برمجته، توفير إحداثية (x, y) داخل منطقة الاهتمام الخاصة به. ثم يتحرك الروبوت إلى تلك الإحداثية بأقصى سرعة ودقة وسلاسة ممكنة. عندما انضممت، كانت هذه الميزة موجودة لكنها لم تكن تعمل بشكل جيد جدًا. إليك حركة بسيطة توضح كيف كانت تعمل منطقية الحركة الأصلية:

لم أسجل الحل الأصلي أثناء العمل، لذا أنشأت هذه الحركة البسيطة لأوضح لك منطق الحركة القديم أثناء التنفيذ. ومعرفة هذا، ما المشكلات في هذه الطريقة؟

  1. إنها بطيئة جدًا
  2. تجعل الروبوت يشغل مساحة كبيرة فقط للذهاب إلى نقطة محددة. وهذا جعل من الصعب علينا استخدام هذا الحل عندما كانت عدة Tritons تتحرك حولها.

فلماذا كان هذا السلوك يحدث؟ كانت المشكلة أن Triton كان أولًا يدور، مُغيِّرًا alpha، حتى يشير نحو نقطة الهدف ضمن هامش خطأ محدد. ثم كان يندفع إلى الأمام، وبعد أن تصبح theta منحرفة عن الهدف بمقدار معين، كان يتوقف ويبدأ في الدوران مرة أخرى حتى تصبح alpha ضمن ذلك النطاق المقبول للهدف. ثم يندفع مرة أخرى ويستمر في فعل ذلك حتى يصل إلى النقطة. كذلك، كلما اقترب أكثر فأكثر من نقطة الهدف، كانت سرعة الدوران والاندفاع تصبح أبطأ بكثير لضمان ألا يتجاوز الهدف. وقد أدى ذلك إلى حركة غير طبيعية لـ Triton، واستغراقه وقتًا طويلًا جدًا للوصول إلى نقطة الهدف، واحتياجه إلى مساحة كبيرة جدًا فقط للوصول إلى نقطة هدف محددة. لذا، مع كل هذه المشكلات، وبالنظر إلى مدى أهمية هذه الميزة لتطوير مشروع Triton، عندما بدأت العمل في مختبر HCR، كانت مهمتي الأولى هي تطوير حلول أكثر فاعلية تتيح لـ Triton التنقل بشكل أفضل إلى نقطة هدف.

ومعرفة هذا، قضيتُ وقتًا طويلًا في البحث عن أفضل طريقة ممكنة لمعالجة هذه المشكلة. والمفارقة أنني كنت أدرس مادة تُسمى مقدمة في أنظمة التحكم الراجعة (EENG307) في Mines. في بداية تلك المادة، تعلمنا مفهوم المتحكمات ذات الحلقة المفتوحة والمتحكمات ذات الحلقة المغلقة. ومعرفة هذا، وبعد بعض النقاش الذي أجرَيتُه مع أستاذ تلك المادة وزميلي الذكي في السكن، أصبح واضحًا أن هدف جعل Triton يصل إلى نقطة هدف هو مشكلة نظام حلقة مغلقة.

مخطط نظام تحكم على السبورة البيضاء

الآن، وبعد اختبار وبحث مكثفين، طوّرتُ نهجين مختلفين للمتحكمات الخاصة بـ Tritons:

الطريقة 1: متحكم المسافة-Theta

استخدم هذا النهج متحكمين تناسبيين منفصلين يعملان في الوقت نفسه:

  • متحكم المسافة: يحسب المسافة الإقليدية إلى الهدف ويطبّق كسبًا تناسبيًا لتحديد السرعة الأمامية/الخلفية
  • متحكم Theta: يحسب الخطأ الزاوي بين اتجاه الروبوت الحالي والاتجاه المطلوب نحو الهدف، ويطبّق كسبًا تناسبيًا منفصلًا للسرعة الدورانية

كانت الخوارزمية تحسب باستمرار المسافة الإقليدية إلى الهدف والخطأ الزاوي بين اتجاه الروبوت الحالي والاتجاه المطلوب. وتم تطبيق كسبين تناسبيين منفصلين لتوليد السرعات الخطية والزاوية على التوالي.

أدى ذلك إلى أن يتحول Triton طبيعيًا نحو الهدف بينما يتحرك إلى الأمام في الوقت نفسه، مما يخلق مسارات منحنية سلسة. وكانت الميزة الأساسية هي أن الروبوت كان يُبقي واجهته الأمامية دائمًا موجهة نحو الوجهة، وهو أمر بالغ الأهمية للتطبيقات المعتمدة على الكاميرا.

الطريقة الثانية: متحكّم إحداثيات X-Y

تعامل هذا النهج مع الروبوت كأنه مُخطِّط ثنائي الأبعاد، مع تحكّم مستقل في حركة X وY:

  • متحكّم X: تحكّم مباشرةً في الحركة شرق-غرب بناءً على خطأ إحداثي X
  • متحكّم Y: تحكّم مباشرةً في الحركة شمال-جنوب بناءً على خطأ إحداثي Y

حسب التنفيذ أخطاء إحداثيات X وY بشكل مستقل، وطبّق معاملات كسب تناسبية منفصلة، ثم حوّل مركّبات السرعة العالمية هذه إلى إطار الإحداثيات المحلي للروبوت باستخدام مصفوفات الدوران. كان هذا التحويل ضرورياً لأن نظام الدفع بعجلات omni-wheel في الروبوت كان يتطلب سرعات ضمن إطار مرجعه الخاص، لا ضمن الإحداثيات العالمية. أنتجت هذه الطريقة أكثر المسارات مباشرةً إلى الأهداف وكانت أسرع بكثير، لكن اتجاه الروبوت كان ينحرف لأنه لم يكن هناك تحكّم صريح في الاتجاه.

بالنسبة للطريقة #1، فقد شرحتُ هذه الطريقة بالتفصيل الكامل في مدونة Move Turtle (TurtleSim). أوصي بشدة بقراءة هذه المدونة للحصول على كل التفاصيل حول كيفية عمل متحكمات PID بشكل عام، وكذلك كيفية عمل الطريقة #1. طوّرتُ الطريقة #1 باستخدام TurtleSim في ROS، ثم نقلتُ ذلك الشيفرة إلى Triton وحدّثتُها لتأخذ بيئة أكثر واقعية بعين الاعتبار.

استخدمت الطريقة #2 نهجاً مختلفاً إلى حدٍّ كبير لكنه فعال بالقدر نفسه. بدلاً من التفكير في اتجاه الروبوت والمسافة إلى الهدف، تتعامل هذه الطريقة مع الحركة كمسألة على مستوى الإحداثيات. يحسب المتحكّم باستمرار الخطأ في كلٍّ من اتجاهي X وY بشكل منفصل. على سبيل المثال، إذا كان على الروبوت أن ينتقل من (0,0) إلى (2,3)، فإنه يرى ذلك على أنه حاجة إلى تصحيح خطأ مقداره متران في X وثلاثة أمتار في 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 مخصصة خاصة به تتولى:

  • حسابات التحكم التناسبي التفاضلي في الزمن الحقيقي بمعدل ~50Hz
  • الاتصال بأجهزة الروبوت (Arduino/Jetson)
  • تنفيذ المسار المحلي وتجنب العوائق
  • الإبلاغ عن الحالة إلى المتحكم الرئيسي

اتصال الذاكرة المشتركة: استخدمتُ multiprocessing.shared_memory وQueue في Python لتمكين الاتصال الفعّال بين العمليات. أتاح ذلك تنسيقاً في الزمن الحقيقي دون عبء الاتصال عبر الشبكة.

آليات المزامنة: لمنع التعارضات عندما تحتاج عدة روبوتات إلى التنسيق (مثل تجنب الاصطدامات)، نفذتُ semaphores وlocks تسمح للروبوتات بطلب وصول حصري إلى مناطق معينة من مساحة العمل.

كان التحدي هو ضمان أن جميع الروبوتات يمكنها تشغيل حلقات التحكم الخاصة بها بشكل مستقل مع الحفاظ في الوقت نفسه على التنسيق العالمي. كانت كل عملية روبوت تشغّل حسابات PID الخاصة بها وترسل أوامر المحركات مباشرة إلى العتاد، بينما كانت العملية الرئيسية تتولى التنسيق على مستوى أعلى مثل تجنب الاصطدام وتخطيط المسار.

اختبار تقاطع متعدد Triton إعداد مبكر لعدة Tritons

Triton مع الطائرات المسيّرة لأعمال متعددة الوكلاء المستقبلية

فتح نظام Triton المتعدد إمكانيات بحثية جديدة تماماً. أصبح بإمكاننا الآن محاكاة:

  • سيناريوهات الاتصال بين المركبات
  • التخطيط المنسق للمسار مع تجنب العوائق
  • سلوكيات روبوتات السرب
  • رسم خرائط SLAM متعددة الوكلاء
  • التحكم في التشكيل وسلوكيات المتابعة

إليك شكل إعداد المختبر مع تشغيل عدة Tritons في الوقت نفسه:

روبوتات على شبكة خضراء إعداد شبكة الروبوتات

طوّرتُ أيضاً واجهة سهلة الاستخدام سمحت للباحثين بتحديد المسارات بصرياً لكل Triton. كان بإمكانك حرفياً رسم المسار الذي تريد أن يتبعه كل روبوت، وسيقومون بتنفيذ هذه المسارات بتنسيق مثالي. كان هذا مفيداً للغاية لإعداد تجارب معقدة دون الحاجة إلى كتابة شيفرة يدوية لكل حركة.

كان النظام قادراً على التعامل مع ما يصل إلى 5 Tritons في الوقت نفسه، حيث كان كل واحد يشغّل متحكمات PID الخاصة به بينما يجري تنسيقه عبر نظام التحكم المركزي. كان الأداء مبهراً، إذ حافظت جميع الروبوتات على دقتها الفردية أثناء عملها معاً كفريق.

إليك قائمة تشغيل تعرض Tritons أثناء العمل، من التحكم بروبوت واحد إلى التنسيق بين عدة روبوتات: قائمة تشغيل Tritons in Action

دمج مستشعر العمق وتصحيح الإحداثيات

إنجاز رئيسي آخر عملتُ عليه كان يتضمن الاستفادة من كاميرات Intel RealSense D435 للعمق المثبتة على كل Triton. وبينما كان نظام Optitrack يمنحنا بيانات تموضع دقيقة للغاية، أردتُ استكشاف كيف يمكن للروبوتات استخدام مستشعراتها المدمجة لتحسين وعيها المكاني وتصحيح أخطاء الإحداثيات.

كانت الفكرة أن تتمكن Tritons من استخدام مستشعرات العمق الخاصة بها لاكتشاف Tritons الأخرى في محيطها ومقارنة مواقعها. وكان ذلك سيخدم عدة أغراض:

  1. تصحيح الأخطاء: إذا كان لدى نظام Optitrack أي انجراف في المعايرة أو حجب مؤقت، فيمكن للروبوتات استخدام التأكيد البصري لمواقع بعضها البعض للحفاظ على أنظمة إحداثيات دقيقة.

  2. SLAM محسّن: من خلال وجود عدة روبوتات مزودة بمستشعرات عمق تعمل معاً، يمكننا إنشاء خرائط أغنى بكثير للبيئة مع نقاط بيانات زائدة.

  3. تجنّب الاصطدام: كان من شأن استشعار العمق في الوقت الحقيقي أن يتيح للروبوتات اكتشاف بعضها بعضًا وتجنّبها حتى لو كان نظام التحكم المركزي يعاني من تأخيرات في الاتصال.

بدأتُ في تجربة خوارزميات من شأنها أن تتيح لـ Tritons أن:

  • اكتشاف Tritons أخرى باستخدام شكلها المثلثي المميّز وعلامات الكرة العاكسة
  • حساب المواضع والاتجاهات النسبية باستخدام بيانات العمق
  • مقارنة هذه القياسات ببيانات Optitrack لتحديد التباينات
  • وربما تعديل نظام الإحداثيات الخاص بها في الوقت الحقيقي للحفاظ على الدقة

تجارب الرؤية الحاسوبية

قضيتُ وقتًا كبيرًا في تجربة خط أنابيب للرؤية الحاسوبية كان يعمل عبر عدة مراحل:

Two Tritons facing each other for computer vision tests Close-up of Triton's camera
Two Tritons face-to-face for testing
Two robots facing each other Two Tritons about to race

معالجة بيانات العمق: وفّر Intel RealSense D435 كلاً من تدفقي بيانات RGB والعمق. عملتُ بشكل أساسي مع بيانات العمق، التي كانت تأتي على هيئة مصفوفة 640x480 من قياسات المسافة بمعدل 30Hz. كانت التحدي الأول هو ترشيح بيانات العمق المشوشة هذه لاستخراج معلومات هندسية ذات معنى.

محاولات كشف الأجسام: جرّبتُ خوارزميات كشف متعددة المراحل. حققتُ بعض النجاح في تقسيم صورة العمق لتحديد الأجسام عند مستوى الأرض (مع استبعاد الجدران والسقف، إلخ) والبحث عن أجسام ذات خصائص حجم مناسبة، وبصمة تقريبية بمقدار 0.3x0.3 متر. جرّبتُ استخدام كشف الحواف والتحليل الهندسي لتحديد الملف المميز لـ Triton، مع نتائج متباينة.

تجارب التعرّف على العلامات: بدت الكرات الثلاث العاكسة على كل Triton أكثر ميزة كشف واعدة. جرّبتُ خوارزميات كشف الكتل (blob detection) لتحديد النمط المثلثي المميز المكوّن من ثلاث نقاط ساطعة في صورة العمق. حققتُ بعض النتائج الواعدة في ظروف إضاءة مضبوطة، رغم أنها لم تكن موثوقة باستمرار.

بحث دمج الإحداثيات: بحثتُ في أساليب لدمج تقديرات الموضع المستندة إلى الرؤية مع بيانات Optitrack، بما في ذلك تطبيقات أساسية لمرشح كالمان. كان المفهوم هو إعطاء وزن أكبر لبيانات Optitrack عندما تكون متاحة، لكن الرجوع إلى الرؤية عند الحاجة، رغم أنني لم أنجح في جعل هذا يعمل بالكامل قبل انتهاء فترة عملي في المختبر.

تحديات الأداء: كان تشغيل كل هذه المعالجة في الوقت الحقيقي جنبًا إلى جنب مع حلقات التحكم في الروبوت تحديًا كبيرًا. جرّبتُ أساليب تحسين لتشغيل الخوارزميات بمعدل يقارب 10-15Hz دون إرباك قدرات Jetson Nano على المعالجة.

للأسف، اضطررتُ إلى مغادرة المختبر قبل أن أتمكن من إكمال هذا العمل في الرؤية الحاسوبية بالكامل. وبينما كانت لدي بعض النتائج الأولية الواعدة وتعلمتُ الكثير عن معالجة مستشعرات العمق، فإنني لم أصل بالنظام إلى حالة موثوقة تمامًا. وبقي هذا اتجاهًا بحثيًا مثيرًا يمكن للآخرين البناء عليه.

إليك فيديو لي وأنا أختبر خوارزميات الرؤية الحاسوبية:

إليك ما كان يبدو عليه عرض مستشعر العمق أثناء تجاربي:

على الرغم من أنني لم أكمل عمل دمج مستشعر العمق، فإن المفهوم أظهر إمكانات لتطبيقات مثل محاكاة سيناريوهات السيارات ذاتية القيادة، حيث تحتاج المركبات إلى الوعي ببعضها بعضًا دون الاعتماد فقط على البنية التحتية الخارجية. كان اتجاه البحث الذي بدأتُ في استكشافه يمكن أن يساهم في العمل المستقبلي في المختبر.

التوثيق والحفاظ على المعرفة

كان أحد أهم إسهاماتي في مختبر HCR، وربما الذي أفتخر به أكثر من غيره، هو تنظيم وحفظ جميع وثائق المشروع. عندما انضممتُ إلى المختبر، كانت معرفة مشروع Triton مبعثرة عبر منصات وصيغ متعددة. وكانت المعلومات المهمة موزعة عبر:

  • حسابات Google Drive المختلفة التابعة لطلاب متخرجين
  • رسائل بريد إلكتروني قديمة مدفونة في صناديق الوارد
  • مجلدات Dropbox عشوائية
  • عدة مستودعات GitHub
  • مستودعات GitLab ذات تنظيم غير متسق
  • ملاحظات مكتوبة بخط اليد لا يمكن تفسيرها إلا من قبل أشخاص محددين

كان هذا التوثيق المجزأ مشكلة كبيرة. كان الطلاب الجدد يقضون أسابيع فقط في محاولة فهم كيفية البدء، وكانت المعرفة القيمة تُفقد باستمرار عندما يتخرج الأشخاص أو يغادرون المختبر.

تولّيتُ بنفسي حل هذه المشكلة بشكل منهجي. قضيتُ ساعات لا تُحصى في تتبع كل قطعة من التوثيق، والكود، والفيديو، والملاحظات المتعلقة بمشروع Triton. ثم نظّمتُ كل شيء في مستودع GitLab مركزي ذي بنية واضحة ومنطقية.

Triton on desk Multiple Tritons on table (8 total, 5 being built)

Tritons on shelf at nice angle

شمل التوثيق المركزي ما يلي:

  • أدلة البناء: تعليمات خطوة بخطوة لتجميع Tritons من الصفر
  • إعداد البرمجيات: أدلة كاملة لإعداد بيئة التطوير
  • توثيق الشفرة: كود مع تعليقات جيدة وشروحات واضحة
  • مواصفات الأجهزة: قوائم أجزاء مفصلة، ومخططات التوصيل، وتصاميم PCB
  • أدلة استكشاف الأخطاء وإصلاحها: المشكلات الشائعة وحلولها
  • دروس الفيديو: أنشأتُ ورفعتُ مقاطع فيديو تعليمية على YouTube، بما في ذلك دروس تفصيلية لمعايرة Optitrack:

كما وضعتُ معايير للتوثيق لضمان أن تكون المساهمات المستقبلية منظمة وسهلة الوصول. وأصبح هيكل المستودع الذي أنشأتُه الأساس لكل العمل اللاحق في المختبر.

وبالإضافة إلى تنظيم التوثيق الموجود، أنشأتُ عدة أدلة وشروحات أصلية سدّت فجوات حرجة في قاعدة المعرفة. وشملت هذه تعليمات إعداد مفصلة لأعضاء المختبر الجدد، وأدلة شاملة لاستكشاف الأخطاء وإصلاحها، وجولات فيديو للإجراءات المعقدة.

كان الأثر فوريًا ودائمًا. أصبح بإمكان الطلاب الجدد اكتساب الجاهزية في أيام بدلًا من أسابيع. ولا يزال مستودع التوثيق الذي أنشأتُه مستخدمًا في المختبر حتى اليوم، بعد سنوات من مغادرتي. وقد أصبح المصدر الوحيد للحقيقة لمشروع Triton وأنقذ ساعات/أيامًا لا تُحصى للباحثين في المستقبل.

الإرشاد ونقل المعرفة

كان أحد أكثر الجوانب إرضاءً في وقتي في مختبر HCR هو فرصة إرشاد الآخرين ومشاركة المعرفة التي اكتسبتها. ومع تقدّم عملي وازدياد خبرتي بأنظمة Triton، تحملتُ مسؤولية متزايدة في تدريب أعضاء الفريق الجدد.

إرشاد خلفاء المختبر

بينما كنتُ أستعد في النهاية لمغادرة المختبر للتركيز على إنهاء شهادتي وعَمَلي في eBay، حرصتُ على تدريب شخصين تدريبًا شاملًا سيتوليان مشروع Triton بعد مغادرتي. لم يكن الأمر مجرد إظهار كيفية عمل الأشياء، بل كان يتعلق بضمان فهمهما الحقيقي للمبادئ الأساسية حتى يتمكنا من مواصلة الابتكار.

قضيتُ أسابيع أعمل معهما عن قرب، مرورًا بما يلي:

  • الأسس الرياضية لأنظمة التحكم PID
  • بنية المعالجة المتعددة لتنسيق عدة روبوتات
  • دمج مستشعر العمق وخوارزميات الرؤية الحاسوبية
  • نظام التوثيق وكيفية الحفاظ عليه
  • تقنيات تصحيح الأخطاء وأنماط الفشل الشائعة

كان نقل المعرفة شاملًا للغاية. أجرينا جلسات تصحيح أخطاء حقيقية معًا، وطلبتُ منهما تعديل الكود الموجود وتوسيعه، وتأكدتُ من أنهما قادران على إعداد Tritons جديدة من الصفر بشكل مستقل.

برنامج الإرشاد لطلاب المدرسة الثانوية

ولعل التجربة الأكثر إرضاءً كانت إرشادي لطالب ثانوية من خلال برنامج التوعية التابع للمختبر. كانت هذه فرصة رائعة لتعريف شخص ما بالروبوتات وعلوم الحاسوب والبحث في مرحلة محورية من تعليمه.

صممتُ منهجًا شاملًا غطّى:

أساسيات علوم الحاسوب:

  • مفاهيم البرمجة باستخدام Python كلغة أساسية
  • مقدمة في البرمجة كائنية التوجه
  • فهم الخوارزميات وهياكل البيانات

مفاهيم الروبوتات:

  • كيفية عمل المستشعرات وكيفية الربط معها
  • التحكم بالمشغلات وأنظمة المحركات
  • أساسيات الأنظمة الذاتية والتحكم الارتدادي

ROS (نظام تشغيل الروبوت):

  • فهم نظام الرسائل النشر/الاشتراك
  • إنشاء العقد والخدمات
  • العمل مع ملفات الإطلاق وخوادم المعلمات

العمل التطبيقي على المشروع:

  • تعاونا في إنشاء خدمة ROS تتحكم في نظام LED على رأس Triton
  • تعلّمت كتابة كود نظيف ومُوثّق يتكامل مع أنظمتنا الحالية
  • أصبحت خدمة التحكم في LED التي أنشأتها جزءًا دائمًا من قاعدة Triton البرمجية

ما جعل هذا الإرشاد مميزًا بشكل خاص هو مشاهدة تطورها من معرفة شبه معدومة بالبرمجة إلى المساهمة بكود ذي معنى في مشروع بحثي نشط. انتقلت من سؤال “ما هو المتغير؟” إلى تصحيح مشكلات اتصال ROS بشكل مستقل وكتابة تطبيقات خدمتها الخاصة.

أتاح نظام التحكم في LED الذي طورته للباحثين تغيير ألوان وأنماط مصابيح LED في رأس Triton بسهولة عبر أوامر ROS بسيطة. قد يبدو هذا بسيطًا، لكنه تطلّب فهم بنية ROS، والربط مع العتاد، وأنماط التصميم البرمجية المناسبة. ولا يزال إسهامها مستخدمًا في المختبر حتى اليوم.

كانت الإرشاد التعليمي مفيدًا لي بقدر ما كان مفيدًا لها. لقد أجبرني على تفكيك المفاهيم المعقدة إلى أجزاء سهلة الهضم وعلى التفكير حقًا في الأساسيات لما كنا نفعله. إن تعليم شخص آخر جعلني مهندسًا وباحثًا أفضل.

التعاون مع أبحاث الدكتوراه

كان أحد أكثر الجوانب إرضاءً من الناحية المهنية في فترة وجودي في المختبر هو العمل عن كثب مع بنغ، وهو طالب دكتوراه ركز بحثه على خوارزميات السيارات ذاتية القيادة. لقد ساعدت التحسينات البرمجية التي أجريتها على نظام Triton في دعم أبحاثه للدكتوراه.

كان بحث بنغ يتطلب تنسيقًا دقيقًا وموثوقًا بين عدة روبوتات لمحاكاة سيناريوهات السيارات ذاتية القيادة. قبل تحسيناتي على التحكم في الحركة وأنظمة الروبوتات المتعددة، كانت هذه التجارب أصعب بكثير في التنفيذ. كانت الروبوتات أبطأ، وأقل دقة، ولا تستطيع العمل معًا بفاعلية مماثلة.

ساعدت مساهماتي بحث بنغ في عدة مجالات:

دراسات إدارة التقاطعات: مع متحكمات PID المحسنة وتنسيق الروبوتات المتعددة، استطاع بنغ محاكاة سيناريوهات التقاطعات حيث احتاجت عدة “مركبات” (تريتونات) إلى تنسيق حركاتها. ساعد التوقيت الأفضل والتموضع الأفضل في جعل هذه الدراسات أكثر قابلية للتنفيذ.

الاتصال من مركبة إلى مركبة: أتاح إطار العمل متعدد العمليات الذي طورته لبنغ تنفيذ بروتوكولات الاتصال واختبارها بين المركبات المحاكاة. كان بإمكان كل Triton اتخاذ القرارات مع الاستمرار في التنسيق مع الآخرين، بشكل مشابه لكيفية عمل السيارات ذاتية القيادة.

أبحاث SLAM والخرائط: وفر عمل تكامل مستشعر العمق لبنغ بيانات إضافية لأبحاثه في التمركز المتزامن ورسم الخرائط. وقد أتاح وجود عدة روبوتات بقدرات استشعار منسقة إجراء تجارب رسم خرائط أكثر شمولًا.

ما جعل تعاوننا ذا قيمة خاصة هو أنه لم يكن مجرد مساعدتي لأبحاثه، بل كان شراكة حقيقية. ساعد فهم بنغ للجوانب النظرية للمركبات ذاتية القيادة في توجيه تطبيقاتي العملية. دفعتني ملاحظاته ومتطلباته إلى جعل الأنظمة أكثر متانة وقدرة.

قضينا ساعات عديدة في المختبر معًا، نُصحح المشكلات، ونناقش استراتيجيات تحكم مختلفة، ونستكشف ما الذي يمكن أن تفعله منصة Triton. أصبح بنغ زميلًا وصديقًا في آنٍ واحد، وقد علمني العمل معه الكثير عن كيفية عمل البحث الأكاديمي فعليًا.

أصبحت الأنظمة التي بنيتها جزءًا مفيدًا من عمل أطروحة بنغ. كان من المُرضي حقًا أن أرى مساهماتي الهندسية العملية تدعم الأبحاث في تقنية المركبات ذاتية القيادة. وقد عزز ذلك اهتمامي بكيفية عمل الهندسة الجيدة والبحث معًا لتحقيق نتائج مفيدة.

حتى بعد مغادرتي المختبر، ظل بنغ وأنا على تواصل. ومعرفة أن عملي استمر في المساهمة في أبحاث مهمة حتى بعد رحيلي كانت مُجزية للغاية.

منظور: عصر ما قبل نماذج اللغات الكبيرة في التطوير

من الجدير بالذكر أن كل هذا العمل أُنجز خلال عصر ما قبل نماذج اللغات الكبيرة في تطوير البرمجيات. وقد حدث كل ذلك بين عامي 2020 و2021 (وبشكل رئيسي 2021)، قبل وجود ChatGPT، وClaude، وPerplexity، أو أدوات التطوير المدعومة بالذكاء الاصطناعي مثل Cursor IDE.

كان كل سطر من الشيفرة يُكتب من الصفر، وكان كل خوارزمية تُبحث من خلال الأوراق الأكاديمية والكتب المدرسية، وكانت كل جلسة تصحيح أخطاء تتضمن أساليب تقليدية مثل أوامر الطباعة، والمصححات البرمجية، والاختبار المنهجي. عندما كنت أعلق في مشكلة تحويل إحداثيات أو ضبط PID، لم أكن أستطيع ببساطة أن أسأل مساعد ذكاء اصطناعي لشرح المفهوم أو المساعدة في تصحيح المشكلة.

جعل هذا عملية التطوير أكثر صعوبة بكثير، ولكنه كان أيضًا أكثر تعليمًا. كان عليّ أن:

أبحث في كل شيء يدويًا: كان فهم نظرية التحكم PID يعني قراءة الكتب المدرسية والأوراق الأكاديمية. وكان فهم تحويلات الإحداثيات يتطلب العمل على الرياضيات يدويًا. كان يجب فهم كل مفهوم فهمًا كاملًا قبل التنفيذ.

أصحح الأخطاء دون مساعدة الذكاء الاصطناعي: عندما كانت الروبوتات تتحرك في اتجاهات غير متوقعة أو تتذبذب حول الأهداف، كان عليّ تتبع المنطق بعناية، وإضافة مخرجات تصحيح الأخطاء، واختبار الفرضيات واحدة تلو الأخرى. لم يكن هناك ذكاء اصطناعي يقترح مشكلات محتملة أو يساعد في تفسير أنماط الأخطاء.

أتعلم من المبادئ الأولى: من دون القدرة على طرح سؤال سريع مثل “كيف أُنفذ المعالجة متعددة العمليات في بايثون للروبوتات؟” كان عليّ أن أفهم المفاهيم الأساسية بعمق. وقد أجبرني ذلك على بناء أساس متين في البرمجة المتزامنة، وأنظمة التحكم، ورؤية الحاسوب.

كانت الوثائق أمرًا بالغ الأهمية: بما أنني لم أستطع الاعتماد على الذكاء الاصطناعي لشرح الشيفرة لاحقًا، كان عليّ أن أكتب توثيقًا وتعليقات واضحة للغاية. وقد ثبت أن هذا الانضباط لا يقدر بثمن عند نقل المعرفة إلى الآخرين.

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

القرار الصعب بالمغادرة

على الرغم من مدى حبي للعمل في مختبر HCR، فقد واجهت في أواخر عام 2021 قرارًا صعبًا يواجهه كثير من الطلاب: الموازنة بين فرص ومسؤوليات متعددة. كنت أعمل في الوقت نفسه بدوام كامل كمهندس برمجيات في eBay، وأنهي دراستي في علوم الحاسوب في Mines، وأسهم في البحث في مختبر HCR.

كانت فرصة eBay مهمة؛ فقد كانت أول وظيفة كبيرة لي في هندسة البرمجيات، ووفرت خبرة صناعية لا تقدر بثمن، ومنحتني دخلاً ثابتًا. ومع ذلك، فإن محاولة الحفاظ على عمل بدوام كامل، وإكمال دراستي، والإسهام بشكل ذي معنى في البحث كانت ببساطة أمرًا غير مستدام. كان لا بد أن يتنازل أحد هذه الأمور.

عندما تحدثت مع الدكتور Zhang حول احتمال تقليل عبء مقرراتي لأركز أكثر على العمل في المختبر، نصحني بشدة بعدم القيام بذلك. وكان منطقه سليمًا: يجب أن يكون إنهاء دراستي هو الأولوية، وستكون الخبرة الصناعية في eBay ذات قيمة لتطوري المهني. وقد شعر أن التخلي عن بعض المقررات للتركيز على البحث، رغم أنه قد يبدو مغريًا، قد لا يكون أفضل قرار على المدى الطويل.

لذا، في سبتمبر 2021، وبعد حوالي 8 أشهر من العمل المكثف في المختبر، اتخذت القرار الصعب بالتراجع عن دوري كمساعد بحثي لأركز على إنهاء دراستي وعمالي في eBay. لقد كان أحد أصعب القرارات المهنية التي اضطررت لاتخاذها في ذلك الوقت.

حتى بعد مغادرتي الرسمية للمختبر، واصلت تقديم الدعم كلما احتاج أي شخص إلى مساعدة في الأنظمة التي بنيتها. كنت أُحدِّث الوثائق عند الحاجة، وأجيب عن الأسئلة المتعلقة بتصحيح الأخطاء، وأساعد في استكشاف المشكلات عن بُعد. إن الروابط التي أنشأتها والاستثمار الذي وضعته في نجاح المشروع لم تختفِ فقط لأنني لم أعد رسميًا جزءًا من الفريق.

التأملات والنظر إلى الوراء

الآن، في عام 2025، وبعد أربع سنوات، أجد نفسي أتأمل تلك الفترة بمشاعر معقدة. لقد أخذني مساري المهني عميقًا إلى تطوير الويب وهندسة الذكاء الاصطناعي/تعلم الآلة، وهي مجالات كانت مجزية للغاية ووفرت فرصًا هائلة للنمو والتأثير.

Top-down view of Tritons on table

ومع ذلك، هناك جزء مني يتساءل: “ماذا لو؟” كانت الروبوتات، وبصراحة ما تزال، شغفي الحقيقي. هناك شيء في العمل مع الأنظمة المادية، ورؤية شيفرتك تتحول إلى حركة وسلوك في العالم الحقيقي، لا يستطيع تطوير الويب وحتى عمل الذكاء الاصطناعي أن يطابقه تمامًا.

أحيانًا أتساءل عما كان يمكن أن يحدث لو أنني سلكت طريقًا مختلفًا. ماذا لو وجدت طريقة للبقاء في أبحاث الروبوتات؟ ماذا لو التحقت بمرحلة الدراسات العليا مباشرة بعد إنهاء درجة البكالوريوس؟ ماذا لو اخترت إعطاء الأولوية للعمل في المختبر على الخبرة الصناعية؟

لكنني أُدرك أيضًا أن لكل طريق تبعاته وتنازلاته. لقد كانت المهارات التي طورتها في تطوير الويب والذكاء الاصطناعي ذات قيمة هائلة. علّمتني الخبرة الصناعية هندسة البرمجيات على نطاق واسع، وتصميم تجربة المستخدم، والتحديات العملية في بناء المنتجات التي يستخدمها ملايين الأشخاص. لقد جعلتني هذه التجارب مهندسًا أفضل بشكل عام.

ولا يزال العمل الذي قمت به في مختبر HCR يؤثر في كيفية تعاملي مع المشكلات اليوم. يظهر التفكير المنهجي المطلوب لأنظمة التحكم PID في الطريقة التي أصمم بها حلقات التغذية الراجعة في أنظمة البرمجيات. وكانت مهارات التوثيق والحفاظ على المعرفة التي طورتها ذات قيمة لا تُقدَّر في كل دور شغلتُه منذ ذلك الحين. كما شكّلني خبرة الإرشاد والتدريس في كيفية عملي مع المطورين المبتدئين ومساهمتي في مشاركة المعرفة داخل الفريق.

والأهم من ذلك، علّمتني هذه التجربة أنني أزدهر عندما أعمل على مشكلات تقنية صعبة لها تأثير في العالم الحقيقي. سواء كان ذلك تحسين خوارزميات حركة الروبوتات أو بناء أنظمة ذكاء اصطناعي تساعد المستخدمين على تحقيق أهدافهم، فإن الرضا يأتي من حل المشكلات الصعبة التي تهم.

الأثر الدائم

عند النظر إلى تجربة مختبر HCR، أذهلني مقدار ما أنجزته في فترة زمنية قصيرة نسبيًا. لقد غيّرت الأنظمة التي بنيتها الطريقة التي كانت تعمل بها منصة Triton تغييرًا جذريًا، ولا يزال الكثير من تلك التحسينات مستخدمًا حتى اليوم. أصبحت مستودع الوثائق الذي أنشأته قاعدة المعرفة للمشروع بأكمله. كما أن علاقات الإرشاد التي أنشأتها كان لها أثر دائم على الأشخاص الذين عملت معهم.

لكن ربما كان الأهم من ذلك أن التجربة أظهرت لي ما أنا قادر عليه عندما أعمل على مشكلات أشعر بشغف حقيقي تجاهها. في تلك الأشهر الثمانية، أنا:

  • حسّنت نظام التحكم في حركة الروبوت الذي كان يحدّ من المنصة
  • بنيتُ نظام تنسيق متعدد الروبوتات من الصفر
  • دمجتُ قدرات الرؤية الحاسوبية ودمج المستشعرات
  • أنشأتُ نظامًا شاملًا للتوثيق وإدارة المعرفة
  • أرشدتُ عدة أشخاص وساعدتُ في نقل المعرفة
  • دعمتُ بحثًا على مستوى الدكتوراه في المركبات ذاتية القيادة

لكن الأمر لم يكن يتعلق بالإنجازات التقنية فحسب، رغم أنها كانت ذات معنى بالنسبة لي. كان الأمر يتعلق بتعلّم أنه، مع المثابرة والتفكير المنهجي، يمكنك تقديم مساهمات مفيدة حتى وأنت طالب جامعي.

المستقبل والروبوتات

على الرغم من أن مسيرتي المهنية أخذتني في اتجاهات أخرى، فإن شغفي بالروبوتات لم يتراجع. ما زلت أتابع التطورات في هذا المجال، وأنا متحمس للتقدم في تعلم الروبوتات والأنظمة الذاتية، وأعمل أحيانًا على مشاريع روبوتات شخصية في وقت فراغي.

من يدري ما الذي يحمله المستقبل؟ إن المهارات التي أطورها في الذكاء الاصطناعي وتعلم الآلة أصبحت ذات صلة متزايدة بالروبوتات. لقد علّمتني الخبرة العملية التي اكتسبتها في الصناعة كيف أبني أنظمة قوية وقابلة للتوسع. وربما يكون هناك مستقبل تجتمع فيه هذه الخيوط المختلفة من تجربتي بطرق غير متوقعة.

في الوقت الحالي، أنا ممتن للوقت الذي قضيته في مختبر HCR وللتجارب التي أتاحها لي. كانت تلك فترة تشكيلية أثرت في كلٍّ من مهاراتي التقنية وفهمي لأنواع العمل التي أجدها الأكثر إشباعًا. وعلى الرغم من أنني أفتقدها أحيانًا، فإنني أعلم أن الدروس التي تعلمتها والأساليب التي طورتها ما تزال تؤثر في كل ما أفعله.

لا تزال روبوتات Triton هناك، ولا تزال تخدم الباحثين، ولا تزال تمكّن أعمالًا مهمة. وهذا أمر رائع جدًا.