ความท้าทาย AgBot ปี 2019

โรงเรียนมัธยม East

ระหว่างที่ฉันเรียนอยู่ที่ โรงเรียนมัธยม East ในเมืองเดนเวอร์ รัฐโคโลราโด (2014-2018) ฉันมีส่วนร่วมอย่างมากในกิจกรรมนอกเวลาเรียน โดยกิจกรรมที่ส่งผลกระทบกับฉันมากที่สุดคือชมรมหุ่นยนต์ AngelBotics ฉันไม่ได้เข้าร่วมจนกระทั่งปีที่สอง เนื่องจากในช่วงแรกฉันมุ่งความสนใจไปที่ฟุตบอลเป็นหลัก ชมรมนี้เข้าร่วมการแข่งขัน FIRST Robotics Competition (FRC) เป็นหลัก ซึ่งเปิดโอกาสให้ฉันได้สำรวจวิศวกรรมเครื่องกลและวิศวกรรมไฟฟ้า รวมถึงการเขียนโปรแกรม ผ่าน AngelBotics ฉันได้เรียนรู้การใช้เครื่องมือ CAD เครื่องพิมพ์ 3 มิติ และอุปกรณ์วิศวกรรมอื่น ๆ ทำให้ได้สัมผัสแนวคิดด้าน STEM ที่โดยทั่วไปสงวนไว้สำหรับนักศึกษามหาวิทยาลัย ตอนแรกฉันใฝ่ฝันที่จะเป็นนักฟิสิกส์ควอนตัม แต่ประสบการณ์จากวิชาฟิสิกส์ระดับ AP และหุ่นยนต์ทำให้ฉันรู้ว่าฉันไม่ได้เก่งฟิสิกส์ขนาดนั้น และส่งผลให้ฉันหันออกจากเส้นทางวิศวกรรมเครื่องกล

แต่ฉันกลับค้นพบความถนัดของตัวเองในด้านการเขียนโปรแกรม ซึ่งเริ่มต้นจากการเขียนโค้ด Python สำหรับ Raspberry Pi เครื่องแรกของฉัน และได้รับการตอกย้ำผ่านโครงการ Java ในวิชา Computer Science ระดับ AP แม้ว่าฉันจะประสบปัญหากับการสอบ คุณครูของฉัน คุณ Nagel สนับสนุนให้ฉันมุ่งสู่งานพัฒนาซอฟต์แวร์ โดยเน้นย้ำว่าคุณค่าของโครงการสำคัญกว่าคะแนนสอบ สิ่งนี้ทำให้ฉันมุ่งเน้นไปที่วิทยาการคอมพิวเตอร์เพื่อเป็นสาขาที่เรียนในมหาวิทยาลัย โดยมีความฝันที่จะเป็นวิศวกรซอฟต์แวร์และในที่สุดก็เป็นผู้ก่อตั้งบริษัทในเส้นทางอาชีพของฉัน

แม้ว่าฉันจะไม่ได้มีส่วนร่วมกับ AngelBotics มากนักเนื่องจากภาระการเรียนที่หนักหน่วงและเส้นโค้งการเรียนรู้ที่สูง แต่ชมรมนี้ก็ยังจุดประกายความหลงใหลในหุ่นยนต์ตลอดชีวิตให้กับฉัน ดังนั้นเมื่อฉันเริ่มเรียนมหาวิทยาลัย ฉันจึงตั้งใจแน่วแน่ที่จะเข้าร่วมชมรมหุ่นยนต์ของมหาวิทยาลัย และสักวันหนึ่งจะสร้างบริษัทที่แก้ไขปัญหาในโลกจริงด้วยหุ่นยนต์

โรงเรียนเหมืองแร่

