ชื่อโปรเจกต์: หุ่นยนต์ติดตามเส้นอัตโนมัติด้วย Seeed Shield Bot 1.2 และ ARTe
หุ่นยนต์แบบเรียลไทม์: เหนือกว่าลูปมาตรฐาน
การเขียนโปรแกรม Arduino แบบดั้งเดิมอาศัยฟังก์ชัน loop() เพียงฟังก์ชันเดียว เมื่อสร้างหุ่นยนต์ที่ต้องอ่านค่าจากเซ็นเซอร์ห้าตัว ขับเคลื่อนมอเตอร์สองตัว และรับคำสั่ง Serial พร้อมกัน วิธีการแบบ "ทีละอย่าง" นี้อาจทำให้การเคลื่อนไหวกระตุกและพลาดการอัปเดตเส้นทางได้ โปรเจกต์นี้ใช้ Shield Bot 1.2 และ ARTe (Arduino Real-Time eXtension) เพื่อใช้งานระบบ Multithreaded Navigation ที่ซับซ้อนบน Arduino Due
ขีดความสามารถ Multi-Tasking ของ ARTe
ARTe พัฒนาโดย ReTiS Lab และเปลี่ยน Arduino Due ให้เป็นสภาพแวดล้อมการทำงานแบบเรียลไทม์
- การจัดกำหนดการแบบ Preemptive: แตกต่างจากลูปมาตรฐานที่ทุกงานต้องรอให้งานก่อนหน้าเสร็จสิ้น ARTe อนุญาตให้งานที่มีลำดับความสำคัญสูง (เช่น การแก้ไขเส้นทาง) "Preempt" หรือขัดจังหวะงานที่มีลำดับความสำคัญต่ำกว่า (เช่น การบันทึกข้อมูล Serial) ได้
- ลูปที่ทำงานพร้อมกัน: หุ่นยนต์ตัวนี้รันหลายลูปด้วยอัตราที่แตกต่างกัน ตัวอย่างเช่น IR Sensor Loop อาจทำงานทุก 10ms เพื่อให้แน่ใจว่าจะไม่พลาดเส้น ในขณะที่ Telemetry Loop ทำงานทุก 500ms เพื่อส่งสถานะแบตเตอรี่ไปยังคอมพิวเตอร์
- การซิงโครไนซ์: ARTe มีกลไกในการแบ่งปันข้อมูลระหว่างลูปเหล่านี้ได้อย่างปลอดภัย ทำให้มั่นใจได้ว่างานควบคุม Motor มีข้อมูลเซ็นเซอร์ล่าสุดอยู่เสมอโดยไม่ก่อให้เกิด "Race Conditions"
ฮาร์ดแวร์: Shield Bot 1.2 Rover
Shield Bot 1.2 เป็นแพลตฟอร์มหุ่นยนต์ขนาดกะทัดรัดแบบรวมที่ออกแบบมาสำหรับระบบนิเวศของ Arduino:
- เซ็นเซอร์ IR Reflectance 5 ตัว: การตรวจจับเส้นทำได้โดยใช้อาร์เรย์เซ็นเซอร์ห้าตัว สิ่งนี้ช่วยให้หุ่นยนต์ไม่เพียงแค่เห็น "Line" หรือ "No Line" แต่ยังสามารถคำนวณ Error Offset ได้อีกด้วย หากเซ็นเซอร์ซ้ายสุดเพียงตัวเดียวเห็นเส้น หุ่นยนต์จะรู้ว่าต้องเลี้ยวซ้ายอย่างรวดเร็ว
- Motor Driver แบบรวม: Shield Bot ช่วยลดความยุ่งเหยิงของการเดินสายไฟด้วยการรวมวงจร H-Bridge เข้ากับ PCB โดยตรง ทำให้ Arduino Due สามารถควบคุมความเร็วและทิศทางของมอเตอร์ผ่านขา Digital อย่างง่ายดาย
- พลังของ Arduino Due: ด้วยการใช้ Due (ARM Cortex-M3) โปรเจกต์นี้ได้รับพลังการประมวลผลและหน่วยความจำที่สูงขึ้นอย่างมากเมื่อเทียบกับ Uno ซึ่งจำเป็นสำหรับการจัดการค่าใช้จ่ายเพิ่มเติมของ OS แบบเรียลไทม์อย่าง ARTe
โหมดควบคุมด้วยตนเองและโหมดอัตโนมัติ
การใช้งานซอฟต์แวร์ประกอบด้วยสวิตช์ควบคุมสองโหมด:
- การติดตามเส้นทางอัตโนมัติ: โหมดหลักที่ ARTe scheduler จัดการลูป feedback จากเซ็นเซอร์ไปยังมอเตอร์เพื่อติดตามเส้นทางบนพื้นด้วยความแม่นยำสูง
- โหมดคำสั่ง Serial: การควบคุมด้วยตนเองนี้ช่วยให้ผู้ใช้สามารถส่งคำสั่งทิศทางผ่าน Serial Monitor ได้ ด้วยความสามารถของ multitasking ทำให้หุ่นยนต์สามารถรักษา "Safety Sensors" ไว้ได้แม้ในขณะที่ถูกขับเคลื่อนด้วยตนเอง เพื่อป้องกันการชนหากผู้ใช้ขับออกนอกเส้นทาง
เป้าหมายของโปรเจกต์นี้คือการสร้าง rover ที่สามารถติดตามเส้นทางที่วาดบนพื้นได้ด้วยตนเอง การระบุเส้นทางทำได้โดยเซ็นเซอร์ทั้งห้าตัวที่รวมอยู่ใน Shield Bot 1.2 rover นอกจากนี้ ยังมีการนำโหมดควบคุมด้วยตนเองมาใช้ เพื่อขับเคลื่อนตามคำสั่งของผู้ใช้ที่ได้รับผ่าน Serial line
โปรเจกต์นี้ได้รับการพัฒนาโดยใช้ ARTe Arduino Real-Time extension จาก ReTiS Lab, Scuola Superiore Sant'Anna Pisa ARTe เป็นส่วนเสริมของ Arduino framework ที่รองรับ multitasking และ real-time preemptive scheduling ด้วย ARTe ผู้ใช้สามารถกำหนดและรัน concurrent loops หลายรายการด้วยอัตราที่แตกต่างกันได้อย่างง่ายดาย นอกเหนือจากรอบการทำงานแบบ single execution cycle ที่จัดหาโดย standard Arduino framework ARTe ได้รับการพัฒนาเพื่อรองรับ concurrent real-time periodic activities โดยยังคงรักษาความเรียบง่ายของ programming paradigm ที่เป็นแบบฉบับของ Arduino framework ไว้ ข้อมูลเพิ่มเติมเกี่ยวกับ ARTe สามารถดูได้ที่ ARTe Website หรือใน Getting Started with ARTe project.