Let's Make Robots!

The infamous Kalman Filter :)

So maybe any of you heard about it, but is there anyone who have made a working implementation?

Or eventually a nice site with a human readable explanation :) ?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
I skipped right over Mr. Kalman and went straight to particle filtering for estimating robot position based on landmark detection.

I read a little something about them and i had the feeling i might just skip over Kalman filters also and give that a shot. seems like it might be less computationhally intensive.

did you deploy anything? and succcess? any tips? what was your research matieral?

 you should get an award for the first and only mention of the term "particle filter" on this website.

i.e. got a c-routine for me? ;-)




Yes, particle filtering is much less demanding on the CPU (unless you add a whole bunch of particles of course, I think we used 2000 particles for the course and the software was running on 2 GHz laptops). 

As far as I can remember the course material was a small article written for the course: http://isis.ku.dk/kurser/blob.aspx?feltid=179070

The filtering worked quite well actually. My only tip would be to experiment with the deviation parameter of the gaussian when sampling particles. Position estimation converges very slowly if this parameter is too small.

I'm always up for an award! :-) I don't think I have the code anymore though, but the filtering is not the hard part. I would think that landmark detection is a bit worse.

this is a great quick intro, with code, on particle filters for localization.

really seems like an incarnation of genetic algorythms sorta.

could be done very simply i imagine.






I've achieved the same thing as a Kalman filter without recursively guessing the state of the system.

The reason I'm not sure how similar it is to a Kalman filter is that I never studied all that crap. I never actually solve the  Consequently I try to do everything from first principles. I think what I did was actually a linear quadratic regulator, but with some of the estimation removed.

So, my co-axial wheeled balancing robot has a gyro and an accelerometer. I integrate the acceleration due to gravity and it gives me an inaccurate, slow to update estimate of where "down" is. I integrate the gyro to get relative rotational position. The accelerometer is slow to update but pretty good at telling me where "down" is. The gyro is quick to update and massively accurate for a short period but it drifts. I add the two together and the difference between that and the last sum gives an estimate of the drift of the gyro, which when subtracted from the gyro reading, tells me almost exatly which way is down. It all goes bananas when the robot starts to move forwards, though. At that point, I quit. Solving linear quadratic equations in 8 bit integer maths in RISC assembler was making my brain turn into something resembling dishwater.

So, that would be a "no" then. 

yeah, i think that just for start, this is not a task you can do on with one of our microcontroller, such as picaxe and the like.. Something more performant is needed..

the other problem is that implementing a kalman filter looks quite hard, or better: i can't find a guide or howto that explains it from the ground up. It shouldn't be that far from what you have done, i guess

There are very few difficult tasks in this world. One of the most spectacularly difficult tasks is to find someone clever enough to understand a principle, but also with the social skills to explain it in a way that others can understand. Usually clever people are crap at explaining stuff.