หลังจากสำเร็จการศึกษาจากโรงเรียนมัธยม East ฉันเริ่มเรียนปริญญาตรีสาขาวิทยาการคอมพิวเตอร์ที่ Colorado School of Mines (2018-2022) ในภาคการศึกษาแรกของฉัน ฉันลองเข้าไปดู ชมรมหุ่นยนต์ของ Mines และค้นพบกลุ่มหุ่นยนต์แห่งใหม่ที่ชื่อว่า 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 ซึ่งเชื่อมต่อกับ Hokuyo URG 04LX UG01 Lidar เรามี Arduino หลายตัวสำหรับรับข้อมูลจากเซนเซอร์ เช่น เครื่องวัดระยะอัลตราโซนิก โค้ดของเราจัดการด้านการรับรู้ การนำทาง การควบคุม และการพ่น คุณสามารถดูคลังโค้ดได้ที่นี่: คลัง 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
  • มอเตอร์ DC, เอ็นโคเดอร์, ตัวควบคุมมอเตอร์, แบตเตอรี่ และอื่น ๆ

เราไม่ได้มีทีมขนาดใหญ่มาก แต่มีชื่ออยู่สองสามชื่อที่โดดเด่น:

Tyler เป็นหัวหน้าและผู้ก่อตั้งชมรม ฉันเคารพเขามากในตอนนั้น และยังคงเคารพเขาจนถึงทุกวันนี้ Zachary เป็นหัวหน้าฝ่ายพัฒนาซอฟต์แวร์ของชมรม และช่วยสอนฉันเกี่ยวกับการพัฒนาซอฟต์แวร์และ ROS มากมาย ซึ่งเป็นสิ่งที่ฉันรู้สึกขอบคุณมาจนถึงทุกวันนี้

นอกจากนี้ยังมีสมาชิกคนอื่น ๆ ด้วย เช่น Kevin Barnard และ Amit Rotem แต่น่าเสียดายที่ฉันจำชื่อและข้อมูลติดต่อของสมาชิกดั้งเดิมทั้งหมดไม่ได้ เพราะชมรมยุติไปนานกว่า 5 ปีแล้ว

การพัฒนาหุ่นยนต์ส่วนใหญ่เกิดขึ้นในช่วงสุดสัปดาห์และลากยาวไปจนดึกดื่นหลังจากชั้นเรียนส่วนใหญ่ของเราจบลง การเรียนปริญญาวิศวกรรมศาสตร์ไปพร้อมกับทำ AgBot นั้นหนักหนาสาหัสมาก แต่เราก็ฝ่าฟันมันมาได้

การเดินทางและความโกลาหล

ส่วนหนึ่งของประสบการณ์ทั้งหมดนี้ที่ฉันจะไม่มีวันลืมคือการเดินทาง การแข่งขันจัดขึ้นที่เมืองเวสต์ลาฟาแยตต์ รัฐอินเดียนา ใกล้กับวิทยาเขตของ มหาวิทยาลัย Purdue และการแข่งขันทั้งหมดเกิดขึ้นทันทีหลังจากสัปดาห์สอบปลายภาคที่ Mines สิ้นสุดลง ดังนั้นเราจึงไม่มีเวลาได้ฟื้นตัวจากสัปดาห์สุดหฤโหดนั้น

เราขับรถจากเมืองโกลเดน รัฐโคโลราโด ไปยังรัฐอินเดียนาโดยใช้รถกระบะของ Tyler เพื่อบรรทุกหุ่นยนต์และเครื่องมือทั้งหมดของเราไปด้วย แต่เรื่องตลกคือ เราเริ่มขับรถจริง ๆ เพียงหนึ่งวันก่อนสัปดาห์การแข่งขัน เราเก็บทุกอย่างที่มีขึ้นมา ทั้งหุ่นยนต์ เครื่องมือ แบตเตอรี่ คอมพิวเตอร์ ทุกอย่าง แล้วขับรถจากเมืองโกลเดน รัฐโคโลราโด ไปยังเมืองเวสต์ลาฟาแยตต์ รัฐอินเดียนา บนกระดาษแล้ว นั่นคือการเดินทาง 18 ชั่วโมง แต่เราใช้เวลาเกือบ 20 หรือ 22 ชั่วโมงเมื่อรวมการแวะเติมน้ำมันและเข้าห้องน้ำ

