มุมต่อเนื่องและอัตราหมุน: อ่าน Log ที่ข้ามขอบ

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

เริ่มตัวอย่างมุมตามเวลา · กลับบทมุมข้าม ±180°

อ่านต่อ บทกรองมุมให้เรียบกับความหน่วง เพื่อฝึกค่าเฉลี่ยสามจุดและแยกเวลาพร้อมใช้

วัตถุประสงค์และพื้นฐานที่ใช้

ฝึกอ่านมุมที่เปลี่ยนจาก 179° เป็น −179° โดยไม่ตีความการเปลี่ยนตัวเลขเป็นการหมุน −358° และหาอัตราหมุนเฉลี่ยจากช่วงเวลาของ sample จริง ใช้เครื่องคิดเลข PC หรือกระดาษ ไม่ต้องมีบอร์ด อ่าน ผลต่างมุมแบบเส้นทางสั้น ก่อนทำ

ภาพเสมือนจริงต้นบทสร้างด้วย AI แสดงวงล้อและกระดาษต่อเนื่องเป็นสื่อแนวคิด ไม่ใช่อุปกรณ์วัดหรือผล Log จริง โจทย์ทั้งหมดเป็นตัวเลขสมมติ หนึ่งแกน ไม่มีมุมจริงสำหรับตรวจความแม่นยำ ไม่มีการรันเฟิร์มแวร์หรือทดลอง IMU

Normalize กับ Unwrap เก็บคนละความหมาย

normalize ใช้ สูตร wrap เดิม เพื่อแสดงมุมใน [−180°, 180°) จึงไม่เก็บจำนวนรอบ ส่วน unwrap สะสมผลต่างระหว่าง sample ให้เป็นตัวเลขต่อเนื่อง เช่น 170, 179, −179, −170° กลายเป็น 170, 179, 181, 190° ตามเส้นทางสั้นที่เลือก

กำหนด a เป็นมุมที่แสดง u เป็นมุมต่อเนื่อง: เริ่ม u0 = a0 แล้วใช้ delta = wrap(a_now − a_previous) และ u_now = u_previous + delta อย่า normalize u_now กลับในทุกขั้น เพราะจะเสียความต่อเนื่องที่ต้องการเก็บ

การเลือกนี้ใช้สมมติฐานว่า ขนาดการเปลี่ยนมุมจริงระหว่าง sample น้อยกว่า 180° และข้อมูลอยู่ในแกน/จุดศูนย์เดียวกัน ไม่ได้ค้นคืนจำนวนรอบที่หายไปโดยอัตโนมัติ ค่าเริ่มต้น u0 ยังต่างจากเส้นทางที่บวก 360k° ทั้งชุดได้ ถ้าไม่มี reference เพิ่ม

เอกสาร NumPy unwrap แสดงแนวคิดปรับค่าด้วยจำนวนรอบ และตัวอย่าง degree ที่กำหนด period = 360 ค่าเริ่มต้นของ API เป็น 2π สำหรับ radian บทนี้คำนวณเอง ไม่ได้รัน library และใช้ข้อตกลง −180° ของบทก่อนที่จุดตรงข้าม จึงไม่เหมารวมว่า tie หรือทุก option ของ API ให้ผลเดียวกับสูตรสอนนี้

ต่อมุมสี่จุดและคำนวณอัตราเฉลี่ย

กำหนด: sample clock เดียวกัน ไม่มี reset; degree, second และ deg/s; เลือกผลต่างสั้นภายใต้สมมติฐานข้างต้น เริ่มที่ t = 0 ms, u = 170° ตัวเลขไม่ใช่ความสามารถหรือขีดจำกัดของโดรนจริง

Sample (ms) มุมแสดง (°) มุมต่อเนื่อง (°)
0 170 170
10 179 179
20 -179 181
40 -170 190

คำนวณ rate_average = delta / dt_seconds ระหว่างจุดสองจุด ไม่ใช้ dt จาก sample rate ที่ตั้งไว้แทน dt จริง แถวแรกไม่มีจุดก่อนหน้า จึงยังไม่มี rate

ช่วง (ms) delta (°) dt (ms) เฉลี่ย (deg/s)
0→10 9 10 900
10→20 2 10 200
20→40 9 20 450

ช่วง 10→20 ms: delta = wrap(−179 − 179) = +2°, dt = 0.01 s จึงได้ 200 deg/s ถ้าใช้ผลต่างตัวเลข −358° ตรง ๆ จะได้ −35,800 deg/s จากขอบการแสดงมุม ช่วง 20→40 ms: delta = +9°, dt = 0.02 s ได้ 450 deg/s ไม่ใช่ 900 deg/s ที่ได้เมื่อใช้ dt = 0.01 s ผิดช่วง

อัตรานี้เป็น ค่าเฉลี่ยของการเปลี่ยนมุมหนึ่งแกนในช่วง ไม่ใช่ค่า gyro ณ instant หนึ่ง การเทียบกับ gyro ต้องตรวจแกน หน่วย ช่วงเวลา และชนิดมุมก่อน ในสามมิติ อนุพันธ์ Euler angle ไม่เท่ากับ body gyro ทุกท่า อ่านข้อจำกัดใน บท Complementary Filter

กราฟมุมแสดงและมุมต่อเนื่องสี่จุดตามเวลา พร้อมไดอะแกรมตรวจ clock ช่วงเวลาและความกำกวมก่อนสะสมผลต่าง

