ก่อนอื่นนี่เป็นครั้งแรกที่ฉันพยายามสร้างตัวกรองคาลมาน
ก่อนหน้านี้ฉันโพสต์คำถาม 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 จะลดลงทุกครั้งที่มีการเรียกใช้การอัปเดตซึ่งหมายความว่าฉันเชื่อถือค่าใหม่ของฉันน้อยลงเมื่อตัวกรองของฉันทำงานนานขึ้น (?) ฉันไม่ต้องการสิ่งนั้น
ฉันเปลี่ยนจากการใช้ค่าเฉลี่ยเคลื่อนที่ (แบบง่ายและแบบเอ็กซ์โปเนนเชียลถ่วงน้ำหนัก) เพื่อใช้สิ่งนี้ ตอนนี้ฉันไม่สามารถได้ผลลัพธ์ที่ดีอย่างที่คิด
คำถามของฉันคือถ้านี่คือการนำไปปฏิบัติที่ถูกต้องและหากความแปรปรวนข้อผิดพลาดและส่วนเบี่ยงเบนมาตรฐานของฉันดูดีตามค่าตัวอย่างที่ฉันโพสต์ พารามิเตอร์ของฉันถูกเลือกแบบสุ่มเพื่อดูว่าฉันจะได้รับผลลัพธ์ที่ดีหรือไม่ ฉันลองหลาย ๆ ช่วงแล้ว แต่ได้ผลลัพธ์ไม่ดี หากคุณมีข้อเสนอแนะเกี่ยวกับการเปลี่ยนแปลงที่ฉันทำได้ก็จะได้รับการชื่นชมอย่างมาก ฉันขอโทษถ้ามีบางสิ่งที่ชัดเจนหายไป ครั้งแรกที่โพสต์ที่นี่ด้วย