การจัดการ Kinematic สำหรับระบบขับเคลื่อนแบบ Differential Drive
การที่น้องต้องไปเขียน Code สั่งงาน H-bridge ตัวหนักๆ เพื่อคุมล้อโดรนพื้นดินแบบ 4 ล้อ หรือ 6 ล้อด้วยตัวเองเนี่ย บอกเลยว่าถ้าเขียนแบบบ้านๆ Logic มันจะรกและซับซ้อนจนทำให้เครื่องอืดกินแรง CPU เปล่าๆ เจ้า Navigation-Master เลยเกิดมาเพื่อเป็น Layer แบบ Object-Oriented C++ ที่จะช่วยรวบตึงพวกค่า PWM ดิบๆ กับการสลับ Logic ทิศทางแบบ Bitwise ให้ไปอยู่ใน Class ที่จัดการง่าย ไม่ปวดหัว
พอน้องยกภาระเรื่องการคำนวณเลขคณิตพวกแรงบิดหลายเพลา มาทำให้เป็นคำสั่งระดับ High-level เท่ๆ อย่าง Turn(Right) หรือ Drive(Speed, Distance) คราวนี้น้องก็จะมีเวลาไปโฟกัสกับการทำ Sensor Amalgamation (การรวมข้อมูลเซนเซอร์) ให้ระบบมันฉลาดขึ้น แทนที่จะมานั่งงมเรื่องขีดจำกัดการหมุนล้อให้เสียเวลา จัดไปวัยรุ่น!
ขั้นตอนการตั้งค่าและการเรียกใช้งาน (Configuration Protocol & Instantiation)
1. ขั้นตอนรวมร่าง Source Tree:
พื้นฐานที่ต้องเป๊ะคือ น้องต้องเอาไฟล์ Header (.h) และไฟล์ Source mappings (.cpp) ยัดเข้าไปในตัว IDE ที่ใช้งานอยู่ แล้วสั่ง Compile พวก Node เหล่านี้ไว้ใน Directory ที่ชื่อว่า Move โดยวางขนานไปกับพวก Library มาตรฐานของระบบ เช็คชื่อ Namespace ให้ตรงกันด้วยนะวัยรุ่น! เพราะถ้าชื่อ Folder กับ Syntax ของ Class ใน C++ มันไม่ซิงค์กัน Pre-compiler มันจะดีด Dependency ทิ้งทั้งยวง แล้วน้องจะเจอ Error "undefined module" ตอน Link งาน... เตือนแล้วนะ!
2. ขั้นตอนปลุกวิญญาณ Module:
เปิด Serial Monitor ขึ้นมาให้พร้อม แล้วจัดการ Upload ไฟล์ตัวอย่าง Navigation-master.ino ลงไปเพื่อ Test ได้เลย จากนั้นก็เช็คพวกค่า PWM ของแต่ละ Logic Block ให้เรียบร้อยว่าทำงานเนียนหรือเปล่า
การพัฒนาสาย OOP ขั้นสูง
สำหรับน้องคนไหนที่อยากจะอัพเกรดเป็นวิศวกรสายเทพ อยากดีไซน์ Class เป็นของตัวเอง หรืออยากจะล้วงตับการจัดการ Memory ขั้นสูงสำหรับ Logic ของ Atmel ให้ลึกถึงกึ๋น ลองไปศึกษาต่อในบันทึกทางเทคนิคของพี่ได้เลย (ลบลิงก์ภายนอกออกตามระเบียบ)