ภาพรวมโปรเจค
"Otto-Link" นี่แหละคือการศึกษาอย่างเจาะลึกในเรื่อง การวิเคราะห์การเดินสองขา (Bipedal Gait Forensics) และ การวินิจฉัยด้วยระบบสื่อสารอินฟราเรด (Infrared Telemetry Diagnostics) เอามาจากโครงสร้างโอเพ่นซอร์ส Otto DIY นี่แหละ แต่พี่อัพเกรดมันด้วยการสร้างระบบสั่งการแบบไมโครคอนโทรลเลอร์คู่เฉพาะกิจขึ้นมา แยกส่วนรับคำสั่ง (จอยสติ๊ก) ออกจากตัวปฏิบัติการ (หุ่นยนต์) ซะเลย ทำให้ Otto-Link จำลองการทำงานของระบบควบคุมไร้สายระดับมืออาชีพได้เลย โปรเจคนี้จะพาน้องไปสำรวจความซับซ้อนของการประสานงาน ที่เปลี่ยนการหมุนเซอร์โวธรรมดาๆ ให้กลายเป็นท่าทางการเดินที่มั่นคงและเป็นจังหวะได้
บทนำ
ในรายงานนี้เราจะอธิบายการทำงานของหุ่นยนต์สองขาที่ขับเคลื่อนโดยไมโครคอนโทรลเลอร์และควบคุมด้วยรีโมท ซึ่งสามารถเดินและหมุนตัวได้
เป้าหมาย
เครื่องจักรและโปรเจคต้องมีคุณสมบัติตามนี้: • ใช้บอร์ดไมโครคอนโทรลเลอร์ Arduino (UNO, Leonardo, 101); • ต้องใช้เซ็นเซอร์อินพุตอย่างน้อย 1 ตัว; • สร้างเอาต์พุตที่เชื่อมต่อกับโลกจริงอย่างน้อย 1 อย่าง ซึ่งอาจเป็นแบบภาพ (LED, หน้าจอ) หรือแบบกายภาพ (มอเตอร์ที่เคลื่อนไหว); • ใช้อุปกรณ์ที่ไม่ได้สอนในห้องเรียนอย่างน้อย 1 ชิ้น อาจเป็นเซ็นเซอร์หรือมอเตอร์พร้อมบอร์ดขับ
โปรเจคที่เราตัดสินใจสร้างคือหุ่นยนต์ของเล่นสองขา (เอาโปรเจคโอเพ่นซอร์ส "Otto DIY" มาเป็นตัวอย่าง) ที่สามารถเดินและหมุนตัวได้โดยใช้บอร์ด Arduino ซึ่งถูกควบคุมด้วยสัญญาณอินฟราเรดที่ส่งมาจากบอร์ด Arduino อีกอัน (ที่จะทำหน้าที่เป็นรีโมทคอนโทรล)
วัสดุที่ใช้
ชิ้นส่วนที่จำเป็นสำหรับการสร้างโปรเจคมีดังนี้:
- ไมโครคอนโทรลเลอร์ 2 ตัว (Arduino UNO, Elegoo Nano);
- มิโครเซอร์โว SG90 4 ตัว;
- LED อินฟราเรด;
- ตัวรับสัญญาณอินฟราเรด VS1838B;
- โมดูลจอยสติ๊ก;
- ตัวต้านทาน 100Ω;
- บอร์ดขยายสำหรับ Arduino nano;
- สายจัมเปอร์;
- ชิ้นส่วน PLA (ได้จากการพิมพ์ 3D)
ไฟล์แบบร่าง 3D ของชิ้นส่วนที่พิมพ์นั้นดาวน์โหลดมาจากเว็บไซต์ “Thingiverse” เนื่องจาก “Otto DIY” เป็นโปรเจคโอเพ่นซอร์ส เซอร์โวและตัวรับสัญญาณอินฟราเรดไม่ต้องใช้ตัวต้านทานเพิ่ม เพราะมีอยู่ในตัวอุปกรณ์แล้ว เพื่อให้การเดินสายไฟในตัวหุ่นยนต์ง่ายขึ้น เราจึงติดตั้ง Elegoo Nano ไว้บนบอร์ดขยาย
ลงลึกเทคนิคและหลักการทำงาน
หุ่นยนต์สองขาตัวนี้เราใช้ไมโครคอนโทรลเลอร์ 2 ตัวนะน้อง ตัวแรกคือบอร์ด Elegoo Nano ที่ต่อกับโมดูลจอยสติกและ LED อินฟราเรด ทำหน้าที่เป็นรีโมทคอนโทรล: มันจะคำนวณตำแหน่งของจอยสติกเพื่อให้รู้ว่าหุ่นต้องไปทางไหน (แล้วก็จะส่งรหัสคำสั่งที่ถูกต้องออกไป) ไมโครคอนโทรลเลอร์ตัวที่สองคือ "สมอง" ของหุ่นยนต์: มันจะควบคุมการเคลื่อนที่ของเซอร์โวทั้ง 4 ตัว ตามสัญญาณอินฟราเรดที่ได้รับจากเซนเซอร์
- กลไกการเคลื่อนที่ของหุ่นสองขา (Mechatronic Bipedal Kinematics):
- แกะรอยจังหวะการก้าว (Gait-Cycle Forensics): หุ่นยนต์ใช้เซอร์โวขนาดเล็ก SG90 จำนวน 4 ตัวเพื่อให้เคลื่อนที่ได้ เซอร์โวสองตัวควบคุม "สะโพก" (การเคลื่อนที่ด้านข้าง) และอีกสองตัวควบคุม "ข้อเท้า" (การเอียงและทรงตัว) การเคลื่อนไหวต้องมีการเลื่อนเฟส (phase-shifting) ที่แม่นยำ: การ "ก้าว" หนึ่งครั้งทำได้โดยการเอียงจุดศูนย์ถ่วง (CoG) ไปที่เท้าหนึ่ง ในขณะที่สะโพกของขาอีกข้างหมุนไปข้างหน้า
- การวินิจฉัยสมดุลแบบวนซ้ำ (Iterative Balance Diagnostics): ความมั่นคงของหุ่นรักษาไว้ได้ผ่านชุดของ "เส้นโค้งสมดุล" ที่โปรแกรมไว้ล่วงหน้า เฟิร์มแวร์จะคำนวณมุมเซอร์โวที่ต้องการ $(q_1, q_2, q_3, q_4)$ เพื่อให้แน่ใจว่าแกนแนวตั้งของหุ่นยนต์ยังคงอยู่ภายในพื้นที่รับน้ำหนักของขาที่กำลังยันอยู่ ป้องกันไม่ให้หุ่นล้มคว่ำระหว่างเดิน
- แกะรอยคำสั่งโปรโตคอลอินฟราเรด (IR-Protocol command Forensics):
- การจับมือกันของโปรโตคอล NEC (NEC Protocol Handshaking): รีโมทคอนโทรล (Arduino Uno) จะเข้ารหัสทิศทางจากจอยสติกเป็นเฟรมข้อมูลดิจิทัลอินฟราเรด พัลส์เหล่านี้จะถูกส่งผ่านคลื่นพาหะความถี่ 38kHz กระบวนการแกะรอยเกี่ยวข้องกับตัวรับสัญญาณ VS1838B ที่จะถอดรหัสพัลส์ที่ถูกมอดูเลตด้วยความกว้างพัลส์ (PWM) เหล่านี้กลับมาเป็นรหัสคำสั่งฐานสิบหก (เช่น
0xFF30CFสำหรับคำสั่ง "เดินหน้า") - ความสมบูรณ์ของสัญญาณ (Signal Integrity Harmonics): เพื่อป้องกันข้อมูลเสียหายจากสัญญาณรบกวนอินฟราเรดในสิ่งแวดล้อม ระบบนี้ใช้ตรรกะการตรวจสอบความถูกต้อง หุ่นยนต์จะเปลี่ยนจังหวะการเดินก็ต่อเมื่อรหัสที่ได้รับตรงกับบิตแมสก์ที่กำหนดไว้ล่วงหน้าเท่านั้น เพื่อให้แน่ใจว่าหุ่นจะตอบสนองต่อการควบคุมของเราได้อย่างแม่นยำ
- การจับมือกันของโปรโตคอล NEC (NEC Protocol Handshaking): รีโมทคอนโทรล (Arduino Uno) จะเข้ารหัสทิศทางจากจอยสติกเป็นเฟรมข้อมูลดิจิทัลอินฟราเรด พัลส์เหล่านี้จะถูกส่งผ่านคลื่นพาหะความถี่ 38kHz กระบวนการแกะรอยเกี่ยวข้องกับตัวรับสัญญาณ VS1838B ที่จะถอดรหัสพัลส์ที่ถูกมอดูเลตด้วยความกว้างพัลส์ (PWM) เหล่านี้กลับมาเป็นรหัสคำสั่งฐานสิบหก (เช่น
วิศวกรรมและการนำไปใช้
- การประสานงานของโหนดคู่ (Dual-Node Orchestration):
- โหนดตัวส่ง (The Emitter Node): Arduino Uno จะตรวจสอบแรงดันจากโพเทนชิโอมิเตอร์ในจอยสติก ค่าแอนะล็อกเหล่านี้จะถูกแบ่งออกเป็นเซกเตอร์ของทิศทาง ซึ่งจะไปกระตุ้นลูปการส่งสัญญาณ IR
- โหนดตัวปฏิบัติการ (The Executor Node): Arduino Nano (ซึ่งติดตั้งบนบอร์ดขยายเพื่อการส่งสัญญาณที่มีอิมพีแดนซ์ต่ำ) ทำหน้าที่เป็น "สมอง" มันจัดการบัสเซอร์โวกำลังสูง โดยใช้รูทีนที่ขับเคลื่อนด้วยอินเตอร์รัปต์เพื่ออ่านค่าจากตัวรับ IR ในขณะที่ยังคงสร้างพัลส์ PWM ที่ราบรื่นซึ่งจำเป็นสำหรับการเดินที่ไม่มีอาการสั่น (jitter)
- การวิเคราะห์โครงสร้าง (Structural Forensics):
- การวินิจฉัยการรับน้ำหนักของ PLA (PLA Load-Bearing Diagnostics): โครงหุ่นที่พิมพ์ 3D ให้ความแข็งแรงเชิงโครงสร้างที่จำเป็นสำหรับความมั่นคงของหุ่นสองขา การทดสอบภาคสนามชี้ให้เห็นว่าความคลาดเคลื่อนในการติดตั้งเซอร์โวต้องอยู่ภายใน 0.1 มม. เพื่อหลีกเลี่ยงการผิดแนวในแกนการเดิน ซึ่งไม่อย่างนั้นจะทำให้หุ่นเดินเอียงได้
การทำงานของอุปกรณ์ทั้งสองอธิบายได้ด้วยผังงานต่อไปนี้จัดไปวัยรุ่น
สรุปงาน
โปรเจกต์นี้สอนให้เรารู้จักแก้ปัญหาต่างๆ มากมาย (ตัวอย่างเช่น บอร์ด Elegoo nano ที่ไม่มีขาเชื่อมต่อในตัว ทำให้เราต้องบัดกรีขาทุกขาเองถึงจะใช้งานได้) นอกจากนั้น เรายังได้เรียนรู้การทำงานกับอุปกรณ์และเทคโนโลยีใหม่ๆ ที่ไม่เคยเรียนมาก่อน ซึ่งนี่แหละคือเป้าหมายหลักของแบบฝึกหัดนี้
Otto-Link แสดงให้เห็นถึงการผสานกันอย่างลงตัวของ Optical Telemetry และ Kinematic Control ด้วยการเชี่ยวชาญ IR-Protocol Forensics และ Mechatronic Gait Harmonics ทำให้เราสร้างหุ่นยนต์สองขาที่โต้ตอบได้อย่างมั่นคง ซึ่งพิสูจน์ให้เห็นถึงความยืดหยุ่นของระบบโอเพ่นซอร์ส Otto ในบริบททางการศึกษาและวิศวกรรมขั้นสูง
Kinetic Balance: Mastering bipedal kinematics through infrared forensics.