an optimal encoding project with Kalman filtering

Hi,

I am completely new to robotics. To start learning by doing, I decided to perform a hello-world-type project with Kalman filtering. All what I know is only a little math theory and limited experience with Simulink.

The filter must reduce the noise from an incremental optical encoding system, which is consisting of these parts:

  1. HSR-1422CR Continuous Rotation Standard Servo

  2. Inex Infrared Reflective Sensor - TCRT5000L

http://www.robotshop.ca/inex-infrared-r … TCR-2.html

  1. Arduino Duemilanove USB Microcontroller Board

http://www.robotshop.ca/arduino-usb-mic … board.html

  1. Also learned about codewheel here:

http://www.mindspring.com/~tom2000/Delp … wheel.html

  1. I have seen some practical implementations of KF, for instance here:

http://www.arduino.cc/cgi-bin/yabb2/YaB … 1225283209

The hardware assembling is consisting of:

  1. Mounting the codewheel on the servo

  2. Mounting the reflector sensor, faced to the codewheel

  3. Connect them to the Arduino

  4. Connect the Arduino to a PC, to program the system explained below.

The thing is that I still did not receive the parts I bought, and I can’t sit, doing nothing! I would like to start a simulation phase:

  1. Develop a block-diagram of the control system with math-model of parts, with a Kalman filter embedded in that and a source of random process generating.

  2. Get a graph, showing actual system state with and without noise, and the Kalman-filtered signal all together, so that to see and feel (how) the filter works.

This finishes the simulation phase, and hopefully by finishing it in a week, I will have my parts and go for a real experiment Smile

Please support:

  1. What is your idea about the block-diagram, parts and their math-model?

  2. What should be the state-space equation? I can’t imagine, what the state of the system must be in this case? Spinning angle, or the distance?

  3. Any other general recommendations / instructions / link to tutorials, all are very welcome!

Best Regards!!

This is an ambitious project for a first time roboticist! Don’t be discouraged if you spend a while working on subproblems you didn’t expect at first.

  1. I haven’t done exactly this, but I think you will have two main sources of noise: quantization noise (since the code wheel has finite resolution) and sampling (jitter?) noise. Neither one will be AWGN, and they’ll both change depending on how fast the wheel is turning— I don’t know how this will affect the Kalman filter.

  2. I think it’s probably better to estimate wheel rotation/angle with the filter, and then account for slippage and tire deformation error separately.

  3. In most cases, the encoder is good enough and the robot moves slowly enough that you don’t actually need sophisticated filtering on the encoder inputs.

Just my two cents; I’m hardly an expert…