מסנן קלמן

ממוזער|400px|מסנן קלמן עוקב אחר הערכת מצב המערכת והשונות או חוסר הוודאות של ההערכה. ההערכה מעודכנת על פי מודל מעבר מצבים. <math>\hat{x}_{k\mid k-1}</math> מסמן את מצב המערכת המוערך בזמן k לפני המדידה ה-k, לפני שהמדידה ''y''<sub>''k''</sub> נלקחה בחשבון; <math>P_{k\mid k-1}</math> הוא ערך אי הוודאות.
**מסנן קלמן** הוא אלגוריתם המבוסס על מסנן בייסיאני, המקבל כקלט סדרה של מדידות מורעשות של ערכים שונים המייצגים מצב של מערכת בזמן מסוים, ומספק הערכה סטטיסטית של מצב המערכת על סמך תוצאת המסנן בעבר. המסנן נקרא על שם רודולף קלמן, אחד ממפתחיו הבולטים.

למסנן יישומים רבים בטכנולוגיה. אחד היישומים העיקריים הוא בהנחיה, ניווט ובקרה של כלי רכב, במיוחד מטוסים, טילים או רכבי חלל. הוא מיושם רבות בעיבוד אותות ואקונומטריקה.

האלגוריתם מכיל מערכת משוואות והוא עובד בשני שלבים מרכזיים:
# האלגוריתם מספק הערכה של מצב המערכת (כלומר, ערכי המדדים שלה) ושל ערכי אי הוודאות שלהם.
# נקלטות התוצאות של המדידות הבאות (בדרך כלל כולל שגיאות מדידה מסוימות).

תוצאות אלו מקבלות כל אחת משקל משלה והוא מעדכן באמצעותן את מצב המערכת. משקל כל תוצאה תלוי ברמת האמינות אותה מייחס האלגוריתם לאותה מדידה. המשקלים יכולים להשתנות במשך פעולת המסנן בהתאם לתוצאות המתקבלות בכל מדידה. כך למשל, אם מתקבל הפרש גבוה בין ההערכה לבין המדידה, המסנן עשוי להפחית את המשקל שהוא נותן להערכות הקודמות שלו ולהגביר את המשקל הניתן לתוצאה, ולהפך.

האלגוריתם משתמש רק במדידות החדשות ובמצב המערכת כפי שהתקבל מההערכה שלו, ללא התייחסות לערכים קודמים. לפיכך, קל ליישם את האלגוריתם במערכות זמן אמת.

על מנת לקבל תוצאות מיטביות, האלגוריתם נדרש לקבל הערכות נכונות בקשר לדיוק המשתנים המתקבלים. אם אין הערכה כזו, תוצאות המסנן תהיינה טובות פחות, אך עדיין טובות בהרבה משימוש בשיטות רגילות, כמו ממוצע נע.

במסנן נעשה שימוש גם במצב בו מעוניינים לאחד את אותה מדידה משני חיישנים שונים ובלתי תלויים לטובת ערך מדויק יותר מכל אחת משתי המדידות.

## תיאור מתמטי של מסנן קלמן
מסנן קלמן מתאר מערכת דינמית שבה קיים מצב חבוי (כלומר שאינו נמדד ישירות), אך ניתן לקבל עליו מידע דרך מדידות רועשות.

בכל צעד זמן k, המסנן מבצע שני שלבים:
# **חיזוי** (א-פריורי) – הערכת מצב המערכת לפני קבלת מדידה חדשה, באמצעות הפעלת מודל חיזוי.
# **עדכון** (פוסטריורי) – תיקון ההערכה על פי מדידות (תצפיות) שהתקבלו בפועל.

בשלב העדכון משווים בין המדידה בפועל לבין התחזית מהמודל (innovation), ומשתמשים בהפרש כדי לתקן את ההערכה.

