rfetick / kalman Goto Github PK
View Code? Open in Web Editor NEWImplement Kalman filter for your Arduino projects
License: MIT License
Implement Kalman filter for your Arduino projects
License: MIT License
In file included from C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:16:0:
c:\Users\ADMIN\Documents\Arduino\libraries\Kalman/Kalman.h:131:59: error: 'Array' does not name a type
template<int Nstate, int Nobs, int Ncom = 0, class MemF = Array<Nstate,Nstate,float> >
^~~~~
c:\Users\ADMIN\Documents\Arduino\libraries\Kalman/Kalman.h:131:64: error: expected '>' before '<' token
template<int Nstate, int Nobs, int Ncom = 0, class MemF = Array<Nstate,Nstate,float> >
^
c:\Users\ADMIN\Documents\Arduino\libraries\Kalman/Kalman.h:135:10: error: 'Identity' in namespace 'BLA' does not name a template type
BLA::Identity<Nstate,Nstate> Id; // Identity matrix
^~~~~~~~
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:36:19: error: template argument 4 is invalid
KALMAN<Nstate,Nobs> K; // your Kalman filter
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino: In function 'void setup()':
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:62:5: error: request for member 'F' in 'K', which is of non-class type 'int'
K.F = {1.0, 0.0,
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:65:5: error: request for member 'H' in 'K', which is of non-class type 'int'
K.H = {1.0, 0.0,
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:68:5: error: request for member 'R' in 'K', which is of non-class type 'int'
K.R = {n1n1, 0.0,
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:71:5: error: request for member 'Q' in 'K', which is of non-class type 'int'
K.Q = {m1m1, 0.0,
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino: In function 'void loop()':
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:89:5: error: request for member 'update' in 'K', which is of non-class type 'int'
K.update(obs);
^~~~~~
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:92:45: error: request for member 'x' in 'K', which is of non-class type 'int'
Serial << state << ' ' << obs << ' ' << K.x << '\n';
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino: In function 'void SIMULATOR_UPDATE()':
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:120:13: error: request for member 'F' in 'K', which is of non-class type 'int'
state = K.F * state + state_var; // time evolution
^
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino: In function 'void SIMULATOR_MEASURE()':
C:\Users\ADMIN\AppData\Local\Temp.arduinoIDE-unsaved2023812-12140-1a8a6ox.cm8d\kalman_step\kalman_step.ino:131:11: error: request for member 'H' in 'K', which is of non-class type 'int'
obs = K.H * state + noise; // measurement
^
exit status 1
Compilation error: template argument 4 is invalid
Arduino:1.8.19 (Windows 10), Kart:"Node32s, Default, 80MHz, 921600, None, Disabled"
In file included from C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master\examples\kalman_minimal\kalman_minimal.ino:12:
C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master/Kalman.h:131:59: error: 'Array' does not name a type
template<int Nstate, int Nobs, int Ncom = 0, class MemF = Array<Nstate,Nstate,float> >
^~~~~
C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master/Kalman.h:131:64: error: expected '>' before '<' token
template<int Nstate, int Nobs, int Ncom = 0, class MemF = Array<Nstate,Nstate,float> >
^
C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master/Kalman.h:135:10: error: 'Identity' in namespace 'BLA' does not name a template type
BLA::Identity<Nstate,Nstate> Id; // Identity matrix
^~~~~~~~
kalman_minimal:31:19: error: template argument 4 is invalid
KALMAN<Nstate,Nobs> K; // your Kalman filter
^
C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master\examples\kalman_minimal\kalman_minimal.ino: In function 'void setup()':
kalman_minimal:47:5: error: request for member 'F' in 'K', which is of non-class type 'int'
K.F = {1.0, 0.0,
^
kalman_minimal:50:5: error: request for member 'H' in 'K', which is of non-class type 'int'
K.H = {1.0, 0.0,
^
kalman_minimal:53:5: error: request for member 'R' in 'K', which is of non-class type 'int'
K.R = {n1*n1, 0.0,
^
kalman_minimal:56:5: error: request for member 'Q' in 'K', which is of non-class type 'int'
K.Q = {m1*m1, 0.0,
^
C:\Users\yasin\Desktop\Dosyalar\arduino\libraries\Kalman-master\examples\kalman_minimal\kalman_minimal.ino: In function 'void loop()':
kalman_minimal:68:5: error: request for member 'F' in 'K', which is of non-class type 'int'
K.F = {1.0, 0.2,
^
kalman_minimal:75:5: error: request for member 'update' in 'K', which is of non-class type 'int'
K.update(obs);
^~~~~~
kalman_minimal:78:29: error: request for member 'x' in 'K', which is of non-class type 'int'
Serial << obs << ' ' << K.x << '\n';
^
exit status 1
template argument 4 is invalid
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Kalman.h:183:16: error: 'class BLA::Matrix<2, 2, BLA::Array<2, 2, float> >' has no member named 'Inverse'
183 | K = P*(~H)*S.Inverse(&status);
| ~~^~~~~~~
The BasicLinearAlgebra Github has this example and the syntax is "Invert(Matrix)", so maybe a easy fix? I have solved this by changing that section to:
//K = P*(~H)*S.Inverse(&status);
bool is_nonsingular = Invert(S);
K = P*(~H)*S;
if(is_nonsingular){
//if(!status){
Additionally, in the minimal example:
kalman_minimal:71:9: error: 'get_sensor_data' was not declared in this scope
Where is this function? Is it like "SIMULATOR_UPDATE()"?
Additionally:
My Feather M0 stops working (needs manual reset into boot loader) when I include this line:
KALMAN<Nstate,Nobs> K; // your Kalman filter
Need to test a different µC --> works with Arduino Leonardo (Pro Micro // MEGA32U4)
PS:
Any issue or successful test? Your feedback is important for improving this library. See the Contact section at the end of this file or write to the Group!
The link is broken. It can be found atleast at one more position.
To get the library to compile I had to make a copy and comment out all of the KALMAN_VERBOSE Serial calls.
It would be better to wrap them in an #ifdef.
After i used the Example, the Arduino didn't booted anymor.
After a lon search i found the term, which is killing the arduini.
KALMAN<Nstate,Nobs> K;
as soon as i implement this, the Arduini is not booting anymore after the upload.
PC cannot find it anymore. I have to do the double reset to send a new program.
I tried it on the Arduino Nano33 IoT and the MKR 1010 (Both SMAD)
Using "kalman_minimal" example I get tons of error. I tried to hot-fix the issue (array -> matrix etc.) but simply failed.
kalman_minimal\kalman_minimal.ino: In function 'void setup()':
kalman_minimal\kalman_minimal.ino:54:22: error: no match for 'operator=' (operand types are 'BLA::Matrix<2, 2, Symmetric<2, float> >' and '<brace-enclosed initializer list>')
0.0, n2*n2};
^
In file included from BasicLinearAlgebra/BasicLinearAlgebra.h:7:0,
from Kalman/Kalman.h:34,
from kalman_minimal\kalman_minimal.ino:12:
BasicLinearAlgebra/ElementStorage.h:50:13: note: candidate: BLA::Matrix<Rows, Cols, DType>& BLA::Matrix<Rows, Cols, DType>::operator=(const BLA::Matrix<Rows, Cols, DType>&) [with int Rows = 2; int Cols = 2; DType = Symmetric<2, float>]
Matrix &operator=(const Matrix &mat)
^~~~~~~~
BasicLinearAlgebra/ElementStorage.h:50:13: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const BLA::Matrix<2, 2, Symmetric<2, float> >&'
kalman_minimal\kalman_minimal.ino:57:22: error: no match for 'operator=' (operand types are 'BLA::Matrix<2, 2, Symmetric<2, float> >' and '<brace-enclosed initializer list>')
0.0, m2*m2};
^
In file included from BasicLinearAlgebra/BasicLinearAlgebra.h:7:0,
from Kalman/Kalman.h:34,
from kalman_minimal\kalman_minimal.ino:12:
BasicLinearAlgebra/ElementStorage.h:50:13: note: candidate: BLA::Matrix<Rows, Cols, DType>& BLA::Matrix<Rows, Cols, DType>::operator=(const BLA::Matrix<Rows, Cols, DType>&) [with int Rows = 2; int Cols = 2; DType = Symmetric<2, float>]
Matrix &operator=(const Matrix &mat)
^~~~~~~~
BasicLinearAlgebra/ElementStorage.h:50:13: note: no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const BLA::Matrix<2, 2, Symmetric<2, float> >&'
In file included from kalman_minimal\kalman_minimal.ino:12:0:
Kalman/Kalman.h: In instantiation of 'KALMAN<Nstate, Nobs, Ncom, MemF>::KALMAN() [with int Nstate = 2; int Nobs = 2; int Ncom = 0; MemF = BLA::Matrix<2, 2, float>]':
kalman_minimal\kalman_minimal.ino:31:21: required from here
Kalman/Kalman.h:253:3: error: no matching function for call to 'BLA::Matrix<2, 2, Symmetric<2, float> >::Fill(double)'
this->P.Fill(0.0);
^~~~
In file included from Kalman/Kalman.h:34:0,
from kalman_minimal\kalman_minimal.ino:12:
BasicLinearAlgebra/BasicLinearAlgebra.h:78:10: note: candidate: void BLA::MatrixBase<DerivedType, rows, cols, DType>::Fill(const DType&) [with DerivedType = BLA::Matrix<2, 2, Symmetric<2, float> >; int rows = 2; int cols = 2; d_type = Symmetric<2, float>; BLA::MatrixBase<DerivedType, rows, cols, DType>::DType = Symmetric<2, float>]
void Fill(const DType &val) { *this = val; }
^~~~
BasicLinearAlgebra/BasicLinearAlgebra.h:78:10: note: no known conversion for argument 1 from 'double' to 'const DType& {aka const Symmetric<2, float>&}'
In file included from kalman_minimal\kalman_minimal.ino:12:0:
Kalman/Kalman.h: In instantiation of 'void KALMAN<Nstate, Nobs, Ncom, MemF>::_update(BLA::Matrix<Outputs>, BLA::Matrix<Nstate>) [with int Nstate = 2; int Nobs = 2; int Ncom = 0; MemF = BLA::Matrix<2, 2, float>]':
Kalman/Kalman.h:240:10: required from 'void KALMAN<Nstate, Nobs, Ncom, MemF>::update(BLA::Matrix<Outputs>) [with int Nstate = 2; int Nobs = 2; int Ncom = 0; MemF = BLA::Matrix<2, 2, float>]'
kalman_minimal\kalman_minimal.ino:75:15: required from here
[...many more errors...]
Salut Romain,
I was wondering if it would be possible to fuse a low-cost GPS (tinyGPS++) and IMU (bno055)? Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.