Tyler ขับรถตลอดเวลา โดยดำรงชีวิตด้วยเครื่องดื่ม Coffee Monster เพื่อนร่วมทีมอีกคนหนึ่ง ขอโทษด้วย ฉันลืมชื่อเธอไปแล้ว แต่เธออยู่ในรูปภาพ เธอเข้ามารับช่วงขับรถแทนเขาเป็นบางครั้ง ระหว่างทาง ฝนเริ่มตกลงมาอย่างหนัก เราต้องจอดรถข้างสถานีบริการน้ำมันร้างแห่งหนึ่งแบบสุ่ม ๆ และหยิบผ้าใบคลุมมาเพื่อปกป้องหุ่นยนต์ มันทั้งขัดสน ทั้งโกลาหล และมันก็คือหุ่นยนต์ของเด็กมหาวิทยาลัย สุดท้ายแล้วเราก็เดินทางไปถึงได้อย่างไรก็ไม่รู้

เมื่อเราไปถึง เรากางเต็นท์ของเราบนสนามและจัดเตรียมเครื่องมือทั้งหมดของเรา ฉันมุ่งเน้นไปที่การเขียนโค้ดให้เสร็จและทำให้มันทำงานได้ ตลอดการแข่งขันส่วนใหญ่ เรามุ่งเน้นไปที่การแก้ไขข้อบกพร่องของหุ่นยนต์และทำให้มันทำงานได้ดี รวมถึงแวะดูการสร้างหุ่นยนต์สุดเจ๋งของทีมอื่น ๆ

แล้วเราชนะไหม?

ไม่

เมื่อมองย้อนกลับไป พวกเราก็เป็นเพียงเด็กกลุ่มหนึ่งที่พยายามสร้างบางสิ่งซึ่งเกินระดับประสบการณ์ของเราไปมาก ทีมอื่น ๆ อยู่ในระดับที่แตกต่างออกไปโดยสิ้นเชิง บางทีมมาจากสตาร์ตอัป บางทีมมาจากห้องปฏิบัติการวิจัย บางทีมได้รับการสนับสนุนทางวิชาการอย่างเต็มรูปแบบ ส่วนเราเป็นกลุ่มนักศึกษาปริญญาตรีขนาดเล็กที่อดหลับอดนอนทั้งคืน โดยหวังว่า Python จะเปลี่ยนข้อมูล Lidar ให้กลายเป็นสิ่งที่มีประโยชน์ได้

หุ่นยนต์ของเรามีข้อบกพร่อง มันดูขัด ๆ และพูดตามตรง มันแทบจะทำงานไม่ได้เมื่อเราไปถึงการแข่งขัน สมาชิกหลายคนในทีมเริ่มถอนตัวเมื่อพวกเขาตระหนักว่าเราอาจทำไม่เสร็จทันเวลา บางคนไม่แม้แต่จะมาปรากฏตัว การสอบปลายภาคจบลงแล้ว หุ่นยนต์ยังไม่พร้อม และกำลังใจของทุกคนก็ต่ำมาก

แต่พวกเราบางคนก็ยังยืนหยัดต่อไป

ฉันไม่ยอมแพ้… Tyler ไม่ยอมแพ้… และผู้คนในรูปภาพก็ไม่ยอมแพ้เช่นกัน!

แม้ว่าเราจะไม่ชนะ และไม่มีแม้แต่หุ่นยนต์ที่ทำงานได้อย่างสมบูรณ์ แต่ฉันก็จะไม่ยอมแลกประสบการณ์นั้นกับสิ่งใด ฉันได้เรียนรู้เกี่ยวกับ ROS การแก้ไขข้อบกพร่องของฮาร์ดแวร์ การสร้างระบบภายใต้แรงกดดัน และฉันได้เรียนรู้เกี่ยวกับความภักดี ฉันตระหนักว่าการทำสิ่งต่าง ๆ ให้สำเร็จจนถึงที่สุดนั้นสำคัญเพียงใด

