ก่อนอื่นนี่เป็นครั้งแรกที่ฉันพยายามสร้างตัวกรองคาลมาน
ก่อนหน้านี้ฉันโพสต์คำถาม follwoing กรองสัญญาณรบกวนและความแปรปรวนจากค่าความเร็วใน StackOverflow ซึ่งอธิบายพื้นหลังสำหรับโพสต์นี้ นี่เป็นตัวอย่างของค่าทั่วไปที่ฉันพยายามกรอง พวกเขาไม่จำเป็นต้องลดลงซึ่งเป็นกรณีที่นี่ แต่โดยทั่วไปแล้วอัตราการเปลี่ยนแปลงจะเป็นแบบนี้
X ------- Y
16 --- 233.75
24 --- 234.01
26 --- 234.33
32
--- 234.12 36 --- 233.85
39 --- 233.42
47 --- 233.69
52 --- 233.68
55 --- 233.76
60 --- 232.97
66 --- 233.31
72 --- 233.99
ฉันได้ดำเนินการกรองคาลมานของฉันตามกวดวิชานี้: Kalman Filter สำหรับ Dummies
การใช้งานของฉันมีลักษณะเช่นนี้ (pseudocode)
//Standard deviation is 0.05. Used in calculation of Kalman gain
void updateAngle(double lastAngle){
if(firsTimeRunning==true)
priorEstimate = 0; //estimate is the old one here
priorErrorVariance = 1.2; //errorCovariance is the old one
else
priorEstimate = estimate; //estimate is the old one here
priorErrorVariance = errorCovariance; //errorCovariance is the old one
rawValue = lastAngle; //lastAngle is the newest Y-value recieved
kalmanGain = priorErrorVariance / (priorErrVariance + 0.05);
estimate = priorEstimate + (kalmanGain * (rawValue - priorEstimate));
errorCovariance = (1 - kalmanGain) * priorErrVariance;
angle = estimate; //angle is the variable I want to update
} //which will be lastAngle next time
ฉันเริ่มต้นด้วยการประมาณก่อนหน้านี้ 0 ดูเหมือนว่าจะทำงานได้ดี แต่สิ่งที่ฉันสังเกตเห็นคือ kalmanGain จะลดลงทุกครั้งที่มีการเรียกใช้การอัปเดตซึ่งหมายความว่าฉันเชื่อถือค่าใหม่ของฉันน้อยลงเมื่อตัวกรองของฉันทำงานนานขึ้น (?) ฉันไม่ต้องการสิ่งนั้น
ฉันเปลี่ยนจากการใช้ค่าเฉลี่ยเคลื่อนที่ (แบบง่ายและแบบเอ็กซ์โปเนนเชียลถ่วงน้ำหนัก) เพื่อใช้สิ่งนี้ ตอนนี้ฉันไม่สามารถได้ผลลัพธ์ที่ดีอย่างที่คิด
คำถามของฉันคือถ้านี่คือการนำไปปฏิบัติที่ถูกต้องและหากความแปรปรวนข้อผิดพลาดและส่วนเบี่ยงเบนมาตรฐานของฉันดูดีตามค่าตัวอย่างที่ฉันโพสต์ พารามิเตอร์ของฉันถูกเลือกแบบสุ่มเพื่อดูว่าฉันจะได้รับผลลัพธ์ที่ดีหรือไม่ ฉันลองหลาย ๆ ช่วงแล้ว แต่ได้ผลลัพธ์ไม่ดี หากคุณมีข้อเสนอแนะเกี่ยวกับการเปลี่ยนแปลงที่ฉันทำได้ก็จะได้รับการชื่นชมอย่างมาก ฉันขอโทษถ้ามีบางสิ่งที่ชัดเจนหายไป ครั้งแรกที่โพสต์ที่นี่ด้วย