Coupling Between IMU And Optical Encoder

The notation for $\omega$corresponds to wheel velocity in inertial frame. This is the wheel velocity with respect to the inertial frame as shown. However what I measure from the encoder is $\omega_{enc}$ , and this value is with respect to the body of BoRam, I will refer to this frame as the Body Frame. The relationship between $\omega$and $\omega_{enc}$can be described
as

(1)
\begin{align} \omega_{enc}=\omega-\dot{\theta} \end{align}

Therefore this relationship should be implemented in the microcontroller correctly in order to blend the correct angular velocity in the model dynamics.

This gives an interesting perspective. Not only do I need to have the best quality data from each sensor, but I also need to have them compatible with each other. Let's say that some sensor had a notable
defect in it, a jumpy signal for instance, and I applied running average filter to smooth the curve. There is another sensor that is related to it but no conditioning was applied because it was good enough. In the end, after the relationship is applied, the resulting signal becomes worse than it would had been if I did not apply the filter to the defected sensor. This is because running average introduces signal delay. Therefore if I were to perform a running average filter to smooth the curve, I should do it not immediately to the data that are ill-conditioned but after the relationships with other data are applied.

The following figure illustrates the data that was collected with the wheels fixed at one position and only the body swing back and forth. The first 170 steps were performed in a steady slow motion and afterward I applied fast motion to see the difference. The color green indicates angular rate deduced by the encoder, blue indicates Kalman filter rate of the body, The color red indicates $\omega$in inertial frame, and in this situation it should always be a constant 0. This shows that different sensor dynamics can introduce significant noise if not taken care of properly. My experience showed although running average algorithm works well for curve smoothing it introduces significant delay that in this kind of situation cannot be tolerated.

reality-gyro-encoder3-runningaverage.png
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License