Page 1 of 1

configuration of Kalman filter

Posted: Wed Sep 21, 2016 11:09 am
by hyperglider
Hi,

Is there any variables that can be adjusted in the Kalman filter like in the standard particle filter.
eg - pf = pfilter.ParticleFilter(200, 0.1, (10, 10, 2)) could adjust the 200.

Where is the kalman filter called other than in the config.mk > ESTIMATOR = kalman. the standard filter routine is in lps_pf.py. So where is the kalman routine located?

regards
HG

Re: configuration of Kalman filter

Posted: Wed Sep 21, 2016 11:24 am
by arnaud
Hi hyperglider,

The Kalman filter is implemented in the Crazyflie firmware so all parameters are in the firmware. Some of them are accessible using the parameter subsystem. The estimated position is accessible via the log subsystem.

To make the ros nodes compatible I have create a bridge that reads the Crazyflie position using the log subsystem and publish the same topic and tf as lps_pf.py: https://github.com/bitcraze/lps-ros/blo ... _bridge.py

The kalman filter is implemented there: https://github.com/bitcraze/crazyflie-f ... r_kalman.c

Best,
Arnaud

Re: configuration of Kalman filter

Posted: Wed Sep 21, 2016 12:38 pm
by hyperglider
Hi,

In the code at line 59 these is a comment "kalman is only compatible with the Crazyflie 2.0 // since it requires an FPU"

What is an "FPU". in the flie specs it mentions Inertial measurement unit (IMU) but no FPU. Can you explain what an FPU is.

HG

Re: configuration of Kalman filter

Posted: Wed Sep 21, 2016 12:40 pm
by hyperglider
Is the FPU a floating point calculator??

HG

Re: configuration of Kalman filter

Posted: Wed Sep 21, 2016 1:16 pm
by arnaud
FPU is Floating Point Unit, it is a CPU co-processor that do math on floating point numbers. The Crazyflie 2.0 has an STM32F450 Cortex-m4f that contains an FPU. The Crazyflie 1 has a Cortex-M3 that does not, so it has to emulate the FPU which leads to much slower performance. Since the kalman filter is computational intensive it requires the FPU to run fast enough.