3. แกนและทิศทาง Roll Pitch Yaw
ภาษากลางที่ใช้บอกว่าโดรนเอียงหรือหมุนไปทางไหน และทิศในโค้ดของชมรม
เวลาพูดถึงโดรน คนมักปะปนระหว่าง "ไปทางซ้าย" กับ "เอียงซ้าย" หน้านี้ตกลงภาษากลางให้ตรงกัน เพราะคำสั่งในโค้ดและกติกาจะใช้ทั้งสองแบบ
สามแกนของโดรน
| ชื่อ | หมุนรอบแกน | หน้าตา | ผลที่ตามมา |
|---|---|---|---|
| Yaw | แกนตั้ง | หมุนหัวซ้าย–ขวา เหมือนส่ายหน้า | ทิศที่หันหัวเปลี่ยน ไม่เคลื่อนที่ |
| Pitch | แกนซ้าย–ขวา | ก้มหัวหรือเงยหัว เหมือนพยักหน้า | เคลื่อนไปหน้า/หลัง |
| Roll | แกนหน้า–หลัง | เอียงข้าง เหมือนเอียงคอ | เคลื่อนไปซ้าย/ขวา |
จำง่ายๆ: Pitch และ Roll เปลี่ยนการเอียง ทำให้โดรนเคลื่อนที่ ส่วน Yaw เปลี่ยนแค่ทิศหัว ไม่ได้ทำให้ตำแหน่งเปลี่ยน
เคลื่อนที่ vs เอียง
| ต้องการ | โดรนทำ | ในโค้ดชมรม |
|---|---|---|
| ไปข้างหน้า | ก้มหัว (Pitch ลง) | fw(cm) |
| ถอยหลัง | เงยหัว (Pitch ขึ้น) | bw(cm) |
| ไปทางซ้าย | เอียงซ้าย (Roll ซ้าย) | ml(cm) |
| ไปทางขวา | เอียงขวา (Roll ขวา) | mr(cm) |
| ขึ้น/ลง | เพิ่ม/ลดรอบทั้ง 4 | sh(z) |
| หันหัว | Yaw | set_yaw(...) |
ที่สำคัญ: ทิศ "หน้า ซ้าย ขวา" ของโค้ดคิดจากหัวโดรนหันไปทางไหนตอนนั้น ไม่ได้คิดจากสนาม ถ้าหมุนหัวโดรน 180° แล้วสั่ง fw(100) มันจะบินไปทางตรงข้ามกับก่อนหมุน เรื่องนี้สำคัญมากเวลาวางเส้นทาง (ดู วางแผนภารกิจ)
ระบบพิกัดที่เว็บนี้ใช้
เมื่อวาดสนามและตัวจำลอง เว็บใช้ระบบเดียวกับแผนที่ทั่วไป
- ตัวจำลองและแผนผังสนาม: x ไปทางขวา y ไปทางหน้า (เหนือ) หน่วยเป็นเซนติเมตร จุด (0, 0) คือแท่น Takeoff กลางสนาม
- ความสูง z วัดที่ ตัวโดรน จากพื้น
ในคำสั่ง set_pos(x, y) ของ pArduino ค่า x, y เป็นจำนวนเต็ม 16 บิต (ดู API) แต่ชมรมแทบไม่ใช้ เพราะไม่มีเซ็นเซอร์วัดตำแหน่งสัมบูรณ์ ใช้แบบ "เคลื่อนที่ไปตามเวลา" แทน
ทิศการหมุนที่ใช้ในโค้ด
คำสั่ง set_direction(dir, speed) ใช้เลขแทนทิศ (ละเอียดที่ pArduino API)
dir | ความหมาย |
|---|---|
| 1 | ไปข้างหน้า |
| 2 | ถอยหลัง |
| 3 | ไปทางซ้าย |
| 4 | ไปทางขวา |
| 5 | ขึ้น |
| 6 | ลง |
| 7 | ล็อกตำแหน่ง (poshold) |
ที่มา: move_forward_cm ใช้ set_direction(1, …) move_backward_cm ใช้ 2 move_left_cm ใช้ 3 move_right_cm ใช้ 4 up() ใช้ 5 down() ใช้ 6 และ poshold() ใช้ 7 ในไฟล์ protocol.cpp
ลองทำ
- วางกล่องบนโต๊ะแทนโดรน ทำท่า yaw 90° ตามเข็ม แล้วบอกว่า "ไปข้างหน้า" ตอนนี้ชี้ไปทางไหนของห้อง
- โดรนหันหัวไปทางประตู สั่ง
ml(100)แล้วfw(100)ตำแหน่งสุดท้ายเทียบกับจุดเริ่มคืออะไร (ซ้ายของโดรน 100 ซม. แล้วไปหน้าอีก 100 ซม. ตามทิศที่โดรนหันอยู่) - หมุนหัว 180° แล้วสั่งชุดเดิม ตำแหน่งสุดท้ายเปลี่ยนยังไง