### סימונים
נסמן:
* \mathbf{x}_k – וקטור מצב המערכת זמן k (וקטור לא ידוע).
* \mathbf{z}_k – וקטור המדידות (תצפיות) בזמן k.
* \hat{\mathbf{x}}_{k\mid m} – וקטור מצב המערכת המשוערך בזמן k בהינתן המדידות עד זמן m.
* \mathbf{u}_k – וקטור קלט בקרה שמכניסים למערכת בזמן k (אופציונלי).
* \tilde{\mathbf{y}}_k – **שגיאת החיזוי** (innovation) – וקטור ההפרש בין המדידות לחיזוי.
;מטריצות המודל
* \mathbf{F}_k (לעיתים מסומן באותיות \mathbf{\Phi} או \mathbf{A}) – מטריצת **מעבר מצב** – מודל החיזוי המתאר כיצד מתפתחת המערכת במעבר משלב k-1 לשלב k (לפי מודל שמניח החוקר).
* \mathbf{B}_k – מטריצת **קלט** – מטריצה המתארת כיצד קלט הבקרה משפיע על המערכת לפי מודל שמניח החוקר (אופציונלי – בהנחה שיש קלט בקרה).
* \mathbf{H}_k – מטריצת **מדידה** – מטריצה המתארת את הקשר בין המדידה למצב המערכת.
;רעש (אי־ודאות)
* \mathbf{w}_k – וקטור רעש התהליך
* \mathbf{v}_k – וקטור רעש המדידה
* \mathbf{Q}_k – מטריצת **רעש התהליך** – מטריצת השונות המשותפת של רעש התהליך, המייצגת את אי-הוודאות במודל.
* \mathbf{R}_k – מטריצת **רעש המדידה** – מטריצת השונות המשותפת של רעש המדידה, שנובע משגיאות מדידה, התפלגות תצפיות וכו'.
* \mathbf{P}_{k\mid m} – מטריצת השונות המשותפת של שגיאת ההערכה במצב ה-k בהינתן המדידות עד זמן m – הערכת אי-ודאות מצב המערכת.
;הגבר קלמן
* \mathbf{K}_k – מטריצת **הגבר קלמן**.

### מודל המערכת
המערכת מתוארת על ידי שתי משוואות:

כאשר הרעשים מתפלגים נורמלית:
:\mathbf{w}_k \sim \mathcal{N}(0, \mathbf{Q}_k), \quad \mathbf{v}_k \sim \mathcal{N}(0, \mathbf{R}_k)

### חיזוי (א-פריורי)
חיזוי מצב המערכת:
:\hat{\mathbf{x}}_{k\mid k-1} = \mathbf{F}_k\hat{\mathbf{x}}_{k-1\mid k-1} + \mathbf{B}_k \mathbf{u}_k 

חיזוי אי הוודאות של מצב המערכת המשוערך (שונות משותפת):
:\mathbf{P}_{k\mid k-1} = \mathbf{F}_k \mathbf{P}_{k-1\mid k-1} \mathbf{F}_k^\mathrm{T} + \mathbf{Q}_k 

### עדכון (פוסטריורי)
שגיאת החיזוי:
: \tilde{\mathbf{y}}_k = \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k\mid k-1}

שונות שגיאת החיזוי:
:\mathbf{S}_k = \mathbf{R}_k + \mathbf{H}_k \mathbf{P}_{k\mid k-1} \mathbf{H}_k^\mathrm{T} 

הגבר קלמן:
:\mathbf{K}_k = \mathbf{P}_{k\mid k-1}\mathbf{H}_k^\mathrm{T} \mathbf{S}_k^{-1} = \mathbf{P}_{k\mid k-1}\mathbf{H}_k^\mathrm{T} (\mathbf{R}_k + \mathbf{H}_k \mathbf{P}_{k\mid k-1} \mathbf{H}_k^\mathrm{T})^{-1}

עדכון מצב המערכת:
_{k\mid k} = \hat{\mathbf{x}}_{k\mid k-1} + \mathbf{K}_k\tilde{\mathbf{y}}_k = \hat{\mathbf{x}}_{k\mid k-1} + \mathbf{K}_k(\mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k\mid k-1})
|ריווח תא = 6
|מסגרת = 2
|צבע מסגרת = #0073CF
|צבע רקע = #F5F9FF}}

