mirror of https://github.com/espruino/BangleApps
Add Kalman Filter switch on/off to settings menu.
parent
d3cd557e68
commit
bef2955ba0
|
@ -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();
|
||||
|
||||
/*
|
||||
|
|
|
@ -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);
|
||||
|
||||
})
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue