تحدي AgBot لعام 2019

مدرسة إيست الثانوية

خلال فترة دراستي في مدرسة إيست الثانوية في دنفر، كولورادو (2014-2018)، كنت منخرطًا بشكل كبير في الأنشطة بعد المدرسة، وكان الأكثر تأثيرًا بينها نادي الروبوتات AngelBotics. ولم أنضم إليه إلا في سنتي الثانية، بسبب تركيزي الأولي على كرة القدم. كان النادي يشارك بشكل أساسي في مسابقة FIRST للروبوتات (FRC)، مما أتاح لي استكشاف الهندسة الميكانيكية والكهربائية، وكذلك البرمجة. ومن خلال AngelBotics، تعلمت استخدام أدوات CAD، والطابعات ثلاثية الأبعاد، وغيرها من معدات الهندسة، واكتسبت تعرضًا لمفاهيم STEM التي تُحجز عادةً لطلاب الجامعات. كنت في البداية أطمح لأن أصبح فيزيائيًا كميًا، لكن خبرتي في فيزياء AP والروبوتات أظهرت لي أنني لست جيدًا جدًا في الفيزياء، ودفعتني بالتالي بعيدًا عن مسار الهندسة الميكانيكية.

بدلًا من ذلك، وجدت مجالي في البرمجة، التي بدأت بكتابة شيفرة Python لأول Raspberry Pi لي، ثم ترسخت من خلال مشاريع Java في مادة AP Computer Science. وعلى الرغم من معاناتي مع الامتحانات، شجعني معلمي، السيد Nagel، على متابعة تطوير البرمجيات، مؤكدًا على قيمة المشاريع أكثر من درجات الاختبارات. وقد دفعني ذلك إلى التركيز على علوم الحاسوب كتخصصي في الجامعة مع حلم أن أصبح مهندس برمجيات، ثم لاحقًا مؤسسًا في مسيرتي المهنية.

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

مدرسة المناجم

بعد تخرجي من مدرسة إيست الثانوية، بدأت درجة البكالوريوس في علوم الحاسوب في كلية كولورادو للمناجم (2018-2022). خلال أول فصل دراسي لي على الإطلاق، اطلعت على أندية روبوتات المناجم واكتشفت مجموعة روبوتات جديدة تمامًا تُدعى AgBot.

كان AgBot نادي روبوتات جديدًا أُسس بهدف بناء روبوت للمنافسة في مسابقة agBots Weed and Feed لعام 2019. كانت لهذه المسابقة مهمتان رئيسيتان:

  1. تحديد الآفات والأعشاب الضارة والقضاء عليها
  2. إنشاء أساليب حصاد جديدة من خلال الروبوتات

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

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

التطوير

كان كوني جزءًا من فريق AgBot واحدًا من أكثر تجاربي الجامعية التي لا تُنسى. وكان أيضًا من أصعب الأمور التي عملت عليها حتى تلك اللحظة. كان هذا المشروع أول مرة أتوغل فيها فعلًا في Python وUbuntu وROS. في FRC، كان كل شيء بلغة Java، لذا كانت هذه كلها أرضًا جديدة بالنسبة لي. كنت قد استخدمت Python وUbuntu في السابق، لكنني لم أكن قد تعاملت مع ROS من قبل. كان تعلم كيفية عمل ROS معركة شاقة. لم أكن حتى أعلم ما هي بيئة Python في ذلك الوقت.

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

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

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

الفريق ومجموعة التقنيات

كنا نشغّل Ubuntu 16.04 مع ROS Kinetic وPython 2.7 على Nvidia Jetson TX2 الذي كان يتصل بـ Lidar من نوع Hokuyo URG 04LX UG01. وكان لدينا Arduino(s) لمدخلات الحساسات مثل محددات المدى فوق الصوتية. كانت شيفرتنا تتعامل مع الإدراك، والملاحة، والتحكم، والرش. يمكنك رؤية المستودع هنا: مستودع GitHub. ويمكن العثور على الشيفرة المحددة التي كتبتها في end_detector.py. إليك قائمة بمعظم المكونات التي شكّلت الروبوت:

  • Ubuntu 16.04 Xenial
  • ROS Kinetic Kame
  • Python 2.7
  • Nvidia Jetson TX2
  • Hokuyo URG-04LX-UG01 Lidar
  • Arduino Uno & Mega
  • محركات تيار مستمر، ومشفِّرات، ووحدات تحكم بالمحركات، وبطارية، إلخ.

لم يكن لدينا فريق كبير، لكن هناك بعض الأسماء البارزة:

كان Tyler قائد النادي ومؤسسه. كنت أكن له احترامًا كبيرًا آنذاك وما زلت أفعل ذلك حتى اليوم. وكان Zachary قائد تطوير البرمجيات للنادي وساعدني كثيرًا في تعليمي عن تطوير البرمجيات وROS، وهو أمر أنا ممتن له عليه حتى اليوم.

كان هناك أعضاء آخرون أيضًا، مثل Kevin Barnard وAmit Rotem. لكن للأسف لا أتذكر أسماء ومعلومات التواصل الخاصة بجميع الأعضاء الأصليين، لأن الأمر مضى عليه أكثر من 5 سنوات منذ أن انتهى النادي.

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