עדכון אי הוודאות (שונות משותפת):
:\mathbf{P}_{k|k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k )\mathbf{P}_{k\mid k-1}(\mathbf{I} - \mathbf{K}_k \mathbf{H}_k )^{T}+\mathbf{K}_k\mathbf{R}_k\mathbf{K}^{T}_k = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k )\mathbf{P}_{k\mid k-1}

שארית המדידה לאחר העדכון:
:\tilde{\mathbf{y}}_{k\mid k}= \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k\mid k}

## התאמות למסנן קלמן
האלגוריתם המקורי של מסנן קלמן מתאים להנחות יסוד מסוימות, למשל מודל החיזוי צריך להיות ליניארי, הרעש מוגדר גאוסי ועוד התניות כפי שמפורט לעיל. לצורך פתרון של מערכות פיזיקליות שאינן עונות על הנחות היסוד פותחו "מסנני קלמן" מתקדמים.

### Extended Kalman Filter (EKF) - מסנן קלמן מקורב ליניארית
מסנן זה טוב למקרים בהם מודל החיזוי f(x) **אינו** מהצורה הליניארית Fx, אך קירוב שלו מסדר ראשון הוא "מספיק טוב". לביצוע קירוב מסדר ראשון גוזרים את מודל החיזוי f ומקבלים מודל חיזוי ליניארי מהצורה הרצויה Fx (כאשר F משתנה בכל צעד זמן לפי הנגזרת של f).

### Optimized Kalman Filter (OKF) - מסנן קלמן מיועל
השימוש במסנן קלמן מחייב קביעה של המטריצות \mathbf{Q}_k ו-\mathbf{R}_k. מקובל להתייחס למטריצות אלה כמייצגות של השונות המשותפת של רעש התהליך ורעש המדידה, בהתאמה. לפיכך, מקובל לשערכן בכלים סטטיסטיים לשערוך שונות משותפת. עם זאת, כאשר המערכת אינה מקיימת את הנחות המודל של מסנן קלמן, משמעות הרעש כבר אינה מוגדרת היטב. במקרה זה, OKF נמנע מלהגביל את \mathbf{Q}_k ו-\mathbf{R}_k כמייצגים של הרעש, ובמקום זאת מתייחס אליהם כאל פרמטרים כלליים של המסנן. בגישה זו, ניתן להשתמש בכלים מקובלים באופטימיזציה כדי לייעל פרמטרים אלה ישירות לטובת המטרה הסופית - שערוך מיטבי של מצב המערכת. היתרון המרכזי בגישה זו הוא השימוש בלמידה מנתונים לצורך "פיצוי" על פערים בהנחות המודל. תכונה זו מאפשרת התמודדות עם הפרות שונות של הנחות המודל (כגון ליניאריות, רעש לבן, ואתחול נורמלי) גם כאשר אינן ידועות למשתמש.

## שימושים
ניתן להשתמש באלגוריתם למערכות הגנה אווירית כגון כיפת ברזל כאשר מתגלה איום על ידי מכ"ם, המיקום והמהירות ההתחלתיים של הרקטה או הפגז הנכנסים נמדדים. מדידות אלו רועשות מטבען בשל אופי זיהוי המכ"ם והסביבה. מסנן קלמן משמש להערכת המצב (מיקום, מהירות ואולי תאוצה) של הקליע בהתבסס על מדידות ראשוניות אלו. לאחר מכן ניתן לחזות את המהירות העתידיים של הקליע בשלבי הזמן הבאים.

שימוש נוסף הוא במערכות מיפוי רובוטי.

## קישורים חיצוניים

* 
* 


* A New Approach to Linear Filtering and Prediction Problems, by R. E. Kalman, 1960
* Kalman and Bayesian Filters in Python. Open source Kalman filtering textbook.
* How a Kalman filter works, in pictures. Illuminates the Kalman filter with pictures and colors

## הערות שוליים

קטגוריה:תורת הבקרה