หุ่นยนต์เคลื่อนที่ไปตามเส้นดำ

หุ่นยนต์และมนุษย์มีหลักการทำงานที่เหมือนกัน คือ หน่วยรับข้อมูลเข้า (Input Unit) หน่วยประมวลผล (Process Unit) และหน่วยแสดงผล (Output Unit) ดังนั้นการที่หุ่นยนต์จะเคลื่อนที่ไปให้ตรงเป้าหมาย หุ่นยนต์จะต้องมีอุปกรณ์ที่จะตรวจสอบตำแหน่งและส่งข้อมูลที่ได้ไปยังหน่วยประมวลผล เพื่อให้มอเตอร์ทำการแสดงผลโดยการไปยังเป้าหมายต่อไป อุปกรณ์พื้นฐานที่ใช้ในการตรวจสอบตำแหน่งนั้น คือ เซนเซอร์แสง (Light Sensor)

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

การเดินตามเส้นของหุ่นยนต์ โดยใช้เซนเซอร์ 1 ตัวมีวิธีการว่า เราจะต้องให้หุ่นยนต์ตรวจสอบเส้นดำเป็นช่วงๆ เพื่อไม่ให้หลุดจากเส้นดำที่กำหนด การตรวจสอบเส้นดำเป็นช่วงๆ มีวิธีการดังภาพ

ภาพแสดงรูปแบบการเคลื่อนที่ของหุ่นยนต์เมื่อใช้ 1เซนเซอร์

วิธีการทำงานมีขั้นตอนดังนี้
1. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีดำ หุ่นยนต์จะเลี้ยวออกออกจากเส้นดำ
2. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีขาว (ไม่ใช่สีดำ) หุ่นยนต์เคลื่อนที่กลับไปหาเส้นดำ
ภาพแสดงการแบ่งค่าแสงของเซนเซอร์ออกเป็น 2 ส่วนสัมพันธ์กับการเคลื่อนที่ของหุ่นยนต์




ตัวอย่างโปรแกรม



เมื่อนำโปรแกรมไปใช้จริงจะต้องปรับแต่งอีกครั้งดังนี้
1. ค่าแสงที่จะนำมาใช้เปรียบเทียบ (ค่าของตัวแปร Light) ซึ่งจะต้องหาค่าใหม่อีกครั้งตามสภาพแวดล้อมที่เปลี่ยนไป
2. อัตราส่วนความเร็วของมอเตอร์ B และมอเตอร์ A มีผลทำให้การเคลื่อนที่ของหุ่นยนต์ส่ายไปมา จนอาจจะทำให้หุ่นยนต์หลุดจากเส้นได้



ภาพแสดงการเลี้ยวของหุ่นยนต์ที่สัมพันธ์กับความเร็ว A มาก, B ปานกลางและ C น้อย
การเคลื่อนที่ไปตามเส้นของหุ่นยนต์ที่กล่าวมาข้างต้นประสิทธิภาพยังไม่ดีนัก หุ่นยนต์สามารถเคลื่อนที่ไปบนเส้นตรงได้ดี แต่อาจจะส่ายไปมาหรืออาจจะทำให้หุ่นยนต์หลุดจากเส้นได้ในกรณีที่มีเส้นโค้ง เพราะเซนเซอร์แสงจะตรวจสอบได้เฉพาะสีขาวและสีดำเท่านั้น ดังนั้นเพื่อให้การเคลื่อนที่ไปบนเส้นตรงได้ดีและมีประสิทธิภาพ ไม่ว่าจะเป็นเส้นตรงหรือเส้นโค้ง จึงแบ่งค่าการอ่านค่าแสงออกเพิ่มขึ้นเป็น 3 ส่วน ได้แก่ สีขาว สีเทาและสีดำ ดังภาพ

ภาพแสดงการแบ่งค่าแสงของเซนเซอร์ออกเป็น 3 ส่วนสัมพันธ์กับการเคลื่อนที่ของหุ่นยนต์

วิธีการทำงานมีขั้นตอนดังนี้
1. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีดำ หุ่นยนต์จะเลี้ยวออกออกจากเส้นดำ
2. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีเทา หุ่นยนต์เคลื่อนที่ไปข้างหน้า
3. เมื่อเซ็นเซอร์แสงวัดค่าแสงได้สีขาว หุ่นยนต์เคลื่อนที่กลับไปหาเส้นดำ

การเคลื่อนที่ของหุ่นยนต์ที่ได้จากการจากการแบ่งค่าแสงออกเป็น 3 ส่วน คือ จะทำให้หุ่นยนต์เคลื่อนที่ได้นุ่มนวล ส่ายไปมาน้อยลง เกาะติดเส้นไปตลอดการเคลื่อนที่




ตัวอย่างโปรแกรม



เมื่อนำโปรแกรมไปใช้จริงจะต้องปรับแต่งอีกครั้งดังนี้
1. ค่าแสงที่จะนำมาใช้เปรียบเทียบทั้ง 2 ค่า จะต้องหาค่าใหม่อีกครั้งตามสภาพแวดล้อมที่เปลี่ยนไป หรือช่วงความห่างของค่าทั้ง 2 ค่า หากมีช่วงห่างกันมากก็จะทำให้การตรวจพบเส้นดำช้า อาจเป็นสาเหตุให้เกิดการหลุดจากเส้นดำได้
2. อัตราส่วนความเร็วของมอเตอร์ B และมอเตอร์ A ในการเลี้ยวขวาและเลี้ยวซ้าย ซึ่งพบว่า ถ้ามีอัตราส่วนต่างกันมากก็จะมีผลทำให้การเคลื่อนที่ของหุ่นยนต์ส่ายไปมาน้อยลง เคลื่อนที่ได้เรียบและนุ่มนวลมากขึ้น
          การแบ่งช่วงของค่าแสงออกเป็นช่วงๆ ยิ่งมีช่วงมาก ก็จะทำให้การควบคุมหุ่นยนต์ให้เคลื่อนที่ไปตามเส้นดำที่กำหนดจนถึงเป้าหมาย นอกจากวิธีการแบ่งช่วงค่าแสงแล้วการเพิ่มจำนวนของเซนเซอร์แสงก็เป็นอีกวิธีหนึ่งที่ทำให้ควบคุมหุ่นยนต์เคลื่อนที่ให้เกิดประสิทธิภาพมากยิ่งขึ้น


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

 


เอกสารอ้างอิง
Jim Sluka. (2009). A PID Controller For Lego Mindstorms Robots. ค้นเมื่อวันที่ 30 พฤศจิกายน 2555. จาก http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindstorms_Robots.html
Martha N. Cyr. (2002). LEGO MindStorms for School Using ROBOLAB. Massachusetts: [n.p.].