الرحلة والفوضى

أحد الأمور في هذه التجربة كلها التي لن أنساها أبدًا كان السفر نفسه. أُقيمت المسابقة في West Lafayette Indiana، بالقرب من حرم جامعة Purdue. وأُقيمت المسابقة كلها مباشرة بعد انتهاء أسبوع الاختبارات النهائية في Mines، لذلك لم يكن لدينا وقت للتعافي من ذلك الأسبوع الجحيمي.

قدنا السيارة من Golden Colorado إلى Indiana باستخدام شاحنة Tyler أيضًا لنقل الروبوت وكل أدواتنا. لكن المضحك أننا بدأنا القيادة حرفيًا قبل يوم واحد من أسبوع المسابقة. حزمنا كل ما لدينا، الروبوت، والأدوات، والبطاريات، وأجهزة الكمبيوتر، كل شيء، وقُدنا من Golden Colorado إلى West Lafayette Indiana. هذه مسافة قيادة مدتها 18 ساعة على الورق. لكنها استغرقت منا أقرب إلى 20 أو 22 ساعة مع التوقف للوقود ولحمامات الراحة.

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

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

إذًا، هل فزنا؟

لا

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

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

لكن بعضنا صمد حتى النهاية

أنا لم أستسلم… Tyler لم يستسلم… والناس في الصورة لم يستسلموا أيضًا!

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

تأمل، حتى عام 2025

بعد موسم 2019، أُغلق AgBot نهائيًا. وكان السبب الرئيسي في ذلك هو بدء جائحة كوفيد بعد نحو سنة تقريبًا، مما أدى إلى إغلاق جميع الأندية في Mines لمدة سنة إلى سنتين، وبحلول الوقت الذي بدأ فيه العالم يعود إلى “الطبيعية” كنت قد تخرجت.

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

منذ ذلك الحين، عملت كمهندس خلفية في eBay، ونشرت خدمات تستوعب ملايين المقاييس عبر مراكز البيانات. وأسست أول شركة ناشئة لي التي ركزت على بناء اختبار اختراق سيبراني مؤتمت بالذكاء الاصطناعي. وأطلقت Notify Cyber، التي وصلت إلى عشرات الآلاف من الزوار. وكتبت برمجيات لـ Docker وKubernetes وPostgres وبنية تحتية متقدمة للذكاء الاصطناعي.

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

إلى كل من كان في فريق AgBot لعام 2019، شكراً لكم. إلى رحلة الطريق تلك في 2019، وإلى الشِّرْشَف البلاستيكي الذي التقطناه من محطة وقود مغلقة، وإلى الليالي بلا نوم، شكراً لكم. لقد منحتموني الصلابة لملاحقة المشاريع الكبيرة بثقة، مهما بدت مستحيلة.

الموارد والروابط

معرض الصور

فريق AgBot الخاص بمناجمنا، نحن

GetStoredImage-1.jpeg GetStoredImage.jpeg IMG_9005.jpeg IMG_9006.jpeg
IMG_9663.jpeg IMG_9684.jpeg IMG_9685.jpeg IMG_9686.jpeg
IMG_9687.jpeg IMG_9688.jpeg IMG_9691.jpeg

روبوت AgBot الخاص بنا

IMG_8854.jpeg IMG_8855.jpeg IMG_8856.jpeg IMG_8867.jpeg
IMG_8976.jpeg IMG_8977.jpeg IMG_9007.jpeg IMG_9008.jpeg
IMG_9037.jpeg IMG_9038.jpeg IMG_9039.jpeg IMG_9040.jpeg
IMG_9695.jpeg r1.jpeg r3.jpeg r5.jpeg
r6.jpeg r7.jpeg r9.jpeg

مقاطع فيديو/صور متحركة

حقول المسابقة

IMG_8848.jpeg IMG_8849.jpeg IMG_8850.jpeg IMG_8851.jpeg
IMG_9042.jpeg IMG_9666.jpeg IMG_9668.jpg land.jpeg

فرق أخرى في المسابقات

IMG_8827.jpeg IMG_8828.jpeg IMG_8857.jpeg IMG_8858.jpeg
IMG_8880.jpeg IMG_9651.jpeg IMG_9669.jpeg IMG_9671.jpeg
IMG_9672.jpeg IMG_9673.jpeg IMG_9674.jpeg IMG_9675.jpeg
IMG_9677.jpeg IMG_9678.jpeg IMG_9679.jpeg IMG_9696.jpeg
IMG_9697.jpeg gpage_2019.jpeg robot.jpeg

FRC 1339 (2014-2017)

IMG_9629.jpeg IMG_9630.jpeg

صور عشوائية أخرى

IMG_8825.jpeg IMG_8826.jpeg IMG_8852.jpeg IMG_8853.jpeg
IMG_8980.jpeg IMG_8981.jpeg IMG_9002.jpeg IMG_9003.jpeg
IMG_9043.jpeg mines_logo.png