รู้ได้อย่างไรว่าตำแหน่งที่ได้เชื่อถือได้
อ่าน error, alignment และ tracking loss พร้อมเงื่อนไขที่ทำให้การเปรียบเทียบยุติธรรม
กราฟสวยยังไม่พอ
ก่อนเทียบเส้นทางให้ตรวจหน่วย frame เวลา และความหมาย ground truth การขยับกราฟให้ซ้อนกันอาจลด error ที่รายงาน จึงต้องบอกว่าทำ alignment แบบใด และมีการปรับ scale หรือไม่
| ตัวชี้วัด | ช่วยตอบอะไร |
|---|---|
| APE | ความต่างของ pose กับข้อมูลอ้างอิงตาม association/alignment ที่กำหนด |
| RPE | ความต่างของการเคลื่อนที่สัมพัทธ์ในช่วงที่กำหนด |
| Tracking loss | ช่วงที่ระบบไม่มีผลประมาณที่ใช้ได้ |
| Runtime / latency | ภาระและความล่าช้าภายใต้เครื่องและวิธีรันนั้น |
เปรียบเทียบทีละปัจจัย
ใช้ sequence ช่วงเวลา และวิธีประเมินเดียวกัน บันทึกผลทั้งกรณีปกติและช่วงที่ล้มเหลว หากเครื่องมือส่งผลเฉพาะช่วงที่ติดตามสำเร็จ ค่าเฉลี่ยต่ำอาจซ่อนข้อมูลขาดหาย ไม่ตัดช่วงนั้นออกโดยไม่รายงาน
evo รองรับการประเมิน trajectory หลายรูปแบบและมีเอกสาร Windows/Linux อ่าน options ให้ตรงกับรูปแบบข้อมูลก่อนรัน ค่าตัวเลขจากแบบฝึกตำแหน่งอย่างง่ายไม่เท่ากับ full-pose APE/RPE จาก evo
ก่อนส่งเข้า flight controller
การเชื่อม external vision ต้องตรวจ frame timestamp delay และ sensor offset ตามเวอร์ชัน flight stack ควรเริ่มตรวจข้อมูลและ SITL ก่อนฮาร์ดแวร์ ผล replay ผ่านเพียงชุดเดียวไม่รับรองความพร้อมบิน
ทดลอง error จากข้อมูลสังเคราะห์ →
แหล่งอ้างอิงและขอบเขต
ตรวจแหล่งข้อมูล 7 กันยายน 2569 เรียบเรียงประกอบองค์ความรู้ที่ DTI เอื้อเฟื้อ
F31: วัด position RMSE พร้อมเปิดเผย alignment
| ตัวแปร | ความหมายและหน่วยเข้า → ออก | ช่วง/แหล่งค่า |
|---|---|---|
| p_est,i, p_ref,i | ตำแหน่งประมาณ/อ้างอิงที่จับคู่เวลา (เข้า) m | finite3แกน, datum/frame ที่ประกาศ |
| n | จำนวนคู่ที่ผ่านกติกา (เข้า) คู่ | ≥1; การ fit rotation ต้องมี geometry เพียงพอ |
| R, t | rigid alignment หนึ่งชุด (เข้า/fit) ไร้หน่วย, m | RᵀR=I, detR=+1; scale=1 |
| RMSE_pos | RMS ของระยะ residual (ออก) m | ≥0; รายงาน raw และ aligned แยกกัน |
| R_ref, R_est | rotation body→world ของคู่เวลาเดียวกัน (เข้า) ไร้หน่วย | SO(3), frame เดียวกัน; alignment=I ในตัวอย่างมุม |
| θ, θ_deg | principal relative rotation angle (ออก) rad,deg | 0–π rad หรือ0–180°; แยกจาก error หน่วยm |
ระดับขั้นสูง · แบบจำลองเพื่อการเรียนรู้ · คำถาม: เส้นทางต่างกันเพราะ origin หรือเพราะรูปร่างเส้นทางผิด และการจัดแนวซ่อนอะไรได้บ้าง?
RMSE_pos = √(Σᵢ ||R p_est,i + t − p_ref,i||² / n)
Raw ใช้ R=I,t=0; aligned เลือก rigid R,t ชุดเดียวเพื่อลดผลรวมกำลังสอง ห้าม scale correction โดยไม่ประกาศ เพราะจะซ่อน scale error นี่เป็น position-only RMSE ไม่ใช่ full pose APE/RPE และตัว position RMSE ไม่วัด orientation ความคลาดเคลื่อนมุมต้องมี pose convention กับ metric เพิ่ม ไม่รวมองศากับเมตรเป็น RMS เดียว
ก่อนคำนวณต้องประกาศ clock offset, tolerance ในการจับคู่, interpolation และจำนวนคู่ที่ตัดออก ตัวอย่างนี้มีเวลา0,1,2 s ตรงกันพอดี ใช้คู่1:1 ไม่ interpolate สำหรับข้อมูลอื่นให้เรียงเวลา ตรวจเวลาซ้ำ เลือกคู่ไม่ซ้ำที่ห่างไม่เกิน tolerance ที่กำหนดก่อนดูผล และทิ้งคู่ที่ไม่ผ่าน; ไม่มีคู่ให้ไม่มีค่า ไม่ใช่0 หากใช้ evo ต้องบันทึกรุ่น/arguments และผลจำนวนคู่ ไม่อ้างว่าบทนี้ได้รัน evo
มุมหมุนแยกจากความคลาดตำแหน่ง
สำหรับคู่เวลาเดียวกัน ให้ R_ref และ R_est แปลง body ไป world เดียวกัน โดยตัวอย่างนี้ alignment=I ทั้งคู่ต้องอยู่ใน SO(3) ก่อน: RᵀR=I และ detR=+1 กำหนด R_err=R_refᵀR_est และ θ=acos(clip((trace(R_err)−1)/2,−1,1)) มีช่วง0ถึงπ rad; θ_deg=θ×180/π ตาม principal rotation angle การ clip แก้ roundoff เล็กน้อย ไม่ใช้ซ่อม matrix ที่ไม่ใช่ rotation หากใช้ alignment R_align ที่ไม่ใช่I ต้องใช้ R_align R_est ก่อนเทียบ
ตัวอย่าง R_ref=I, R_est=[[√3/2,−1/2,0],[1/2,√3/2,0],[0,0,1]] จึง trace=1+√3 ได้ θ=π/6=0.523598776 rad หรือ30° ยอมรับ ±0.000001 ในหน่วยที่รายงาน นี่เป็นมุมหนึ่งคู่ แยกจาก position RMSE ไม่ใช่ full pose APE/RPE หรือ trajectory rotational RMSE
กติกาจับคู่ตัวอย่างข้อมูลจริงที่ออกแบบเพื่อฝึก: หลังชดเชย offset ที่ทราบล่วงหน้า ใช้ tolerance0.01 s จับคู่ใกล้สุดแบบ1:1และไม่ interpolate แล้วรายงานจำนวนคู่/คู่ที่ทิ้ง ค่า0.01 s นี้เป็นสมมติฐานการฝึก ไม่ใช่ค่าเหมาะสมสากลหรือ default ของ evo; timestamps ที่ห่าง0.02 s ต้องทิ้งตามกติกานี้
ตัวอย่างแทนค่า
reference=(0,0,0),(1,0,0),(0,1,0) m และ estimated=(1,0,0),(2,0,0),(1,1,0) m ตามเวลาเดียวกัน residual raw ทั้งสาม=(1,0,0) m จึง √((1+1+1)/3)=1 m หลัง R=I,t=(−1,0,0) m ได้0 m การ fit กับชุดที่ประเมินนี้บอก residual หลังจัดแนว ไม่ใช่ผลทดสอบอิสระ และ0ไม่ได้รับรองตำแหน่ง absolute
แบบฝึกเปลี่ยนค่า
เปลี่ยน estimated เป็นสองเท่าของ reference: (0,0,0),(2,0,0),(0,2,0) m ใช้ rigid alignment ที่ scale=1 แล้ว raw/aligned RMSE เท่าใด?
เปิดเฉลย F31
Raw=√(2/3)=0.816496581 m; rigid ที่ดีที่สุดคือ R=I,t=(−1/3,−1/3,0) m ได้ผลรวม squared residual4/3 m² ดังนั้น aligned=√(4/9)=2/3 m ยอมรับ ±0.000001 m ห้ามคูณscale0.5แล้วรายงาน0โดยไม่เปิดเผย
อ้างอิง: evo v1.30.0 PosePath3D.align (P4A04), timestamp association (P4A08); evo v1.30.0 relative_so3/so3_log_angle (P4A10), Modern Robotics v1.1.1 MatrixLog3 (P4A11); ตรวจ26กันยายน2569 ตัวเลขทั้งหมดเป็นโจทย์สังเคราะห์
เชื่อมความรู้กับภารกิจและข้อมูล
รายงานวิธีจัดแนว trajectory กรอบพิกัด หน่วย และช่วงเวลาที่นำมาเทียบ พร้อมสถานะของข้อมูลอ้างอิง เมื่อผลไม่ตรงให้แยกการตั้งเวลา พิกัด และข้อจำกัดเซนเซอร์ก่อนสรุปว่าอัลกอริทึมผิด อ่านแหล่งอ้างอิง: OpenVINS — Documentation
ฝึกตรวจความเข้าใจ: เปรียบเทียบสองผลโดยเก็บเงื่อนไขเดิม แล้วเขียนว่าข้อสรุปครอบคลุมเฉพาะข้อมูลใด ไม่อ้างเป็นผลบินภาคสนาม
อ่านต่อ บทที่ใช้ความรู้นี้ในงานจำลอง · ทบทวนแหล่งข้อมูล 26 กันยายน 2569
ดาวน์โหลดชุดฝึกการนำทางและภารกิจขั้นสูง (CSV/JSON พร้อมเฉลย) · แบบจำลองสังเคราะห์พร้อมสมมติฐานและข้อจำกัด