How to know an estimated position is reliable
อ่าน 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 พร้อมเฉลย) · แบบจำลองสังเคราะห์พร้อมสมมติฐานและข้อจำกัด