กราฟ Matplotlib จากตัวเลขสมมติ เส้นเชื่อมมีไว้ให้อ่านลำดับ ไม่ใช่ waveform หรือการเคลื่อนที่ที่วัดระหว่างจุด เปิดกราฟมุมต่อเนื่องขนาดเต็ม

ข้อมูลขาดทำให้มีหลายเส้นทางได้

แยกโจทย์ใหม่: จาก t = 40 ms, มุมแสดง −170° ไป t = 240 ms, มุมแสดง −150° ช่องว่าง = 0.2 s ผลต่างสั้นเป็น +20° แต่ปลายเดียวกันยังมาจากการเปลี่ยน +380° หรือ −340° ได้ด้วย เพราะต่างกันหนึ่งรอบ อัตราเฉลี่ยที่เป็นไปได้คือ +100, +1,900 และ −1,700 deg/s ตามลำดับ หากไม่มีหลักฐานเพิ่มเติม ไม่เลือก +100 เป็นผลการเคลื่อนที่จริงเพียงเพราะเป็นทางสั้น

ถ้ามีขอบเขตอัตราหมุนจริง Ωmax ที่ยืนยันครอบคลุมทั้งช่วง และ Ωmax × dt < 180° จะเป็นเงื่อนไขเพียงพอให้การเปลี่ยนมุมหนึ่งแกนไม่ถึงครึ่งรอบ ตัวอย่างสาธิต Ωmax = 2,000 deg/s: dt = 0.02 s ให้ 40° < 180°; dt = 0.2 s ให้ 400° ซึ่งไม่รับรองเงื่อนไขนี้ ขอบเขต 2,000 เป็นสมมติฐานของโจทย์ ไม่ใช่ค่าที่วัดได้หรือ requirement ของอุปกรณ์จริง การไม่ผ่านเงื่อนไขไม่ได้พิสูจน์ว่าเกิดการหมุนเกินครึ่งรอบ สำหรับปลายมุมของโจทย์นี้ ทั้ง +20°, +380° และ −340° มีขนาดไม่เกิน 400° จึงยังแยกทางไม่ได้แม้มีขอบเขตสมมตินี้

ที่ผลต่างตรงข้าม 180° พอดี ยังมีสองทางเท่ากัน และ noise ใกล้ขอบอาจเปลี่ยนทางที่เลือกได้ การ unwrap ไม่แก้ noise, bias, แรงแทรก หรือ gap ศึกษา อัตราสุ่มและข้อมูลที่ไม่ถูกวัด ประกอบ ไม่ถือว่ากราฟต่อเนื่องยืนยัน sample ครบ

ตรวจเวลาและสถานะก่อนหารหรือสะสม

  1. ตรวจว่า timestamp หมายถึง sample/อ่าน/ใช้ที่จุดใด อยู่ใน clock และ session เดียวกัน ถ้า reset หรือไม่รู้ความสัมพันธ์ของ clock ให้แยกช่วง ไม่ลบเวลาตรง ๆ
  2. ถ้า dt ≤ 0 ให้ระบุ duplicate/ordering/reset ที่ยังไม่รู้ ไม่หารด้วยศูนย์หรือตั้ง dt เองเพื่อให้ได้ rate และไม่เรียง timestamp ใหม่แล้วอ้างว่าเป็นลำดับจับข้อมูลเดิม
  3. เมื่อมี gap ตรวจขอบเขตการเคลื่อนที่ที่มีหลักฐาน ถ้ายังเลือกจำนวนรอบไม่ได้ ให้ทำเครื่องหมาย ambiguous / ยังเลือกเส้นทางไม่ได้ แล้วเก็บข้อมูลดิบ ไม่ต่อเส้นให้ดูเรียบเป็นผลยืนยัน
  4. หลัง filter หรือแปลงแกน ตรวจว่ามุมและเวลาอ้างถึงช่วงใด อ่าน การตรวจอายุข้อมูล เพื่อแยกค่าคำนวณได้จากค่าที่สดพอสำหรับจุดใช้

ขั้นตอนฝึกและคำแนะนำเบื้องต้น

อ่าน คู่มือชุดมุมตามเวลา แล้วทำสำเนา ใบวางแผนมุมตามเวลาว่าง เขียนหน่วย/clock/ค่าเริ่มต้นและสมมติฐาน ทำ โจทย์มุมต่อเนื่องและอัตราเฉลี่ย ก่อนเปิด เฉลยมุมตามเวลา

เริ่มจากสี่จุด คำนวณ delta → u → dt → rate ทีละช่วง ตรวจว่า wrap(u) ตรงกับมุมแสดง แล้วแยกกรณี gap ออกมาเขียนอย่างน้อยสองเส้นทางที่ปลายเหมือนกัน บอกสิ่งที่ต้องเก็บเพิ่มก่อนเลือกเส้นทางจริง คำแนะนำคือใช้ dt จริง เก็บค่าเต็มก่อนปัด และไม่ใช้ตัวเลขเรียบหรือเฉลยตรงเป็นหลักฐานความแม่นยำ ไม่มีคะแนนใหม่ในแบบประเมินเดิม

ตัวเลขและแหล่งอ้างอิงของชุดมุมตามเวลา · รายการแฮชชุดมุมตามเวลา · กลับภาพรวม MCU

unwrapangular rateมุมต่อเนื่องtimestampsample gapIMU