Add Kalman Filter switch on/off to settings menu.

pull/684/head
nujw 2021-03-05 17:27:05 +13:00
parent d3cd557e68
commit bef2955ba0
2 changed files with 27 additions and 8 deletions

View File

@ -5,7 +5,7 @@ Mike Bennett mike[at]kereru.com
1.21 : Third mode large clock display
1.02 : add smoothing with kalman filter
*/
var v = '1.02e';
var v = '1.02g';
/*kalmanjs, Wouter Bulten, MIT, https://github.com/wouterbulten/kalmanjs */
var KalmanFilter = (function () {
@ -170,9 +170,6 @@ var KalmanFilter = (function () {
}());
var spdFilter = new KalmanFilter({R: 0.1, Q: 1});
var altFilter = new KalmanFilter({R: 0.01, Q: 2});
var buf = Graphics.createArrayBuffer(240,160,2,{msb:true});
@ -416,8 +413,8 @@ function onGPS(fix) {
// Smooth data
if ( lf.smoothed !== 1 ) {
lf.speed = spdFilter.filter(lf.speed);
lf.alt = altFilter.filter(lf.alt);
if ( cfg.spdFilt ) lf.speed = spdFilter.filter(lf.speed);
if ( cfg.altFilt ) lf.alt = altFilter.filter(lf.alt);
lf.smoothed = 1;
if ( max.n <= 15 ) max.n++;
}
@ -590,6 +587,12 @@ cfg.wp = cfg.wp||0; // Last selected waypoint for dist
cfg.modeA = cfg.modeA||0; // 0 = [D]ist, 1 = [A]ltitude, 2 = [C]lock
cfg.primSpd = cfg.primSpd||0; // 1 = Spd in primary, 0 = Spd in secondary
cfg.spdFilt = cfg.spdFilt==undefined?true:cfg.spdFilt;
cfg.altFilt = cfg.altFilt==undefined?true:cfg.altFilt;
if ( cfg.spdFilt ) var spdFilter = new KalmanFilter({R: 0.1 , Q: 1 });
if ( cfg.altFilt ) var altFilter = new KalmanFilter({R: 0.01, Q: 2 });
loadWp();
/*

View File

@ -30,12 +30,14 @@
writeSettings();
}
const appMenu = {
'': {'title': 'GPS Speed Alt'},
'< Back': back,
'< Load GPS Adv Sport': ()=>{load('speedalt.app.js');},
'Units' : function() { E.showMenu(unitsMenu); },
'Colours' : function() { E.showMenu(colMenu); }/*,
'Colours' : function() { E.showMenu(colMenu); },
'Kalman Filter' : function() { E.showMenu(kalMenu); }/*,
'Vibrate' : {
value : settings.buzz,
format : v => v?"On":"Off",
@ -66,7 +68,21 @@
'Night' : function() { setColour(2); }
};
const kalMenu = {
'': {'title': 'Kalman Filter'},
'Speed' : {
value : settings.spdFilt,
format : v => v?"On":"Off",
onchange : () => { settings.spdFilt = !settings.spdFilt; writeSettings(); }
},
'Altitude' : {
value : settings.altFilt,
format : v => v?"On":"Off",
onchange : () => { settings.altFilt = !settings.altFilt; writeSettings(); }
}
};
E.showMenu(appMenu);
})
});