บทวิจัยด้านหุ่นยนต์ของฉัน
Table of Contents
บทความนี้เล่าถึงเส้นทางด้านหุ่นยนต์ของฉัน โดยเริ่มตั้งแต่การค้นพบความหลงใหลในหุ่นยนต์ผ่าน FRC ระหว่างเรียน มัธยมปลาย ในปี 2015 ไปจนถึงช่วงเวลาที่ฉันทำงานเป็นผู้ช่วยวิจัยที่ ห้องปฏิบัติการหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (HCR) ของ Colorado School of Mines ตั้งแต่ กุมภาพันธ์ 2021 ถึงกันยายน 2021 โปรดทราบว่า ตั้งแต่ ปลายปี 2022 เป็นต้นมา ห้องปฏิบัติการ HCR ได้ย้ายจาก Colorado School of Mines ไปยัง University of Massachusetts Amherst พร้อมกับเว็บไซต์ที่ย้ายจาก hcr.mines.edu ไปยัง hcr.cs.umass.edu
ภูมิหลัง
ฉันเริ่มศึกษาในระดับปริญญาตรีที่ Colorado School of Mines ในภาคการศึกษาฤดูใบไม้ร่วงปี 2018 สาขาวิชาของฉันคือวิทยาการคอมพิวเตอร์ โดยมุ่งเน้นด้านหุ่นยนต์และระบบอัจฉริยะ และฉันสำเร็จการศึกษาในภาคการศึกษาฤดูใบไม้ผลิปี 2022
ฉันโชคดีที่ค้นพบสิ่งที่หลงใหลได้ตั้งแต่อายุยังน้อย ในช่วงมัธยมปลาย ฉันใช้เวลาพอสมควรเพื่อค้นหาว่าตัวเองชอบอะไรและสามารถทำอะไรได้ดี หลังจากลองผิดลองถูกอยู่พักหนึ่ง ฉันก็ค้นพบว่าความหลงใหลของฉันคือวิทยาการคอมพิวเตอร์ แต่ในช่วงเวลาเดียวกันนั้นเอง ฉันยังค้นพบว่าตัวเองมีความรักอย่างท่วมท้นต่อการสร้างสิ่งต่าง ๆ ด้วยโค้ด
ที่ Mines ฉันได้รับโอกาสให้ทำงานที่ห้องปฏิบัติการหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (HCR) ของ Mines ภายใต้การดูแลของ ดร. Hao Zhang ฉันพบกับ ดร. Zhang ครั้งแรกในภาคการศึกษาฤดูใบไม้ผลิปี 2020 ผ่านชั้นเรียนของเขาในชื่อ “หุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง” (CSCI473) และหลังจากความวุ่นวายของโควิดและงานในชั้นเรียน ฉันก็ได้เริ่มทำงานในห้องปฏิบัติการของเขาในช่วงต้นภาคการศึกษาฤดูใบไม้ผลิปี 2021
ชั้นเรียนหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (CSCI473)
วิชาหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (CSCI473) ของ Mines เป็นหนึ่งในไม่กี่วิชาจากประสบการณ์ในมหาวิทยาลัยของฉันที่ส่งผลกระทบต่อฉันอย่างลึกซึ้ง วิชานี้สอนโดย ดร. Hao Zhang คะแนนทั้งหมดของเราในวิชานี้มาจากโครงงานเพียงสามโครงงาน โดยแต่ละโครงงานนำเสนอปัญหาที่ท้าทายและแนะนำแนวคิดหลักของหุ่นยนต์ โครงงานเหล่านี้ประกอบด้วย:
- การเรียนรู้ระบบปฏิบัติการหุ่นยนต์ (ROS)
- การเรียนรู้แบบเสริมกำลังสำหรับการให้หุ่นยนต์เดินตามกำแพง
- การทำความเข้าใจพฤติกรรมมนุษย์ของหุ่นยนต์โดยใช้การแทนค่าแบบโครงกระดูก
การเรียนรู้ระบบปฏิบัติการหุ่นยนต์ (ROS)
นี่เป็นโครงงานแรกที่เราได้รับมอบหมาย โครงงานประกอบด้วยสามภารกิจ:
- ตั้งค่าสภาพแวดล้อมการพัฒนา
- ทำความเข้าใจตัวจำลอง Gazebo
- เขียน ROS “สวัสดีชาวโลก”
สำหรับภารกิจที่ 1 และ 2 เราเพียงต้องตั้งค่าสภาพแวดล้อมการพัฒนาของเราและทำตามบทแนะนำเบื้องต้นเกี่ยวกับ Gazebo ซึ่งรวมถึง:
- ตั้งค่า ROS Melodic ซึ่งฉันทำบนแล็ปท็อป HP ปี 2011 ของฉัน และมันก็เพียงพอต่อการใช้งาน
- ติดตั้งและกำหนดค่า ROS และ Gazebo
- ทำตาม บทแนะนำของ gazebosim และ บทแนะนำของ e-manual
ในทางกลับกัน ภารกิจที่ 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) และใช้เครื่องเวกเตอร์ค้ำจุน (SVM) (สิ่งที่ต้องส่งมอบ 2) เพื่อจำแนกพฤติกรรมมนุษย์โดยใช้ชุดข้อมูลกิจกรรมสาธารณะที่เก็บรวบรวมจากเซนเซอร์ Kinect V1 นอกจากนี้ นักศึกษาจะต้องเขียนรายงานตามรูปแบบของการประชุมด้านหุ่นยนต์มาตรฐานของ IEEE โดยใช้ LATEX ในสิ่งที่ต้องส่งมอบ 3
โครงงานนี้ท้าทาย แต่ก็ไม่ได้ยากเท่ากับโครงงานที่สอง เป้าหมายหลักคือการใช้ข้อมูลจากเซนเซอร์ Kinect V1 จาก ชุดข้อมูล MSR Daily Activity 3D และ เครื่องเวกเตอร์ค้ำจุน เพื่อจำแนกการกระทำ/พฤติกรรมบางอย่างของมนุษย์ สำหรับคำอธิบายโครงงานฉบับเต็ม โปรดดู csci473-p3.pdf หรือคุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับโครงงานนี้และวิธีแก้ปัญหาของฉันได้จากบทความบล็อก ทำนายการกระทำของมนุษย์โดยใช้ LIBSVM
บทสรุปของ CSCI473
CSCI473 เป็นหนึ่งในวิชาที่ดีที่สุด หรืออาจเป็นวิชาที่ดีที่สุดที่ฉันเคยเรียนในระดับปริญญาตรีที่ Mines โครงงานทั้งหมดนี้สอนฉันมากมาย และเปิดโอกาสให้ฉันมีแค็ตตาล็อกโครงงานเจ๋ง ๆ ไว้ทบทวนและอ้างอิงในประวัติย่อของฉัน นอกจากนี้ยังเป็นวิชาแรกที่ทำให้ฉันรู้สึกว่าตัวเองได้อยู่ในสิ่งที่ถนัด เพราะฉันไม่เคยทำข้อสอบได้ดี แต่กลับทำโครงงานได้อย่างยอดเยี่ยม และจากวิชานี้เองที่ฉันได้พบกับ ดร. Hao Zhang ซึ่งในที่สุดก็ช่วยให้ฉันได้ตำแหน่งผู้ช่วยวิจัยที่ห้องปฏิบัติการหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (HCR) ของ Mines
ภาคสนามด้านวิทยาการคอมพิวเตอร์ (ฤดูร้อนปี 2020)
ในช่วงฤดูร้อนปี 2020 ระหว่างที่กำลังเรียน CSCI473 จบและก่อนเข้าร่วม HCR Lab ฉันเรียน CSCI370 หรือ “วิศวกรรมซอฟต์แวร์ขั้นสูง” ซึ่งเป็นส่วนหนึ่งของหลักสูตรปริญญาตรีด้านวิทยาการคอมพิวเตอร์ที่ Colorado School of Mines CSCI370 เป็นวิชาที่ให้นักศึกษาออกแบบ นำไปใช้ และจัดทำเอกสารโซลูชันที่เกี่ยวข้องกับซอฟต์แวร์ให้แก่บริษัท นักศึกษาสามารถนำความรู้จากการเรียนมาใช้กับปัญหาด้านวิทยาการคอมพิวเตอร์ในโลกจริงได้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิชานี้ได้ ที่นี่
ในวิชานี้ คุณจะได้ตัดสินใจว่าจะทำงานกับโครงงาน/บริษัทใด วิชานี้จัดเตรียมไฟล์ PDF ที่ให้รายละเอียดเกี่ยวกับแต่ละโครงงานและบริษัทไว้ ท้ายที่สุด ฉันตัดสินใจทำงานกับโครงงานที่บริษัทชื่อ Lunar Outpost ประกาศไว้ ซึ่งมีชื่อว่า “การตรวจจับการลื่นไถลของล้อแบบเรียลไทม์และการแก้ไขข้อผิดพลาดเพื่อการนำทางบนดวงจันทร์ที่มีประสิทธิภาพยิ่งขึ้น” เนื่องจากชื่อยาว เรามาตั้งชื่อเรียกโครงงานนี้ว่า “การตรวจจับการลื่นไถลของล้อ”
ปัญหา
Lunar Outpost เป็นบริษัทสตาร์ทอัปที่พยายามสร้างรถสำรวจดวงจันทร์อัตโนมัติ บนดวงจันทร์มีฝุ่นดวงจันทร์จำนวนมาก ซึ่งเป็นที่รู้กันว่าทำให้ล้อเกิดการลื่นไถลมาก ปัญหานี้ไม่ใช่สิ่งที่พึงประสงค์ เพราะการลื่นไถลของล้ออาจทำให้ระบบอัตโนมัติสูญเสียการติดตามตำแหน่งจริงของตนเองบนโลก ปัญหานี้แก้ได้ด้วยการใช้ข้อมูล GPS เพื่อแก้ไขความคลาดเคลื่อนที่เกิดจากการลื่นไถลของล้อ แต่ปัญหาของ GPS คือมันทำงานได้ด้วยการมีดาวเทียมนำทาง มากกว่า 30 ดวง โคจรรอบโลกอยู่ตลอดเวลาและส่งสัญญาณเฉพาะที่ช่วยให้คอมพิวเตอร์คำนวณตำแหน่งของตนเองได้ แต่บนดวงจันทร์ ปัจจุบันยังไม่มีสิ่งที่เรียกว่า GPS ดังนั้นจึงต้องใช้วิธีอื่นนอกเหนือจาก GPS เพื่อตรวจจับการลื่นไถลของล้อ สามารถดูรายงานปัญหาของโครงงานโดยละเอียดเพิ่มเติมได้ ที่นี่
ทีมงาน
โครงงานนี้ไม่ใช่โครงงานง่าย ๆ ดังนั้นจึงต้องทำเป็นทีม ทีมประกอบด้วยเพื่อนนักศึกษาจาก Colorado School of Mines ห้าคน:
โครงงานนี้ไม่ใช่โครงงานง่าย ๆ ดังนั้นจึงต้องทำเป็นทีม ทีมนี้ประกอบด้วย Mehmet Yilmaz (ฉัน), Kane Bruce, Braedon O’Callaghan, Liam Williams และ Kevin Grant
โครงงานนี้กำหนดให้เราต้องมีความรู้เกี่ยวกับ ROS, C++, Python, Linux, Raspberry Pi และ Arduino พวกเราส่วนใหญ่มีประสบการณ์ในเทคโนโลยีเหล่านี้อย่างน้อยหนึ่งอย่าง แต่ฉันเป็นคนเดียวที่มีประสบการณ์ด้าน ROS เนื่องจากฉันเคยใช้ ROS ในวิชาหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง (CSCI473) ในภาคการศึกษาฤดูใบไม้ผลิปี 2020 ด้วยเหตุนี้ ตั้งแต่ช่วงแรก ๆ ฉันจึงช่วยให้ทุกคนมีความรู้ความเข้าใจเกี่ยวกับ ROS และวิธีพัฒนาซอฟต์แวร์สำหรับ ROS
ความท้าทาย
ในโครงการนี้มีความท้าทายมากมาย แต่ความท้าทายที่ใหญ่ที่สุดที่เราเผชิญคือการไม่สามารถเข้าถึงหุ่นยนต์จริงเพื่อใช้ในการทดสอบได้ สาเหตุเกิดจาก COVID ที่ทำให้ทุกอย่างต้องดำเนินการทางไกล และทำให้เราไม่สามารถทำงานในห้องปฏิบัติการ/อาคารของ Lunar Outpost ได้ ด้วยเหตุนี้ เราจึงต้องใช้การจำลอง
นอกจากนี้ เรายังศึกษางานวิจัยทางวิชาการจาก ห้องปฏิบัติการการนำทาง WVU เพื่อทำความเข้าใจว่าปัญหาการลื่นไถลของล้อจะสามารถแก้ไขได้อย่างไรสำหรับกรณีการใช้งานของ Lunar Outpost ซึ่งสำหรับเราในฐานะนักศึกษาระดับปริญญาตรีชั้นปีที่สองและสามนั้น มีความยากมากกว่าที่เราคาดไว้
ความท้าทายอีกประการหนึ่งที่เราเผชิญคือระยะเวลาที่เรามีในการทำงานในโครงการนี้ CSCI370 เป็นวิชาที่เรียนเป็นเวลาหนึ่งเดือน แต่ตัวปัญหาเองเป็นปัญหาขนาดใหญ่ที่หลายบริษัทและนักวิชาการพยายามแก้ไข/ปรับปรุงให้สมบูรณ์แบบมานานหลายทศวรรษ ดังนั้นเวลาหนึ่งเดือนจึงไม่เพียงพออย่างมากสำหรับการแก้ไขปัญหานี้ แต่แม้จะมีความท้าทายทั้งหมดเหล่านี้ เราก็ยังเดินหน้าต่อและทำให้แน่ใจว่าสามารถส่งมอบผลงานได้
บทสรุป
หลังจากทำงานวิจัยและพัฒนาทั้งหมด เราพบว่าแทบเป็นไปไม่ได้เลยที่จะจำลองฟิสิกส์ของดวงจันทร์ที่เหมาะสมในรูปแบบดิจิทัล ดังนั้นการทดลองอัลกอริทึมนี้ในสภาพแวดล้อมจำลองจึงไม่มีประโยชน์จริง ๆ และจะไม่ก่อให้เกิดงานวิจัยที่มีความหมายเกี่ยวกับการตรวจจับการลื่นไถลของล้อในอวกาศและบนดวงจันทร์ เราสรุปว่าการจัดเตรียมสภาพแวดล้อมการทดสอบที่เหมาะสมโดยใช้สิ่งต่าง ๆ เช่น ทรายและฮาร์ดแวร์จริงอย่างหุ่นยนต์ Husky นั้นมีความสำคัญมากกว่าสำหรับงานวิจัยประเภทนี้ เราได้ปรับปรุงโค้ดตรวจจับการลื่นไถลของล้อให้ทำงานเป็นโหนด ROS และโค้ดดังกล่าวทำงานได้อย่างเหมาะสม อีกทั้งยังสามารถนำเข้าไปใช้กับฮาร์ดแวร์จริงเพื่อทดสอบได้อย่างง่ายดาย โครงการนี้เปิดโอกาสให้ฉันรับบทบาทผู้นำ ให้ความรู้แก่เพื่อนร่วมงานเกี่ยวกับการพัฒนา ROS และได้รับประสบการณ์กับ Python, ROS และ Gazebo ขณะรับมือกับปัญหาซับซ้อนที่ฉันไม่เคยพบมาก่อน ที่สำคัญที่สุด ประสบการณ์นี้ยิ่งทำให้ความหลงใหลในวิทยาการหุ่นยนต์ของฉันมั่นคงยิ่งขึ้น และตอกย้ำความต้องการที่จะทำงานวิจัยในสาขานี้ของฉัน พร้อมทั้งวางรากฐานให้กับสิ่งที่จะเกิดขึ้นต่อไปในเส้นทางด้านวิทยาการหุ่นยนต์ของฉัน
การเริ่มต้นที่ห้องปฏิบัติการ HCR
หลังจากเรียน CSCI473 จบ การเข้าร่วมภาคสนามด้านวิทยาการคอมพิวเตอร์ในช่วงฤดูร้อนปี 2020 และภาคการศึกษาฤดูใบไม้ร่วงปี 2020 ฉันตัดสินใจทำงานวิจัยด้านวิทยาการหุ่นยนต์ ฉันได้รับประสบการณ์ที่ยอดเยี่ยมจากทั้ง CSCI473 และการเข้าร่วมภาคสนามด้านวิทยาการคอมพิวเตอร์ จึงตัดสินใจว่าต้องการทำงานวิจัยให้กับห้องปฏิบัติการ HCR เนื่องจากฉันเคยพบ Dr. Zhang เมื่อปีก่อน ฉันจึงตัดสินใจส่งอีเมลหาเขาเพื่อสอบถามเกี่ยวกับโอกาสที่ห้องปฏิบัติการอาจมีในเดือนมกราคม 2021 ภายในเวลาประมาณ 2 สัปดาห์ Dr. Zhang แสดงความสนใจ นำเสนอตัวเลือกงานวิจัย และเสนอบทบาทในห้องปฏิบัติการให้ฉัน จากนั้นฉันก็เริ่มทำงานให้กับห้องปฏิบัติการในเดือนกุมภาพันธ์ 2021
วิดีโอแนะนำตัว
นี่คือวิดีโอแนะนำตัวของฉันที่บันทึกไว้ไม่กี่เดือนหลังจากเริ่มทำงานที่ห้องปฏิบัติการ HCR วิดีโอนี้บันทึกในเดือนพฤษภาคม 2021 และครอบคลุมงานวิจัยที่ฉันจะมุ่งเน้นในห้องปฏิบัติการ HCR ระหว่างฤดูร้อนปี 2021:
โครงการของฉัน
ตลอดช่วงเวลาที่ทำงานในห้องปฏิบัติการ HCR ฉันมุ่งเน้นไปที่โครงการ Triton เป็นหลัก โครงการ Triton คือหุ่นยนต์เคลื่อนที่ที่พัฒนาโดย ห้องปฏิบัติการวิทยาการหุ่นยนต์ที่มีมนุษย์เป็นศูนย์กลาง แห่ง Colorado School of Mines หุ่นยนต์นี้เป็นหุ่นยนต์ภาคพื้นดินแบบล้อรอบทิศทางสามเหลี่ยมที่ขับเคลื่อนด้วย NVIDIA’s Jetson Nano
โดยสรุปอย่างง่าย Triton ประกอบด้วยส่วนต่าง ๆ ดังต่อไปนี้:
- NVIDIA Jetson Nano
- บอร์ด Carrier NVIDIA’s Seed Studio A205
- Arduino Mega
- การ์ด Micro SD ขนาด 64 GB
- ตัวถังที่พิมพ์สามมิติแบบกำหนดเอง
- ล้อ mecanum จำนวน 3 ล้อ
- แบตเตอรี่ AR จำนวน 1 ก้อน
- วงจรแบบกำหนดเองสำหรับการกระจายพลังงานและการเดินสายที่เหมาะสมที่สุด
- กล้อง Intel’s Realsense D435
- ไฟ LED บางส่วน
หุ่นยนต์นี้ได้รับการออกแบบ สร้าง และผลิตขึ้นในช่วงประมาณปี 2018-2020 เพื่อใช้เป็นหุ่นยนต์สำหรับการศึกษา เมื่อฉันเข้าร่วมงาน Triton ก็ได้รับการพัฒนาไปมากแล้ว และห้องปฏิบัติการกำลังพิจารณาสร้างรุ่นใหม่ อย่างไรก็ตาม ปัญหาหลักของ Triton คือซอฟต์แวร์ Triton สามารถเคลื่อนที่ ชาร์จไฟ และทำงานได้ในระดับพื้นฐาน แต่ไม่ได้ทำสิ่งที่ชาญฉลาดจริง ๆ อีกทั้งยังขาดความสามารถในการเคลื่อนไหวขั้นสูง
![]() |
![]() |
![]() |
![]() |
เพื่อเริ่มแก้ไขปัญหานี้ ห้องปฏิบัติการได้จัดเตรียมพื้นที่ซึ่งเราสามารถติดตาม Triton ได้ ในการทำเช่นนี้ พวกเขาสร้างพื้นที่ขนาด 2 เมตรคูณ 2 เมตร พร้อมกล้อง Optitrack Flex (อินฟราเรด) จำนวน 8 ตัว จัดวางเป็นรูปทรงคล้ายสี่เหลี่ยม โดยอยู่สูงจากพื้นประมาณ 6-7 ฟุต
![]() |
![]() |
นอกจากการสร้างพื้นที่นี้แล้ว Triton แต่ละตัวก็มีลูกทรงกลมสีเทาสามลูกติดอยู่ที่ด้านบนของตัวหุ่นยนต์
ด้วยการจัดเตรียมนี้ เราจึงสร้างระบบ GPS ขนาดเล็กของเราเองได้อย่างมีประสิทธิภาพ ซึ่งช่วยให้เราได้รับพิกัดที่แน่นอนเป็นหน่วยเมตรของ Triton ในพื้นที่ที่เราสนใจ ด้วยการใช้กล้องอินฟราเรด Optitrack และลูกทรงกลมสีเทาของ Optitrack ที่จัดวางเป็นรูปสามเหลี่ยม เราจึงสามารถระบุพิกัดที่แน่นอนของ Triton ในพื้นที่ของเราได้ สิ่งนี้ทำให้เราสามารถประยุกต์ใช้ระบบวงปิดเพื่อเพิ่มความแม่นยำในการเคลื่อนที่
ระบบ Optitrack ให้ข้อมูลตำแหน่งและทิศทางที่ประมาณ 120Hz ด้วยความแม่นยำระดับต่ำกว่ามิลลิเมตรเมื่อผ่านการปรับเทียบอย่างเหมาะสม เครื่องหมายสะท้อนแสงสามจุดของ Triton แต่ละตัวก่อให้เกิดรูปแบบสามเหลี่ยมที่เป็นเอกลักษณ์ ซึ่งระบบสามารถติดตามในฐานะวัตถุแข็งเกร็งได้ ระบบพิกัดได้รับการปรับเทียบให้ (0,0) อยู่ที่ศูนย์กลางของพื้นที่ติดตาม โดยแกน X และ Y วางตัวสอดคล้องกับรูปทรงเรขาคณิตของห้อง แต่แม้จะมีข้อมูลตำแหน่งที่แม่นยำนี้ Triton ก็ยังประสบปัญหาในการเคลื่อนที่
ด้วยการจัดเตรียมนี้ หนึ่งในคุณสมบัติหลักที่เราต้องการมอบให้ Triton คือความสามารถในการเคลื่อนที่ไปยังพิกัดที่กำหนด ผู้ใช้หรือซอฟต์แวร์ของผู้ใช้สามารถระบุพิกัด (x, y) ภายในพื้นที่ที่สนใจได้ จากนั้นหุ่นยนต์จะเคลื่อนที่ไปยังพิกัดนั้นให้เร็ว แม่นยำ และราบรื่นที่สุดเท่าที่จะเป็นไปได้ เมื่อฉันเข้าร่วมงาน คุณสมบัตินี้มีอยู่แล้ว แต่ยังทำงานได้ไม่ดีนัก นี่คือแอนิเมชันอย่างง่ายที่แสดงให้เห็นว่าตรรกะการเคลื่อนที่แบบเดิมทำงานอย่างไร:
ฉันไม่ได้บันทึกวิธีแก้ปัญหาเดิมขณะทำงานไว้ ดังนั้นฉันจึงสร้างแอนิเมชันอย่างง่ายนี้เพื่อแสดงให้เห็นตรรกะการเคลื่อนที่แบบเก่าขณะทำงาน เมื่อทราบเช่นนี้แล้ว วิธีการนี้มีปัญหาอะไรบ้าง?
- มันช้ามาก
- มันทำให้หุ่นยนต์ต้องใช้พื้นที่มากเพื่อเดินทางไปยังจุดที่กำหนด สิ่งนี้ทำให้เราใช้วิธีแก้ปัญหานี้ได้ยากเมื่อมี Triton หลายตัวกำลังเคลื่อนที่ไปมา
แล้วเหตุใดพฤติกรรมนี้จึงเกิดขึ้น? ปัญหาคือ Triton จะหมุนก่อน โดยเปลี่ยนค่า alpha จนกระทั่งหันไปยังจุดเป้าหมายภายในค่าความคลาดเคลื่อนที่กำหนด จากนั้นมันจะพุ่งไปข้างหน้า และเมื่อค่า theta ของมันคลาดเคลื่อนจากเป้าหมายเกินค่าที่กำหนด มันจะหยุดและเริ่มหมุนอีกครั้งจนกระทั่งค่า alpha อยู่ภายในช่วงที่ยอมรับได้สำหรับเป้าหมาย จากนั้นมันก็จะพุ่งไปอีกครั้ง และทำเช่นนี้ต่อไปจนกว่าจะถึงจุดนั้น นอกจากนี้ เมื่อมันเข้าใกล้จุดเป้าหมายมากขึ้นเรื่อย ๆ ความเร็วในการหมุนและพุ่งไปข้างหน้าจะช้าลงมาก เพื่อให้แน่ใจว่ามันจะไม่เคลื่อนที่เลยจุดเป้าหมาย ผลลัพธ์คือ Triton มีการเคลื่อนที่ที่ไม่เป็นธรรมชาติ ใช้เวลานานมากกว่าจะไปถึงจุดเป้าหมาย และต้องใช้พื้นที่มากเพียงเพื่อไปยังจุดเป้าหมายที่กำหนด ดังนั้น เมื่อพิจารณาปัญหาทั้งหมดนี้ รวมถึงความสำคัญอย่างยิ่งของคุณสมบัตินี้ต่อการพัฒนาโครงการ Triton เมื่อฉันเริ่มทำงานที่ห้องปฏิบัติการ HCR งานแรกของฉันคือการพัฒนาโซลูชันที่มีประสิทธิภาพมากขึ้น ซึ่งจะช่วยให้ Triton นำทางไปยังจุดเป้าหมายได้ดียิ่งขึ้น
เมื่อทราบเช่นนี้ ฉันจึงใช้เวลามากในการค้นคว้าวิธีที่ดีที่สุดเท่าที่จะเป็นไปได้สำหรับการแก้ไขปัญหานี้ ที่น่าขันคือ ในตอนนั้นฉันกำลังเรียนวิชาที่ชื่อว่า บทนำสู่ระบบควบคุมป้อนกลับ (EENG307) ที่ Mines ในช่วงต้นของวิชานั้น เราได้เรียนรู้เกี่ยวกับแนวคิดของ ตัวควบคุมวงเปิด และ ตัวควบคุมวงปิด เมื่อพิจารณาเรื่องนี้ รวมทั้งหลังจากพูดคุยกับศาสตราจารย์ผู้สอนวิชานั้นและเพื่อนร่วมห้องที่ฉลาดของฉัน ก็เห็นได้ชัดว่าเป้าหมายในการทำให้ Triton ไปยังจุดเป้าหมายนั้นเป็นปัญหาของระบบวงปิด
หลังจากการทดสอบและการวิจัยอย่างกว้างขวาง ฉันได้พัฒนาแนวทางตัวควบคุมที่แตกต่างกันสองแบบสำหรับ Triton:
วิธีที่ 1: ตัวควบคุมระยะทาง-Theta
แนวทางนี้ใช้ตัวควบคุมเชิงสัดส่วนสองตัวที่แยกจากกันและทำงานพร้อมกัน:
- ตัวควบคุมระยะทาง: คำนวณระยะทางแบบยุคลิดไปยังเป้าหมาย และใช้เกนเชิงสัดส่วนเพื่อกำหนดความเร็วในการเคลื่อนที่ไปข้างหน้า/ถอยหลัง
- ตัวควบคุม Theta: คำนวณค่าความคลาดเคลื่อนเชิงมุมระหว่างทิศทางปัจจุบันของหุ่นยนต์กับทิศทางที่ต้องการไปยังเป้าหมาย และใช้เกนเชิงสัดส่วนแยกต่างหากสำหรับความเร็วในการหมุน
อัลกอริทึมจะคำนวณระยะทางแบบยุคลิดไปยังเป้าหมายและค่าความคลาดเคลื่อนเชิงมุมระหว่างทิศทางปัจจุบันของหุ่นยนต์กับทิศทางที่ต้องการอย่างต่อเนื่อง จากนั้นจะใช้เกนเชิงสัดส่วนสองค่าที่แยกจากกันเพื่อสร้างความเร็วเชิงเส้นและเชิงมุมตามลำดับ
ผลลัพธ์คือ Triton หันเข้าหาเป้าหมายโดยอัตโนมัติขณะเคลื่อนที่ไปข้างหน้าไปพร้อมกัน ทำให้เกิดเส้นทางโค้งที่ราบรื่น ข้อได้เปรียบสำคัญคือหุ่นยนต์จะหันด้านหน้าเข้าหาปลายทางอยู่เสมอ ซึ่งเป็นสิ่งสำคัญสำหรับการใช้งานที่อาศัยกล้อง
วิธีที่ 2: ตัวควบคุมพิกัด X-Y
แนวทางนี้มองหุ่นยนต์เสมือนเป็นพล็อตเตอร์ 2 มิติ โดยควบคุมการเคลื่อนที่ในแกน X และ Y แยกจากกัน:
- ตัวควบคุม X: ควบคุมการเคลื่อนที่ในทิศตะวันออก-ตะวันตกโดยตรงตามค่าความคลาดเคลื่อนของพิกัด X
- ตัวควบคุม Y: ควบคุมการเคลื่อนที่ในทิศเหนือ-ใต้โดยตรงตามค่าความคลาดเคลื่อนของพิกัด Y
การทำงานจะคำนวณค่าความคลาดเคลื่อนของพิกัด X และ Y แยกจากกัน ใช้ค่าเกนแบบสัดส่วนที่แยกกัน จากนั้นแปลงองค์ประกอบความเร็วในระบบพิกัดโลกเหล่านี้ให้เป็นระบบพิกัดเฉพาะที่ของหุ่นยนต์โดยใช้เมทริกซ์การหมุน การแปลงนี้จำเป็นเนื่องจากชุดขับเคลื่อนล้อออมนิของหุ่นยนต์ต้องการความเร็วในระบบอ้างอิงของตัวเอง ไม่ใช่ในพิกัดโลก วิธีนี้สร้างเส้นทางตรงไปยังเป้าหมายมากที่สุดและเร็วกว่าอย่างเห็นได้ชัด แต่ทิศทางการหันของหุ่นยนต์จะค่อย ๆ เบี่ยงเบน เนื่องจากไม่มีการควบคุมทิศทางการหันโดยเฉพาะ
สำหรับวิธีที่ 1 ฉันได้อธิบายวิธีนี้อย่างละเอียดไว้ใน บล็อก Move Turtle (TurtleSim) ฉันขอแนะนำอย่างยิ่งให้อ่านบล็อกนี้เพื่อทำความเข้าใจรายละเอียดทั้งหมดเกี่ยวกับการทำงานของตัวควบคุม PID โดยทั่วไป รวมถึงการทำงานของวิธีที่ 1 ฉันพัฒนาวิธีที่ 1 โดยใช้ TurtleSim ของ ROS จากนั้นจึงย้ายโค้ดดังกล่าวมายัง Triton และปรับปรุงให้รองรับสภาพแวดล้อมในโลกจริงมากขึ้น
วิธีที่ 2 ใช้แนวทางที่ค่อนข้างแตกต่างกันแต่มีประสิทธิภาพเท่าเทียมกัน แทนที่จะคิดถึงทิศทางการหันของหุ่นยนต์และระยะทางไปยังเป้าหมาย วิธีนี้มองการเคลื่อนที่เป็นปัญหาบนระนาบพิกัด ตัวควบคุมจะคำนวณค่าความคลาดเคลื่อนในทิศทาง X และ Y แยกจากกันอย่างต่อเนื่อง ตัวอย่างเช่น หากหุ่นยนต์ต้องเคลื่อนที่จาก (0,0) ไปยัง (2,3) หุ่นยนต์จะมองว่านี่คือการแก้ไขค่าความคลาดเคลื่อน 2 เมตรในแกน X และ 3 เมตรในแกน Y ตัวควบคุมแบบสัดส่วนสองตัวทำงานพร้อมกัน ตัวหนึ่งปรับความเร็วของหุ่นยนต์ในทิศทาง X ตามค่าความคลาดเคลื่อนของ X ขณะที่อีกตัวจัดการการเคลื่อนที่ในทิศทาง Y ตามค่าความคลาดเคลื่อนของ Y วิธีนี้สร้างเส้นทางไปยังเป้าหมายที่ตรงกว่า คล้ายกับการเคลื่อนที่ของหัวพิมพ์เครื่องพิมพ์ 3 มิติ และทำให้สามารถเคลื่อนที่ในแนวทแยงได้อย่างราบรื่น หุ่นยนต์ไม่จำเป็นต้องหันหน้าเข้าหาเป้าหมายอย่างชัดเจน ทำให้วิธีนี้มีประสิทธิภาพเป็นพิเศษในพื้นที่แคบหรือเมื่อต้องการการจัดตำแหน่งที่แม่นยำ
ทั้งสองวิธีพิสูจน์แล้วว่าเร็วกว่าและเชื่อถือได้มากกว่าแนวทางเดิมอย่างมีนัยสำคัญ หากต้องการดูวิธีการใหม่เหล่านี้ในการทำงาน โปรดดู เพลย์ลิสต์ Tritons in Action ซึ่งแสดง Triton ทั้งหมดขณะทำงานด้วยวิธีการใหม่
สิ่งที่เดิมใช้เวลา 30-45 วินาทีสำหรับการเคลื่อนที่แบบจุดต่อจุดอย่างง่าย ปัจจุบันใช้เวลาประมาณ 8-12 วินาที ที่สำคัญยิ่งกว่านั้นคือ Triton สามารถนำทางในพื้นที่แคบได้อย่างมีประสิทธิภาพมากขึ้น ซึ่งมีประโยชน์สำหรับสถานการณ์ที่มีหุ่นยนต์หลายตัวของเรา
ความท้าทายในการพัฒนาและการดีบัก
การนำตัวควบคุมเหล่านี้มาใช้งานไม่ได้เป็นเรื่องตรงไปตรงมา และเกี่ยวข้องกับความท้าทายในการดีบักที่สำคัญหลายประการ:
การแปลงระบบพิกัด: หนึ่งในส่วนที่ยุ่งยากที่สุดคือการทำให้การแปลงพิกัดถูกต้อง ระบบ Optitrack ให้ข้อมูลในระบบพิกัดของตัวเอง หุ่นยนต์มีระบบพิกัดเฉพาะที่ของตัวเอง และฉันจำเป็นต้องแปลงระหว่างระบบเหล่านี้อย่างแม่นยำ การทำงานในระยะแรกทำให้หุ่นยนต์เคลื่อนที่ไปในทิศทางที่ผิด เนื่องจากฉันสับสนกับการคำนวณเมทริกซ์การหมุน
พฤติกรรมในโลกจริงเทียบกับพฤติกรรมในอุดมคติ: ความท้าทายที่ใหญ่ที่สุดคือการคำนึงถึงปัจจัยในโลกจริงที่ไม่ปรากฏในทฤษฎีการควบคุมตามตำรา ล้อของหุ่นยนต์มีลักษณะความฝืดแตกต่างกัน มอเตอร์ตอบสนองไม่เหมือนกันทั้งหมด และมักมีความหน่วงบางส่วนในห่วงโซ่การสื่อสารจาก Optitrack ไปยังซอฟต์แวร์ควบคุมและต่อไปยัง Arduino ของหุ่นยนต์ ฉันใช้เวลาหลายสัปดาห์ในการปรับค่าเกนแบบสัดส่วนและเพิ่มตัวกรองเดดแบนด์เพื่อรองรับความเป็นจริงทางกายภาพเหล่านี้
ปัญหาการสั่นและเสถียรภาพ: การทำงานในระยะแรกของฉันประสบปัญหาการสั่น โดยหุ่นยนต์จะเคลื่อนที่เลยเป้าหมายแล้วแกว่งกลับไปกลับมา สิ่งนี้ทำให้ฉันเข้าใจถึงความสำคัญของพจน์อนุพันธ์ในตัวควบคุม PID และความจำเป็นของการปรับค่าเกนอย่างเหมาะสม ในท้ายที่สุด ฉันเลือกใช้การควบคุมแบบสัดส่วนเป็นหลักพร้อมค่าเกนที่ปรับอย่างพิถีพิถัน แทนการใช้ PID เต็มรูปแบบ เนื่องจากแรงหน่วงโดยธรรมชาติของระบบเพียงพอสำหรับการใช้งานส่วนใหญ่
การรบกวนระหว่างหุ่นยนต์หลายตัว: เมื่อหุ่นยนต์หลายตัวทำงานพร้อมกัน ฉันค้นพบรูปแบบการรบกวนที่ไม่คาดคิด บางครั้งหุ่นยนต์จะ “แย่งพื้นที่” เดียวกัน หรือสร้างสถานการณ์หยุดชะงักที่หุ่นยนต์ขวางทางกันเองอย่างไม่มีกำหนด สิ่งนี้ทำให้ฉันพัฒนากลไกการประสานงานและอัลกอริทึมหลีกเลี่ยงการชน
ระบบควบคุม Triton หลายตัว
เมื่อฉันแก้ปัญหาการเคลื่อนที่ของ Triton เพียงตัวเดียวได้แล้ว ความท้าทายถัดไปของห้องปฏิบัติการคือการทำให้ Triton หลายตัวทำงานร่วมกันได้พร้อมกัน เรื่องนี้กลายเป็นหนึ่งในประเด็นหลักที่ฉันให้ความสนใจ และท้ายที่สุดก็กลายเป็นผลงานสำคัญส่วนหนึ่งของโครงการ
ระบบเดิมสามารถควบคุม Triton ได้ครั้งละเพียงหนึ่งตัวเท่านั้น ซึ่งจำกัดความเป็นไปได้ในการวิจัยอย่างมาก ห้องปฏิบัติการต้องการจำลองสถานการณ์ที่ยานพาหนะอัตโนมัติหลายคันจำเป็นต้องประสานการเคลื่อนที่ เช่น รถยนต์ขับเคลื่อนอัตโนมัติที่สื่อสารกันเพื่อเพิ่มประสิทธิภาพการไหลของการจราจรและสร้างแผนที่ SLAM (การระบุตำแหน่งและการทำแผนที่พร้อมกัน) ที่ดีขึ้น
เพื่อแก้ปัญหานี้ ฉันนำแนวทางการประมวลผลหลายกระบวนการมาใช้โดยใช้ไลบรารี multiprocessing ของ Python โดย Triton แต่ละตัวจะมีกระบวนการเฉพาะของตัวเอง ซึ่งสามารถทำงานอย่างเป็นอิสระขณะยังคงได้รับการประสานงานจากระบบควบคุมส่วนกลาง วิธีนี้ทำให้ Triton หลายตัวเคลื่อนที่พร้อมกันได้โดยไม่รบกวนลูปควบคุมของกันและกัน
การออกแบบสถาปัตยกรรมหุ่นยนต์หลายตัว
สถาปัตยกรรมระบบที่ฉันพัฒนาประกอบด้วยองค์ประกอบสำคัญหลายส่วน:
กระบวนการควบคุมหลัก: ทำหน้าที่เป็นผู้ประสานงานส่วนกลาง จัดการการโต้ตอบกับส่วนติดต่อผู้ใช้ การวางแผนเส้นทาง และการประสานงานระดับสูงระหว่างหุ่นยนต์ โดยรักษาสถานะโดยรวมและกระจายคำสั่งไปยังกระบวนการของหุ่นยนต์แต่ละตัว
กระบวนการของหุ่นยนต์แต่ละตัว: Triton แต่ละตัวมีกระบวนการ Python เฉพาะของตัวเองซึ่งจัดการ:
- การคำนวณการควบคุม PID แบบเรียลไทม์ที่ประมาณ 50Hz
- การสื่อสารกับฮาร์ดแวร์ของหุ่นยนต์ (Arduino/Jetson)
- การทำงานตามเส้นทางในพื้นที่และการหลีกเลี่ยงสิ่งกีดขวาง
- การรายงานสถานะกลับไปยังกระบวนการควบคุมหลัก
การสื่อสารผ่านหน่วยความจำที่ใช้ร่วมกัน: ฉันใช้ multiprocessing.shared_memory และอ็อบเจ็กต์ Queue ของ Python เพื่อให้สามารถสื่อสารระหว่างกระบวนการได้อย่างมีประสิทธิภาพ วิธีนี้ทำให้เกิดการประสานงานแบบเรียลไทม์โดยไม่ต้องมีค่าใช้จ่ายจากการสื่อสารผ่านเครือข่าย
กลไกการทำให้ทำงานสอดคล้องกัน: เพื่อป้องกันความขัดแย้งเมื่อหุ่นยนต์หลายตัวจำเป็นต้องประสานงานกัน เช่น การหลีกเลี่ยงการชน ฉันได้ใช้งานเซมาฟอร์และล็อก ซึ่งทำให้หุ่นยนต์สามารถร้องขอสิทธิ์เข้าถึงพื้นที่บางส่วนของพื้นที่ทำงานแต่เพียงผู้เดียว
ความท้าทายคือการทำให้หุ่นยนต์ทั้งหมดสามารถทำงานตามลูปควบคุมของตัวเองได้อย่างเป็นอิสระ ขณะเดียวกันยังคงรักษาการประสานงานโดยรวมไว้ กระบวนการของหุ่นยนต์แต่ละตัวจะคำนวณ PID ของตัวเองและส่งคำสั่งมอเตอร์ไปยังฮาร์ดแวร์โดยตรง ขณะที่กระบวนการหลักจัดการการประสานงานระดับสูง เช่น การหลีกเลี่ยงการชนและการวางแผนเส้นทาง
![]() |
![]() |
ระบบ Triton หลายตัวเปิดโอกาสใหม่ทั้งหมดในการวิจัย ปัจจุบันเราสามารถจำลอง:
- สถานการณ์การสื่อสารระหว่างยานพาหนะ
- การวางแผนเส้นทางแบบประสานงานพร้อมการหลีกเลี่ยงสิ่งกีดขวาง
- พฤติกรรมของหุ่นยนต์แบบฝูง
- การทำแผนที่ SLAM แบบหลายตัวแทน
- การควบคุมรูปขบวนและพฤติกรรมการติดตาม
นี่คือลักษณะการจัดวางในห้องปฏิบัติการเมื่อ Triton หลายตัวทำงานพร้อมกัน:
![]() |
![]() |
ฉันยังพัฒนาส่วนติดต่อผู้ใช้ที่ใช้งานง่าย ซึ่งทำให้นักวิจัยสามารถกำหนดเส้นทางสำหรับ Triton แต่ละตัวด้วยภาพได้ คุณสามารถวาดเส้นทางที่ต้องการให้หุ่นยนต์แต่ละตัวติดตามได้โดยตรง และหุ่นยนต์เหล่านั้นจะทำตามเส้นทางดังกล่าวด้วยการประสานงานที่สมบูรณ์แบบ สิ่งนี้มีประโยชน์อย่างมากสำหรับการจัดเตรียมการทดลองที่ซับซ้อนโดยไม่จำเป็นต้องเขียนโค้ดการเคลื่อนไหวแต่ละอย่างด้วยตนเอง
ระบบสามารถจัดการ Triton ได้พร้อมกันสูงสุด 5 ตัว โดยแต่ละตัวทำงานด้วยตัวควบคุม PID ของตัวเอง ขณะได้รับการประสานงานผ่านระบบควบคุมส่วนกลาง ประสิทธิภาพที่ได้令人ประทับใจ โดยหุ่นยนต์ทั้งหมดสามารถรักษาความแม่นยำเฉพาะตัวขณะทำงานร่วมกันเป็นทีม
นี่คือเพลย์ลิสต์ที่แสดง Triton ขณะทำงาน ตั้งแต่การควบคุมหุ่นยนต์ตัวเดียวไปจนถึงการประสานงานระหว่างหุ่นยนต์หลายตัว: เพลย์ลิสต์ Tritons in Action
การผสานรวมเซนเซอร์วัดความลึกและการแก้ไขพิกัด
ความก้าวหน้าสำคัญอีกประการหนึ่งที่ฉันทำคือการใช้กล้องวัดความลึก Intel RealSense D435 ที่ติดตั้งอยู่บน Triton แต่ละตัว แม้ว่าระบบ Optitrack จะให้ข้อมูลตำแหน่งที่แม่นยำอย่างยิ่งแก่เรา ฉันต้องการสำรวจว่าหุ่นยนต์สามารถใช้เซนเซอร์ในตัวเพื่อเพิ่มการรับรู้เชิงพื้นที่และแก้ไขข้อผิดพลาดของพิกัดได้อย่างไร
แนวคิดคือ Triton สามารถใช้เซนเซอร์วัดความลึกเพื่อตรวจจับ Triton ตัวอื่นที่อยู่ในบริเวณใกล้เคียง และตรวจสอบตำแหน่งของพวกมันเทียบกับข้อมูลอื่น วิธีนี้มีวัตถุประสงค์หลายประการ:
-
การแก้ไขข้อผิดพลาด: หากระบบ Optitrack เกิดการคลาดเคลื่อนของการปรับเทียบหรือถูกบดบังชั่วคราว หุ่นยนต์สามารถใช้การยืนยันตำแหน่งของกันและกันด้วยภาพเพื่อรักษาระบบพิกัดที่แม่นยำ
-
SLAM ที่ได้รับการปรับปรุง: ด้วยการให้หุ่นยนต์หลายตัวที่มีเซนเซอร์วัดความลึกทำงานร่วมกัน เราสามารถสร้างแผนที่สภาพแวดล้อมที่มีรายละเอียดมากยิ่งขึ้น พร้อมข้อมูลที่ซ้ำซ้อนเพื่อเพิ่มความน่าเชื่อถือ
-
การหลีกเลี่ยงการชน: การตรวจจับความลึกแบบเรียลไทม์จะช่วยให้หุ่นยนต์ตรวจจับและหลีกเลี่ยงกันเองได้ แม้ว่าระบบควบคุมส่วนกลางจะมีความล่าช้าในการสื่อสารก็ตาม
ผมเริ่มทดลองใช้อัลกอริทึมที่จะช่วยให้ Triton สามารถ:
- ตรวจจับ Triton ตัวอื่นโดยใช้รูปร่างสามเหลี่ยมอันเป็นเอกลักษณ์และมาร์กเกอร์ทรงกลมสะท้อนแสง
- คำนวณตำแหน่งและทิศทางสัมพัทธ์โดยใช้ข้อมูลความลึก
- เปรียบเทียบค่าที่วัดได้เหล่านี้กับข้อมูล Optitrack เพื่อระบุความคลาดเคลื่อน
- ปรับระบบพิกัดของตนเองแบบเรียลไทม์เพื่อรักษาความแม่นยำ
การทดลองด้านคอมพิวเตอร์วิทัศน์
ผมใช้เวลาจำนวนมากทดลองกับกระบวนการทำงานด้านคอมพิวเตอร์วิทัศน์ที่ทำงานเป็นหลายขั้นตอน:
![]() |
![]() |
![]() |
![]() |
![]() |
การประมวลผลข้อมูลความลึก: Intel RealSense D435 ให้ทั้งสตรีมข้อมูล RGB และข้อมูลความลึก โดยหลักแล้วผมทำงานกับข้อมูลความลึก ซึ่งมาในรูปแบบอาร์เรย์ขนาด 640x480 ของค่าการวัดระยะทางที่ความถี่ 30Hz ความท้าทายแรกคือการกรองข้อมูลความลึกที่มีสัญญาณรบกวนเหล่านี้ เพื่อดึงข้อมูลเรขาคณิตที่มีความหมายออกมา
ความพยายามในการตรวจจับวัตถุ: ผมทดลองใช้อัลกอริทึมการตรวจจับแบบหลายขั้นตอน ผมประสบความสำเร็จในระดับหนึ่งในการแบ่งส่วนภาพความลึกเพื่อระบุวัตถุที่อยู่ในระดับพื้น (กรองกำแพง เพดาน และอื่น ๆ ออก) และค้นหาวัตถุที่มีลักษณะด้านขนาดเหมาะสม โดยมีพื้นที่ฐานประมาณ 0.3x0.3 เมตร ผมลองใช้การตรวจจับขอบและการวิเคราะห์เรขาคณิตเพื่อระบุรูปทรงอันเป็นเอกลักษณ์ของ Triton ซึ่งให้ผลลัพธ์ที่หลากหลาย
การทดลองตรวจจับมาร์กเกอร์: ทรงกลมสะท้อนแสงสามลูกบน Triton แต่ละตัวดูเหมือนจะเป็นคุณลักษณะสำหรับการตรวจจับที่มีแนวโน้มดีที่สุด ผมทดลองใช้อัลกอริทึมการตรวจจับกลุ่มพิกเซลเพื่อระบุรูปแบบสามเหลี่ยมอันเป็นเอกลักษณ์ของจุดสว่างสามจุดในภาพความลึก ผมได้ผลลัพธ์ที่ค่อนข้างดีในสภาพแสงที่ควบคุมได้ แม้ว่าจะยังไม่สามารถทำงานได้อย่างน่าเชื่อถือสม่ำเสมอ
การวิจัยการผสานข้อมูลพิกัด: ผมศึกษาวิธีการผสานค่าประมาณตำแหน่งจากวิชันเข้ากับข้อมูล Optitrack รวมถึงการนำตัวกรองคาลมานพื้นฐานมาใช้งาน แนวคิดคือให้น้ำหนักกับข้อมูล Optitrack มากขึ้นเมื่อมีข้อมูลดังกล่าว แต่เปลี่ยนไปใช้วิชันเมื่อจำเป็น แม้ว่าผมจะยังทำให้ระบบนี้ทำงานได้อย่างสมบูรณ์ก่อนสิ้นสุดช่วงเวลาที่อยู่ในห้องปฏิบัติการไม่ได้
ความท้าทายด้านประสิทธิภาพ: การทำให้การประมวลผลทั้งหมดนี้ทำงานแบบเรียลไทม์ควบคู่ไปกับลูปควบคุมของหุ่นยนต์พิสูจน์แล้วว่าเป็นเรื่องท้าทาย ผมทดลองใช้แนวทางการปรับปรุงประสิทธิภาพเพื่อให้อัลกอริทึมทำงานที่ประมาณ 10-15Hz โดยไม่ใช้ความสามารถในการประมวลผลของ Jetson Nano มากจนเกินไป
น่าเสียดายที่ผมต้องออกจากห้องปฏิบัติการก่อนที่จะสามารถทำงานด้านคอมพิวเตอร์วิทัศน์นี้ให้เสร็จสมบูรณ์ แม้ว่าผมจะได้ผลลัพธ์เบื้องต้นที่มีแนวโน้มดีและได้เรียนรู้มากมายเกี่ยวกับการประมวลผลเซนเซอร์วัดความลึก แต่ผมก็ยังไม่สามารถทำให้ระบบอยู่ในสภาพที่น่าเชื่อถือได้อย่างสมบูรณ์ งานนี้ยังคงเป็นแนวทางการวิจัยที่น่าสนใจ ซึ่งผู้อื่นอาจนำไปต่อยอดได้
นี่คือวิดีโอขณะที่ผมทดสอบอัลกอริทึมคอมพิวเตอร์วิทัศน์:
นี่คือลักษณะมุมมองจากเซนเซอร์วัดความลึกระหว่างการทดลองของผม:
แม้ว่าผมจะทำงานผสานรวมเซนเซอร์วัดความลึกไม่เสร็จสมบูรณ์ แต่แนวคิดนี้ก็แสดงให้เห็นถึงศักยภาพสำหรับการประยุกต์ใช้ เช่น การจำลองสถานการณ์รถยนต์ขับเคลื่อนอัตโนมัติ ซึ่งยานพาหนะจำเป็นต้องรับรู้ถึงกันและกันโดยไม่พึ่งพาโครงสร้างพื้นฐานภายนอกเพียงอย่างเดียว แนวทางการวิจัยที่ผมเริ่มสำรวจอาจมีส่วนช่วยต่องานในอนาคตของห้องปฏิบัติการได้
การจัดทำเอกสารและการรักษาองค์ความรู้
หนึ่งในผลงานที่สำคัญที่สุดของผมที่มีต่อ HCR Lab และอาจเป็นผลงานที่ผมภาคภูมิใจมากที่สุด คือการจัดระเบียบและรักษาเอกสารทั้งหมดของโครงการ เมื่อผมเข้าร่วมห้องปฏิบัติการ องค์ความรู้ของโครงการ Triton กระจัดกระจายอยู่บนแพลตฟอร์มและในรูปแบบต่าง ๆ ข้อมูลสำคัญกระจายอยู่ใน:
- บัญชี Google Drive ต่าง ๆ ที่เป็นของนักศึกษาหลายคนซึ่งสำเร็จการศึกษาไปแล้ว
- อีเมลเก่าที่ถูกฝังอยู่ในกล่องจดหมาย
- โฟลเดอร์ Dropbox แบบสุ่ม
- รีโพซิทอรี GitHub หลายแห่ง
- รีโพซิทอรี GitLab ที่มีการจัดระเบียบไม่สม่ำเสมอ
- บันทึกที่เขียนด้วยลายมือ ซึ่งมีเพียงบางคนเท่านั้นที่สามารถตีความได้
เอกสารที่กระจัดกระจายนี้เป็นปัญหาใหญ่มาก นักศึกษาใหม่ต้องใช้เวลาหลายสัปดาห์เพียงเพื่อพยายามหาวิธีเริ่มต้นใช้งาน และองค์ความรู้อันมีค่าก็สูญหายอยู่เสมอเมื่อผู้คนสำเร็จการศึกษาหรือออกจากห้องปฏิบัติการ
ผมตัดสินใจจัดการปัญหานี้อย่างเป็นระบบ ผมใช้เวลานับไม่ถ้วนในการติดตามหาเอกสาร โค้ด วิดีโอ และบันทึกทุกชิ้นที่เกี่ยวข้องกับโครงการ Triton จากนั้นผมจัดระเบียบทุกอย่างไว้ใน รีโพซิทอรี GitLab ส่วนกลาง ซึ่งมีโครงสร้างที่ชัดเจนและเป็นเหตุเป็นผล
![]() |
![]() |
เอกสารส่วนกลางประกอบด้วย:
- คู่มือการประกอบ: คำแนะนำทีละขั้นตอนสำหรับการประกอบ Triton ตั้งแต่เริ่มต้น
- การตั้งค่าซอฟต์แวร์: คู่มือฉบับสมบูรณ์สำหรับการตั้งค่าสภาพแวดล้อมการพัฒนา
- เอกสารประกอบโค้ด: โค้ดที่มีคำอธิบายประกอบอย่างดี พร้อมคำอธิบายที่ชัดเจน
- ข้อมูลจำเพาะฮาร์ดแวร์: รายการชิ้นส่วนโดยละเอียด แผนผังการเดินสาย และแบบแผงวงจรพิมพ์
- คู่มือการแก้ไขปัญหา: ปัญหาที่พบบ่อยและวิธีแก้ไข
- วิดีโอสอนการใช้งาน: ผมสร้างและอัปโหลดวิดีโอสอนการใช้งานไปยัง YouTube รวมถึงวิดีโอสอนการปรับเทียบ Optitrack โดยละเอียด:
ผมยังได้กำหนดมาตรฐานการจัดทำเอกสาร เพื่อให้มั่นใจว่าการมีส่วนร่วมในอนาคตจะได้รับการจัดระเบียบและเข้าถึงได้ โครงสร้างรีโพซิทอรีที่ผมสร้างขึ้นกลายเป็นรากฐานสำหรับงานทั้งหมดที่เกิดขึ้นภายหลังในห้องปฏิบัติการ
นอกเหนือจากการจัดระเบียบเอกสารที่มีอยู่แล้ว ผมยังสร้างคู่มือและบทช่วยสอนต้นฉบับหลายฉบับเพื่อเติมเต็มช่องว่างสำคัญในฐานความรู้ ซึ่งรวมถึงคำแนะนำการตั้งค่าโดยละเอียดสำหรับสมาชิกใหม่ของห้องปฏิบัติการ คู่มือการแก้ไขปัญหาที่ครอบคลุม และวิดีโอแนะนำขั้นตอนการทำงานที่ซับซ้อน
ผลกระทบเกิดขึ้นทันทีและยั่งยืน นักศึกษาใหม่สามารถเรียนรู้และทำความเข้าใจระบบได้ภายในไม่กี่วันแทนที่จะเป็นหลายสัปดาห์ รีโพซิทอรีเอกสารที่ผมสร้างขึ้นยังคงถูกใช้งานโดยห้องปฏิบัติการจนถึงทุกวันนี้ หลายปีหลังจากที่ผมออกมาแล้ว รีโพซิทอรีนี้กลายเป็นแหล่งข้อมูลหลักเพียงหนึ่งเดียวสำหรับโครงการ Triton และช่วยประหยัดเวลาได้จำนวนนับไม่ถ้วน—ทั้งชั่วโมงและวัน—ให้กับนักวิจัยรุ่นต่อมา
การเป็นพี่เลี้ยงและการถ่ายทอดองค์ความรู้
หนึ่งในแง่มุมที่คุ้มค่าที่สุดของช่วงเวลาที่ผมอยู่ใน HCR Lab คือโอกาสในการเป็นพี่เลี้ยงให้ผู้อื่นและแบ่งปันความรู้ที่ผมได้รับ เมื่อความก้าวหน้าในการทำงานของผมเพิ่มขึ้นและผมมีประสบการณ์กับระบบ Triton มากขึ้น ผมก็รับผิดชอบในการฝึกอบรมสมาชิกทีมใหม่มากขึ้นเรื่อย ๆ
การเป็นพี่เลี้ยงให้ผู้สืบทอดในห้องปฏิบัติการ
ขณะที่ผมเตรียมตัวออกจากห้องปฏิบัติการในที่สุดเพื่อมุ่งเน้นการเรียนให้จบปริญญาและทำงานที่ eBay ผมทำให้แน่ใจว่าได้ฝึกอบรมคนสองคนที่จะเข้ามารับช่วงต่อโครงการ Triton หลังจากผมออกไปอย่างละเอียดถี่ถ้วน เรื่องนี้ไม่ใช่เพียงการแสดงให้พวกเขาเห็นว่าสิ่งต่าง ๆ ทำงานอย่างไร แต่เป็นการทำให้มั่นใจว่าพวกเขาเข้าใจหลักการพื้นฐานอย่างแท้จริง เพื่อให้สามารถสร้างนวัตกรรมต่อไปได้
ผมใช้เวลาหลายสัปดาห์ทำงานร่วมกับพวกเขาอย่างใกล้ชิด โดยครอบคลุมเรื่อง:
- พื้นฐานทางคณิตศาสตร์ของระบบควบคุม PID
- สถาปัตยกรรมการประมวลผลหลายกระบวนการสำหรับประสานงานหุ่นยนต์หลายตัว
- การผสานรวมเซนเซอร์วัดความลึกและอัลกอริทึมคอมพิวเตอร์วิทัศน์
- ระบบเอกสารและวิธีดูแลรักษาระบบ
- เทคนิคการดีบักและรูปแบบความขัดข้องที่พบบ่อย
การถ่ายทอดองค์ความรู้นั้นละเอียดถี่ถ้วนอย่างมาก เราร่วมกันทำเซสชันดีบักจริง ผมให้พวกเขาแก้ไขและต่อยอดโค้ดที่มีอยู่ และผมทำให้แน่ใจว่าพวกเขาสามารถตั้งค่า Triton ตัวใหม่ได้อย่างอิสระตั้งแต่เริ่มต้น
โครงการพี่เลี้ยงนักเรียนมัธยมปลาย
สิ่งที่คุ้มค่ายิ่งกว่าอาจเป็นประสบการณ์ของผมในการเป็นพี่เลี้ยงให้นักเรียนมัธยมปลายคนหนึ่งผ่านโครงการเผยแพร่ความรู้ของห้องปฏิบัติการ นี่เป็นโอกาสที่ยอดเยี่ยมในการแนะนำใครบางคนให้รู้จักกับหุ่นยนต์ วิทยาการคอมพิวเตอร์ และการวิจัยในช่วงสำคัญของการศึกษา
ผมออกแบบหลักสูตรที่ครอบคลุมหัวข้อต่าง ๆ ดังนี้:
พื้นฐานวิทยาการคอมพิวเตอร์:
- แนวคิดการเขียนโปรแกรมโดยใช้ Python เป็นภาษาหลัก
- บทนำเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุ
- ความเข้าใจเกี่ยวกับอัลกอริทึมและโครงสร้างข้อมูล
แนวคิดด้านหุ่นยนต์:
- วิธีการทำงานของเซนเซอร์และวิธีเชื่อมต่อกับเซนเซอร์
- การควบคุมแอกชูเอเตอร์และระบบมอเตอร์
- พื้นฐานของระบบอัตโนมัติและการควบคุมแบบป้อนกลับ
ROS (ระบบปฏิบัติการหุ่นยนต์):
- ความเข้าใจระบบการส่งข้อความแบบเผยแพร่/สมัครรับ
- การสร้างโหนดและบริการ
- การทำงานกับไฟล์ launch และเซิร์ฟเวอร์พารามิเตอร์
งานโครงการภาคปฏิบัติ:
- เราร่วมมือกันสร้างบริการ ROS ที่ควบคุมระบบ LED บนหัวของ Triton
- เธอเรียนรู้การเขียนโค้ดที่สะอาด มีเอกสารประกอบ และผสานรวมเข้ากับระบบที่มีอยู่ของเรา
- บริการควบคุม LED ที่เธอสร้างขึ้นกลายเป็นส่วนถาวรของฐานโค้ด Triton
สิ่งที่ทำให้การเป็นพี่เลี้ยงครั้งนี้พิเศษเป็นอย่างยิ่ง คือการได้เห็นพัฒนาการของเธอจากคนที่แทบไม่รู้จักการเขียนโปรแกรมเลย ไปสู่การมีส่วนร่วมเขียนโค้ดที่มีความหมายให้กับโครงการวิจัยที่กำลังดำเนินอยู่ เธอเปลี่ยนจากการถามว่า “ตัวแปรคืออะไร?” ไปสู่การดีบักปัญหาการสื่อสารของ ROS ได้ด้วยตนเอง และเขียนการใช้งานบริการของเธอเองได้
ระบบควบคุม LED ที่เธอพัฒนาขึ้นช่วยให้นักวิจัยสามารถเปลี่ยนสีและรูปแบบของ LED บนหัวของ Triton ได้อย่างง่ายดายผ่านคำสั่ง ROS แบบง่าย ๆ สิ่งนี้อาจฟังดูเรียบง่าย แต่จำเป็นต้องอาศัยความเข้าใจเกี่ยวกับสถาปัตยกรรม ROS การเชื่อมต่อกับฮาร์ดแวร์ และรูปแบบการออกแบบซอฟต์แวร์ที่เหมาะสม ผลงานของเธอยังคงถูกใช้งานอยู่ในห้องปฏิบัติการจนถึงทุกวันนี้
การให้คำปรึกษาครั้งนั้นให้ความรู้แก่ฉันพอ ๆ กับที่ให้แก่เธอ มันบังคับให้ฉันต้องแยกแนวคิดที่ซับซ้อนออกเป็นส่วนย่อย ๆ ที่เข้าใจได้ง่าย และคิดอย่างจริงจังเกี่ยวกับพื้นฐานของสิ่งที่เรากำลังทำอยู่ การสอนคนอื่นทำให้ฉันเป็นวิศวกรและนักวิจัยที่ดีขึ้น
การทำงานร่วมกับงานวิจัยระดับปริญญาเอก
หนึ่งในแง่มุมที่ให้รางวัลทางวิชาชีพมากที่สุดในช่วงเวลาที่ฉันอยู่ในห้องปฏิบัติการ คือการได้ทำงานอย่างใกล้ชิดกับ Peng นักศึกษาปริญญาเอกที่งานวิจัยมุ่งเน้นไปที่อัลกอริทึมสำหรับรถยนต์ขับเคลื่อนอัตโนมัติ การปรับปรุงซอฟต์แวร์ที่ฉันทำให้กับระบบ Triton ช่วยสนับสนุนงานวิจัยระดับปริญญาเอกของเขา
งานวิจัยของ Peng ต้องอาศัยการประสานงานระหว่างหุ่นยนต์หลายตัวที่แม่นยำและเชื่อถือได้ เพื่อจำลองสถานการณ์ของรถยนต์ขับเคลื่อนอัตโนมัติ ก่อนที่ฉันจะปรับปรุงระบบควบคุมการเคลื่อนที่และระบบหุ่นยนต์หลายตัว การทดลองเหล่านี้ดำเนินการได้ยากกว่ามาก หุ่นยนต์เคลื่อนที่ช้ากว่า มีความแม่นยำน้อยกว่า และไม่สามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพเท่าเดิม
ผลงานของฉันช่วยงานวิจัยของ Peng ในหลายด้าน:
การศึกษาการจัดการทางแยก: ด้วยตัวควบคุม PID และการประสานงานระหว่างหุ่นยนต์หลายตัวที่ได้รับการปรับปรุง Peng จึงสามารถจำลองสถานการณ์ทางแยกที่ “ยานพาหนะ” หลายคัน (Triton) จำเป็นต้องประสานการเคลื่อนที่ของตนเองได้ การกำหนดจังหวะเวลาและตำแหน่งที่ดีขึ้นช่วยให้การศึกษาเหล่านี้ดำเนินการได้จริงมากขึ้น
การสื่อสารระหว่างยานพาหนะ: เฟรมเวิร์กการประมวลผลหลายกระบวนการที่ฉันพัฒนาขึ้นทำให้ Peng สามารถนำโพรโทคอลการสื่อสารระหว่างยานพาหนะจำลองไปใช้งานและทดสอบได้ Triton แต่ละตัวสามารถตัดสินใจได้ในขณะที่ยังคงประสานงานกับตัวอื่น ๆ ซึ่งคล้ายกับวิธีการทำงานที่รถยนต์ขับเคลื่อนอัตโนมัติอาจจำเป็นต้องใช้
งานวิจัย SLAM และการทำแผนที่: งานผสานรวมเซนเซอร์วัดความลึกช่วยให้ Peng ได้ข้อมูลเพิ่มเติมสำหรับงานวิจัยด้านการระบุตำแหน่งและการทำแผนที่พร้อมกันของเขา การมีหุ่นยนต์หลายตัวที่มีความสามารถในการตรวจจับและรับรู้ร่วมกันทำให้สามารถทำการทดลองด้านการทำแผนที่ได้อย่างครอบคลุมมากขึ้น
สิ่งที่ทำให้การทำงานร่วมกันของเรามีคุณค่าเป็นพิเศษคือ มันไม่ใช่เพียงการที่ฉันช่วยงานวิจัยของเขา แต่เป็นความร่วมมืออย่างแท้จริง ความเข้าใจของ Peng เกี่ยวกับแง่มุมเชิงทฤษฎีของยานพาหนะอัตโนมัติช่วยให้แนวทางการนำไปใช้งานจริงของฉันมีข้อมูลประกอบ ความคิดเห็นและความต้องการของเขาผลักดันให้ฉันทำให้ระบบมีความแข็งแกร่งและมีความสามารถมากขึ้น
เราใช้เวลาหลายชั่วโมงร่วมกันในห้องปฏิบัติการ แก้ไขข้อบกพร่องของสถานการณ์ต่าง ๆ พูดคุยเกี่ยวกับกลยุทธ์การควบคุมที่แตกต่างกัน และสำรวจว่าแพลตฟอร์ม Triton สามารถทำอะไรได้บ้าง Peng กลายเป็นทั้งเพื่อนร่วมงานและเพื่อน และการทำงานกับเขาสอนฉันมากมายเกี่ยวกับวิธีการทำงานจริงของงานวิจัยเชิงวิชาการ
ระบบที่ฉันสร้างขึ้นกลายเป็นส่วนที่มีประโยชน์ในงานวิทยานิพนธ์ระดับปริญญาเอกของ Peng การได้เห็นผลงานด้านวิศวกรรมเชิงปฏิบัติของฉันสนับสนุนงานวิจัยด้านเทคโนโลยียานพาหนะอัตโนมัติเป็นสิ่งที่เติมเต็มอย่างมาก มันตอกย้ำความสนใจของฉันในเรื่องที่ว่าวิศวกรรมและงานวิจัยที่มีพื้นฐานมั่นคงสามารถทำงานร่วมกันเพื่อสร้างผลลัพธ์ที่มีประโยชน์ได้อย่างไร
แม้หลังจากที่ฉันออกจากห้องปฏิบัติการแล้ว Peng และฉันก็ยังติดต่อกันอยู่ การได้รู้ว่างานของฉันยังคงมีส่วนช่วยในงานวิจัยสำคัญ ๆ แม้หลังจากที่ฉันจากมาแล้ว เป็นสิ่งที่ให้รางวัลอย่างยิ่ง
มุมมอง: ยุคการพัฒนาก่อน LLM
ควรกล่าวไว้ว่า งานทั้งหมดนี้สำเร็จลุล่วงในยุคการพัฒนาซอฟต์แวร์ก่อน LLM ทุกอย่างเกิดขึ้นระหว่างปี 2020 ถึง 2021 (โดยหลักคือปี 2021) ก่อนที่จะมี ChatGPT, Claude, Perplexity หรือเครื่องมือพัฒนาที่ขับเคลื่อนด้วย AI เช่น Cursor IDE
โค้ดทุกบรรทัดเขียนขึ้นใหม่ตั้งแต่ต้น อัลกอริทึมทุกตัวได้รับการศึกษาค้นคว้าผ่านบทความวิชาการและตำราเรียน และทุกครั้งที่แก้ไขข้อบกพร่องต้องใช้วิธีการแบบดั้งเดิม เช่น คำสั่งแสดงผล เครื่องมือดีบัก และการทดสอบอย่างเป็นระบบ เมื่อฉันติดอยู่กับปัญหาการแปลงพิกัดหรือการปรับจูน PID ฉันไม่สามารถขอให้ผู้ช่วย AI อธิบายแนวคิดหรือช่วยดีบักปัญหาได้
สิ่งนี้ทำให้กระบวนการพัฒนาท้าทายขึ้นอย่างมาก แต่ก็ให้ความรู้มากขึ้นเช่นกัน ฉันต้อง:
ค้นคว้าทุกอย่างด้วยตนเอง: การทำความเข้าใจทฤษฎีการควบคุม PID หมายถึงการอ่านตำราเรียนและบทความวิชาการ การทำความเข้าใจการแปลงพิกัดจำเป็นต้องลงมือคำนวณคณิตศาสตร์ด้วยตนเอง ทุกแนวคิดต้องได้รับความเข้าใจอย่างถ่องแท้ก่อนนำไปใช้งาน
ดีบักโดยไม่มีความช่วยเหลือจาก AI: เมื่อหุ่นยนต์เคลื่อนที่ไปในทิศทางที่ไม่คาดคิดหรือแกว่งไปมารอบเป้าหมาย ฉันต้องติดตามตรรกะอย่างเป็นระบบ เพิ่มเอาต์พุตสำหรับการดีบัก และทดสอบสมมติฐานทีละข้อ ไม่มี AI คอยแนะนำปัญหาที่อาจเกิดขึ้นหรือช่วยตีความรูปแบบของข้อผิดพลาด
เรียนรู้จากหลักการพื้นฐาน: หากไม่สามารถถามอย่างรวดเร็วว่า “ฉันจะนำการประมวลผลหลายกระบวนการใน Python มาใช้กับหุ่นยนต์ได้อย่างไร” ฉันก็ต้องทำความเข้าใจแนวคิดเบื้องหลังอย่างลึกซึ้ง สิ่งนี้บังคับให้ฉันสร้างรากฐานที่มั่นคงในด้านการเขียนโปรแกรมพร้อมกัน ระบบควบคุม และคอมพิวเตอร์วิทัศน์
เอกสารประกอบมีความสำคัญอย่างยิ่ง: เนื่องจากฉันไม่สามารถพึ่งพา AI ให้อธิบายโค้ดในภายหลังได้ ฉันจึงต้องเขียนเอกสารประกอบและความคิดเห็นในโค้ดให้ชัดเจนอย่างยิ่ง วินัยนี้พิสูจน์แล้วว่ามีคุณค่าอย่างมากเมื่อถ่ายทอดความรู้ให้ผู้อื่น
เมื่อมองย้อนกลับไป แม้เครื่องมือ AI สมัยใหม่จะช่วยเร่งความเร็วในหลายแง่มุมของการพัฒนาได้ แต่การทำงานโดยไม่มีเครื่องมือเหล่านี้บังคับให้ฉันพัฒนาทักษะการแก้ปัญหาที่ลึกซึ้งยิ่งขึ้นและความเข้าใจระบบเบื้องหลังอย่างละเอียดถี่ถ้วนมากขึ้น เป็นเรื่องน่าทึ่งที่จะคิดว่าโครงการนี้อาจแตกต่างไปเพียงใดหากมีเครื่องมือพัฒนาในปัจจุบันให้ใช้งาน
การตัดสินใจอันยากลำบากที่จะออกจากห้องปฏิบัติการ
แม้ว่าฉันจะชอบการทำงานใน HCR Lab มากเพียงใด แต่เมื่อถึงช่วงปลายปี 2021 ฉันต้องเผชิญกับการตัดสินใจที่ยากลำบากซึ่งนักศึกษาหลายคนต้องพบเจอ นั่นคือการสร้างสมดุลระหว่างโอกาสและความรับผิดชอบหลายด้าน ในเวลาเดียวกัน ฉันทำงานเต็มเวลาในตำแหน่งวิศวกรซอฟต์แวร์ที่ eBay กำลังเรียนจบปริญญาวิทยาการคอมพิวเตอร์ที่ Mines และมีส่วนร่วมในงานวิจัยที่ HCR Lab
โอกาสที่ eBay มีความสำคัญอย่างมาก เพราะเป็นตำแหน่งงานด้านวิศวกรรมซอฟต์แวร์ครั้งใหญ่ครั้งแรกของฉัน มอบประสบการณ์ในอุตสาหกรรมที่ประเมินค่าไม่ได้ และมอบรายได้ที่มั่นคงให้แก่ฉัน อย่างไรก็ตาม การพยายามทำงานเต็มเวลา เรียนให้จบปริญญา และมีส่วนร่วมในงานวิจัยอย่างมีความหมายไปพร้อมกันนั้นไม่ยั่งยืนอย่างแท้จริง จำเป็นต้องมีบางสิ่งที่ต้องยอมเสียสละ
เมื่อฉันปรึกษา Dr. Zhang เกี่ยวกับความเป็นไปได้ในการลดภาระวิชาเรียนเพื่อมุ่งเน้นงานในห้องปฏิบัติการมากขึ้น เขาแนะนำอย่างหนักแน่นว่าไม่ควรทำ เหตุผลของเขามีน้ำหนัก นั่นคือการเรียนให้จบปริญญาควรเป็นสิ่งสำคัญอันดับแรก และประสบการณ์ในอุตสาหกรรมที่ eBay จะมีคุณค่าต่อการพัฒนาอาชีพของฉัน เขามองว่าการถอนตัวจากวิชาเรียนเพื่อมุ่งเน้นงานวิจัย แม้จะเป็นสิ่งที่ล่อตาล่อใจ แต่อาจไม่ใช่การตัดสินใจระยะยาวที่ดีที่สุด
ดังนั้น ในเดือนกันยายน 2021 หลังจากทำงานอย่างเข้มข้นในห้องปฏิบัติการมาประมาณ 8 เดือน ฉันจึงตัดสินใจอย่างยากลำบากที่จะถอยออกจากบทบาทผู้ช่วยวิจัย เพื่อมุ่งเน้นการเรียนให้จบปริญญาและงานที่ eBay เป็นหนึ่งในการตัดสินใจด้านอาชีพที่ยากที่สุดครั้งหนึ่งที่ฉันต้องทำในเวลานั้น
แม้หลังจากออกจากห้องปฏิบัติการอย่างเป็นทางการแล้ว ฉันยังคงให้การสนับสนุนทุกครั้งที่มีใครต้องการความช่วยเหลือเกี่ยวกับระบบที่ฉันสร้างขึ้น ฉันอัปเดตเอกสารประกอบตามความจำเป็น ตอบคำถามเกี่ยวกับการดีบัก และช่วยแก้ไขปัญหาจากระยะไกล ความสัมพันธ์ที่ฉันสร้างขึ้นและความทุ่มเทที่ฉันมีต่อความสำเร็จของโครงการไม่ได้หายไปเพียงเพราะฉันไม่ได้เป็นส่วนหนึ่งของทีมอย่างเป็นทางการอีกต่อไป
การไตร่ตรองและการมองย้อนกลับไป
ขณะนี้ในปี 2025 สี่ปีต่อมา ฉันพบว่าตนเองกำลังไตร่ตรองถึงช่วงเวลานั้นด้วยความรู้สึกที่ซับซ้อน เส้นทางอาชีพของฉันพาฉันเข้าสู่การพัฒนาเว็บและวิศวกรรม AI/ML อย่างลึกซึ้ง ซึ่งเป็นสาขาที่ให้รางวัลอย่างเหลือเชื่อและมอบโอกาสอันยิ่งใหญ่สำหรับการเติบโตและการสร้างผลกระทบ
ถึงกระนั้น ส่วนหนึ่งในใจของฉันก็ยังสงสัยว่า “ถ้าหาก” หุ่นยนต์เคยเป็น และพูดตามตรงว่ายังคงเป็น ความหลงใหลที่แท้จริงของฉัน มีบางอย่างเกี่ยวกับการทำงานกับระบบทางกายภาพ การได้เห็นโค้ดของตนเองแปรเปลี่ยนเป็นการเคลื่อนไหวและพฤติกรรมในโลกจริง ซึ่งการพัฒนาเว็บและแม้แต่งาน AI ก็ไม่อาจทดแทนได้อย่างสมบูรณ์
บางครั้งฉันสงสัยว่าหากฉันเลือกเส้นทางอื่นจะเกิดอะไรขึ้น ฉันจะหาวิธีอยู่ในงานวิจัยด้านหุ่นยนต์ต่อไปได้หรือไม่ ฉันจะเรียนต่อระดับบัณฑิตศึกษาทันทีหลังจากจบปริญญาตรีหรือไม่ ฉันจะเลือกให้ความสำคัญกับงานในห้องปฏิบัติการมากกว่าประสบการณ์ในอุตสาหกรรมหรือไม่
แต่ฉันก็ตระหนักเช่นกันว่าทุกเส้นทางล้วนมีสิ่งที่ต้องแลก ทักษะที่ฉันพัฒนาขึ้นในด้านการพัฒนาเว็บและ AI มีคุณค่าอย่างเหลือเชื่อ ประสบการณ์ในอุตสาหกรรมสอนฉันเกี่ยวกับวิศวกรรมซอฟต์แวร์ในระดับขนาดใหญ่ การออกแบบประสบการณ์ผู้ใช้ และความท้าทายเชิงปฏิบัติในการสร้างผลิตภัณฑ์ที่ผู้คนนับล้านใช้งาน ประสบการณ์เหล่านี้ทำให้ฉันเป็นวิศวกรที่ดีขึ้นโดยรวม
งานที่ฉันทำใน HCR Lab ยังคงมีอิทธิพลต่อวิธีที่ฉันจัดการกับปัญหาในปัจจุบัน การคิดอย่างเป็นระบบที่จำเป็นสำหรับระบบควบคุม PID ปรากฏให้เห็นในวิธีที่ฉันออกแบบวงจรป้อนกลับในระบบซอฟต์แวร์ ทักษะด้านเอกสารประกอบและการเก็บรักษาความรู้ที่ฉันพัฒนาขึ้นมีคุณค่าอย่างยิ่งในทุกบทบาทนับแต่นั้นมา ประสบการณ์การให้คำปรึกษาและการสอนหล่อหลอมวิธีที่ฉันทำงานร่วมกับนักพัฒนารุ่นเยาว์และมีส่วนร่วมในการแบ่งปันความรู้ภายในทีม
สิ่งสำคัญที่สุดคือ ประสบการณ์นี้สอนฉันว่าฉันทำงานได้ดีเมื่อทำงานกับปัญหาทางเทคนิคที่ท้าทายและมีผลกระทบต่อโลกจริง ไม่ว่าจะเป็นการเพิ่มประสิทธิภาพอัลกอริทึมการเคลื่อนที่ของหุ่นยนต์ หรือการสร้างระบบ AI ที่ช่วยให้ผู้ใช้บรรลุเป้าหมาย ความพึงพอใจเกิดจากการแก้ปัญหายาก ๆ ที่มีความสำคัญ
ผลกระทบที่คงอยู่ยาวนาน
เมื่อมองย้อนกลับไปถึงประสบการณ์ใน HCR Lab ฉันรู้สึกทึ่งกับสิ่งที่สามารถทำสำเร็จได้มากมายภายในระยะเวลาที่ค่อนข้างสั้น ระบบที่ฉันสร้างขึ้นเปลี่ยนแปลงวิธีการทำงานของแพลตฟอร์ม Triton ไปโดยพื้นฐาน และการปรับปรุงหลายอย่างในนั้นยังคงถูกใช้งานอยู่จนถึงทุกวันนี้ ที่เก็บเอกสารประกอบที่ฉันสร้างขึ้นกลายเป็นฐานความรู้สำหรับทั้งโครงการ ความสัมพันธ์ด้านการให้คำปรึกษาที่ฉันสร้างขึ้นส่งผลกระทบในระยะยาวต่อผู้คนที่ฉันทำงานด้วย
แต่บางทีสิ่งที่สำคัญที่สุดคือ ประสบการณ์นี้ทำให้ผมเห็นว่าตัวเองสามารถทำอะไรได้บ้างเมื่อทำงานกับปัญหาที่ผมหลงใหลอย่างแท้จริง ตลอดระยะเวลาแปดเดือนนั้น ผมได้:
- ปรับปรุงระบบควบคุมการเคลื่อนที่ของหุ่นยนต์ ซึ่งก่อนหน้านี้เป็นข้อจำกัดของแพลตฟอร์ม
- สร้างระบบประสานงานหุ่นยนต์หลายตัวขึ้นใหม่ตั้งแต่ต้น
- ผสานรวมความสามารถด้านการมองเห็นของคอมพิวเตอร์และการหลอมรวมข้อมูลจากเซนเซอร์
- สร้างระบบเอกสารและการจัดการองค์ความรู้ที่ครอบคลุม
- ให้คำปรึกษาแก่ผู้คนหลายคนและช่วยถ่ายทอดความรู้
- สนับสนุนงานวิจัยระดับปริญญาเอกด้านยานยนต์อัตโนมัติ
อย่างไรก็ตาม เรื่องนี้ไม่ได้มีเพียงความสำเร็จทางเทคนิคเท่านั้น แม้ว่าความสำเร็จเหล่านั้นจะมีความหมายสำหรับผมมากก็ตาม แต่มันเกี่ยวกับการเรียนรู้ว่า ด้วยความมุ่งมั่นและการคิดอย่างเป็นระบบ เราสามารถสร้างผลงานที่เป็นประโยชน์ได้ แม้ในฐานะนักศึกษาระดับปริญญาตรี
อนาคตและหุ่นยนต์
แม้เส้นทางอาชีพของผมจะพาผมไปในทิศทางอื่น แต่ความหลงใหลในหุ่นยนต์ของผมไม่ได้ลดลงเลย ผมยังคงติดตามพัฒนาการในแวดวงนี้ รู้สึกตื่นเต้นกับความก้าวหน้าในการเรียนรู้ของหุ่นยนต์และระบบอัตโนมัติ และบางครั้งก็ทำโครงการหุ่นยนต์ส่วนตัวในเวลาว่าง
ใครจะรู้ว่าอนาคตจะเป็นอย่างไร? ทักษะที่ผมกำลังพัฒนาในด้านปัญญาประดิษฐ์และการเรียนรู้ของเครื่องมีความเกี่ยวข้องกับหุ่นยนต์มากขึ้นเรื่อย ๆ ประสบการณ์ในอุตสาหกรรมที่ผมได้รับสอนให้ผมรู้วิธีสร้างระบบที่แข็งแกร่งและปรับขนาดได้ บางทีอาจมีอนาคตที่เส้นทางประสบการณ์ต่าง ๆ เหล่านี้มาบรรจบกันในรูปแบบที่คาดไม่ถึง
สำหรับตอนนี้ ผมรู้สึกขอบคุณช่วงเวลาที่ได้ใช้ใน HCR Lab และประสบการณ์ต่าง ๆ ที่ได้รับ ช่วงเวลานั้นเป็นช่วงเวลาสำคัญที่หล่อหลอมทั้งทักษะทางเทคนิคของผมและความเข้าใจว่าผมรู้สึกเติมเต็มที่สุดกับงานประเภทใด แม้ว่าบางครั้งผมจะคิดถึงช่วงเวลานั้น แต่ผมรู้ว่าบทเรียนที่ได้เรียนรู้และแนวทางที่พัฒนาขึ้นยังคงมีอิทธิพลต่อทุกสิ่งที่ผมทำ
หุ่นยนต์ Triton ยังคงอยู่ที่นั่น ยังคงให้บริการนักวิจัย และยังคงทำให้งานสำคัญต่าง ๆ เกิดขึ้นได้ และนั่นช่างยอดเยี่ยมจริง ๆ

















