מסנן קלמן

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

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

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

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

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

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

== תיאור מתמטי של מסנן קלמן ==

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

נסמן:
* <math>\hat{\mathbf{x}}_{k\mid k}</math> – הערכת מצב המערכת במצב ה-k בהינתן המצב ב-k המצבים שלפניו
* <math>\mathbf{P}_{k\mid k}</math> – הערכת אי-ודאות מצב המערכת. השונות המשותפת במצב ה-k בהינתן המצב ב-k המצבים שלפניו
* <math>\mathbf{F}_k</math> (לעיתים מסומן ב-Φ) מודל החיזוי המתאר כיצד מתפתחת המערכת במעבר משלב k-1 לשלב k (לפי מודל שמניח החוקר)
* <math>\mathbf{u}_k</math> – קלט מבוקר שמכניסים למערכת
* <math>\mathbf{B}_k</math> – איבר המתאר כיצד הקלט משפיע על המערכת (לפי מודל שמניח החוקר)
* <math>\mathbf{Q}_k</math> – רעש תהליך. השונות המשותפת של הרעש בתהליך הקידום של מצב המערכת
* <math>\mathbf{z}_k</math> – המדידות והתצפיות בשלב k 
* <math>\mathbf{R}_k</math> – רעש מדידה. השונות המשותפת של הרעש שנוצר בתהליך המדידה. שגיאות מדידה, התפלגות תצפיות וכו'.
* <math>\mathbf{H}_k</math> – איבר המתאר את הקשר בין המדידה למצב המערכת.
* בשלב העדכון אנו נשווה בין התוצאות שחוזה המערכת לבין התוצאות שנמדדו בפועל (תצפיות) ועל-פי זה נתקן את ההערכה.

=== חיזוי ===
{|
|-
| style="width:70%;"| הערכת מצב המערכת (א-פריורי)
| <math>\hat{\mathbf{x}}_{k\mid k-1} = \mathbf{F}_k\hat{\mathbf{x}}_{k-1\mid k-1} + \mathbf{B}_k \mathbf{u}_k </math>
|-
| הערכת אי ודאות השגיאה. שונות משותפת (א-פריורית)
| <math>\mathbf{P}_{k\mid k-1} = \mathbf{F}_k \mathbf{P}_{k-1\mid k-1} \mathbf{F}_k^\mathrm{T} + \mathbf{Q}_k </math>
|}

=== עדכון ===
{|
|-
| style="width:40%;"| חישוב ההפרש בין התצפיות לתחזית
| <math> \tilde{\mathbf{y}}_k = \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k\mid k-1}
</math>
|-
| חישוב אי הוודאות (השונות המשותפת)
| style="align:left;"| <math>\mathbf{S}_k = \mathbf{R}_k + \mathbf{H}_k \mathbf{P}_{k\mid k-1} \mathbf{H}_k^\mathrm{T} </math>
|-
| חישוב הגבר קלמן מיטבי (optimal Kalman gain)
| <math>\mathbf{K}_k = \mathbf{P}_{k\mid k-1}\mathbf{H}_k^\mathrm{T} \mathbf{S}_k^{-1}</math>
|-
| עדכון מצב המערכת (פוסטריורי)
| <math>\hat{\mathbf{x}}_{k\mid k} = \hat{\mathbf{x}}_{k\mid k-1} + \mathbf{K}_k\tilde{\mathbf{y}}_k</math>
|-
| עדכון הערכת אי הוודאות (שונות משותפת) (פוסטריורי)
| <math>
\mathbf{P}_{k|k} = (\mathbf{I} - \mathbf{K}_k \mathbf{H}_k )\mathbf{P}_{k|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|k-1}</math>
|-
| ההתאמה בין המדידות להערכה המעודכנת
| <math>
\tilde{\mathbf{y}}_{k\mid k}= \mathbf{z}_k - \mathbf{H}_k\hat{\mathbf{x}}_{k\mid k}
</math>
|}

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

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

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

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

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

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

* 
* 

<div class="mw-content-ltr">
* [http://www.cs.unc.edu/~welch/kalman/kalmanPaper.html A New Approach to Linear Filtering and Prediction Problems], by R. E. Kalman, 1960
* [https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python Kalman and Bayesian Filters in Python]. Open source Kalman filtering textbook.
* [http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/ How a Kalman filter works, in pictures]. Illuminates the Kalman filter with pictures and colors</div>

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

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