การไตร่ตรอง ณ ปี 2025

หลังจากฤดูกาลปี 2019 AgBot ก็ปิดตัวลง สาเหตุหลักมาจาก COVID เริ่มส่งผลกระทบเกือบ 1 ปีต่อมา ทำให้ชมรมทั้งหมดที่ Mines ต้องปิดตัวลงเป็นเวลา 1-2 ปี และเมื่อโลกเริ่มกลับคืนสู่ “ภาวะปกติ” ฉันก็สำเร็จการศึกษาแล้ว

ขณะนี้เป็นปี 2025 และเมื่อมองย้อนกลับไปที่ AgBot ฉันมองเห็นว่ามันคือจุดเริ่มต้นของทุกสิ่งสำหรับฉัน มันมอบประสบการณ์จริงครั้งแรกด้านหุ่นยนต์ให้แก่ฉัน และสอนให้ฉันรู้วิธีทำงานร่วมกับทีมด้านเทคนิค มันทำให้ฉันเริ่มต้นเส้นทางที่นำพาฉันไปสู่โอกาสอันยอดเยี่ยมมากมาย

ตั้งแต่นั้นมา ฉันทำงานเป็นวิศวกรแบ็กเอนด์ที่ eBay โดยนำบริการที่รับข้อมูลเมตริกหลายล้านรายการจากศูนย์ข้อมูลต่าง ๆ ไปใช้งาน ก่อตั้งสตาร์ทอัปแห่งแรกของฉัน ซึ่งมุ่งเน้นการสร้างระบบทดสอบเจาะระบบความปลอดภัยทางไซเบอร์อัตโนมัติด้วย AI เปิดตัว Notify Cyber ซึ่งมีผู้เข้าชมหลายหมื่นคน ฉันเขียนซอฟต์แวร์สำหรับ Docker, Kubernetes, Postgres และโครงสร้างพื้นฐาน AI ขั้นสูง

แต่ AgBot ยังคงโดดเด่นในฐานะหนึ่งในประสบการณ์ที่ดีที่สุดในชีวิตของฉัน มันเต็มไปด้วยความโกลาหล ความเครียด และบางครั้งก็รู้สึกเหมือนเป็นไปไม่ได้ แต่กลับสอนฉันมากกว่าชั้นเรียนหรือบทแนะนำใด ๆ ที่เคยมีมา ฉันได้เรียนรู้ว่า แม้คุณจะไม่มีแผนการที่สมบูรณ์แบบ ไม่มีเงินทุนเพียงพอ หรือไม่มีฮาร์ดแวร์ที่ดีที่สุด คุณก็ยังสามารถสร้างบางสิ่งขึ้นมา เรียนรู้ได้มากมาย และพบกับผู้คนที่น่าทึ่งระหว่างทาง

ถึงทุกคนจากทีม AgBot ปี 2019 ขอบคุณ ถึงการเดินทางด้วยรถยนต์ในปี 2019 ผ้าใบที่เราเก็บมาจากปั๊มน้ำมันที่ปิดให้บริการ และค่ำคืนที่ไม่ได้นอน ขอบคุณ พวกคุณมอบความมุ่งมั่นอดทนให้แก่ฉันในการเดินหน้าทำโครงการขนาดใหญ่ด้วยความมั่นใจ ไม่ว่าโครงการเหล่านั้นจะดูเป็นไปไม่ได้เพียงใดก็ตาม

แหล่งข้อมูลและลิงก์

แกลเลอรีภาพถ่าย

ทีม AgBot ของ Mines, พวกเรา

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

วิดีโอ/GIF

สนามแข่งขัน

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