I found this javascript Kalman filter library online and I wanted to use it with my node.js application. As I wanted to include this js file into my node.js application, I tried to export the required functions ( added module.exports as shown below) .
module.exports = {
KalmanModel : function(){
function KalmanModel(x_0,P_0,F_k,Q_k){
this.x_k = x_0;
this.P_k = P_0;
this.F_k = F_k;
this.Q_k = Q_k;
}
KalmanModel.prototype.update = function(o){
// code
}
return KalmanModel;
},
KalmanObservation : function(){
function KalmanObservation(z_k,H_k,Q_k){
this.z_k = z_k;//observation
this.H_k = H_k;//observation model
this.R_k = R_k;//observation noise covariance
}
return KalmanObservation;
}
};
But when I try to run the following piece of code
Code:
var kal =require('./kalman');
var observationVal = observationValues;
var x_0 = $V([observationVal[0]]);
var P_0 = $M([[2]]);
var F_k=$M([[1]]);
//process noise
var Q_k=$M([[0]]);
var KM = kal.KalmanModel(x_0,P_0,F_k,Q_k);
//value we measure
var z_k = $V([observationVal[0]]);
var H_k = $M([[1]]);
var R_k = $M([[4.482]]);
var KO = kal.KalmanObservation(z_k,H_k,R_k);
for (var i=1;i<10;i++){
z_k = $V([observationVal[i]]);
KO.z_k=z_k;
KM.update(KO);
I get an error
TypeError: object is not a function.
It looks like method defined with prototype is not getting exported. What am I doing wrong here?
Well if you don't wanna change much in the existing source code you can do this. Don't remove the implicit function call ie :
(function(){//code})();
and i think you should be set.Or simply append the following in the library kalman.js
and access as