ليس الغرض من المقالة شرح مبادئ مرشح كالمان ، ولكن توضيح ذلك باستخدام بيانات (خام) حقيقية كمثال. أولئك الذين يرغبون في تعديل شفرة المصدر وتجربة الخوارزمية ، آمل أن يساعد عملي أولئك الذين يواجهون مهمة مماثلة.
البيانات المستخدمة من جهاز استقبال GPS بتنسيق NMEA-0183 ، ولا سيما رسائل GGA و VTG.
التصفية ضرورية بسبب ضجيج GPS. تختلف أسباب التداخل في بيانات GPS. أهمها:
- الغلاف الجوي.
- عوائق الإشارة.
- موقف مدار GPS. على سبيل المثال ، ضعف ميل مدارات GPS (حوالي 55 درجة) يضعف بشكل خطير الدقة في المناطق القطبية من الأرض.
كل هذا في المجموع يؤدي إلى قفزات في الموضع ، وتعويضات بالطبع ، ومشاكل أخرى. وفي العمل ، بادئ ذي بدء ، كنت بحاجة للحصول على السرعة التي تم تصفيتها بالضبط.
والحقيقة هي أن السرعة التي تقاس بها المعدات والمرسلة في رسالة VTG أعطت قراءات غير معقولة (قفزات ، وما إلى ذلك) ، مما أدى إلى تعقيد شديد لمهام التحكم.
لذلك ، تقرر بناء نموذج مرشح في Octave ، وبعد تلقي السرعة كمشتق من بيانات GPS التي تمثلها رسالة GGA ، قارنها مع بيانات السرعة الأصلية من رسالة VTG.
لسهولة المقارنة ، يجب عرض البيانات على رسم بياني واحد.
يقوم مرشح كالمان بعمل رائع في تصفية البيانات ومشتقاتها.
«».
— . ( ) : - - . , Predict, Update, Invariant :
https://habr.com/ru/post/140274/
https://habr.com/ru/post/166693/
https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%9A%D0%B0%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0
Octave (open-source Matlab Linux). F . ( ):

, .
— (PAC ) C++.
— Octave .
++ , , Octave — .
GGA :
VTG :

«--» — , . Latitude Longitude.
.
, .:
Fk — //, state-transition model.
Hk — /, observation model.
Qk — , covariance of the process noise;.
Rk — , covariance of the observation noise.
K — .
Xp — () .
Xk — .
X(k-1) — .
Pp — , .
P — .
P(k-1) — () .
z- () .
:
Xp = Fk X(k-1); .
Pp = Fk P(k-1) * F'k + Q; .
:
K = Pp H' inv(H Pp H' + R); .
Xk = Xp + K(z — HXp); z.
P = Pp — KHPp; .
.
KalmanX KalmanY .
X Y , , Q, R, F reset ( Q R, ).
(habrGGA.m) , , .
Q, R . ( Q, R). , .
, :

( ) , Q. R = 0,2.
, :

— X Y (Latitude Longitude) , :


:

( VTG) , .
Q R, (habrGGA.m):
if j==1 Q = [ 0.01 0;
0 0.01];
Q1=Q;
R=0.2; R1=R;
elseif j==2 Q = [ 0.05 0;
0 0.05];
Q2=Q;
R=0.2; R1=R;
elseif j==3 Q = [1 0;
0 1];
Q3=Q;
R=0.2; R1=R;
end
لأغراضي ، يبدو أن متوسط قيمة Q (0.05) هو الأكثر تفضيلاً الآن في مجموعة NMEA هذه. سيتم تنفيذ اختيار أكثر دقة ، وربما متغير ديناميكيًا للمعاملات أثناء التصحيح في اختبارات الإرساء.
الملفات المرفقة.
habrGGA.m - النص الأساسي (قراءة البيانات ، استدعاء وظيفة المرشح ، رسم الرسوم البيانية)
KalmanX.m - مرشح
Kalman (Latitude) KalmanY.m - مرشح Kalman (Longitude)