11 years, 6 months ago.

Will an IMU tell me how far my robot has moved?

Hi I want to know where my tracked vehicle is. It has a wifly module and I'm wondering if the data I get from this 6 degrees IMU will enable me to know how far my vehicle has moved and in what direction. http://www.ebay.co.uk/itm/260946284718?ssPageName=STRK:MESINDXX:IT&_trksid=p3984.m1436.l2649. If this is not the right sort of device can anyone suggest a better type. Im hoping to do a simple dead reckoning navigation.

3 Answers

11 years, 6 months ago.

Wheel encoders will probably work better than an IMU in telling you how far you have moved but an IMU which has gyros and magnetometers can work quite well for the production of a heading measurement. I find the following article by David Anderson to be a great overview of such sensor fusion: http://www.geology.smu.edu/dpa-www/robo/Encoder/imu_odo/

-Adam

Accepted Answer
11 years, 6 months ago.

Hi!

I've been thinking about this because of a project I'm into and it'll have an IMU. As said before, an IMU is not the best to tell how far a robot has gone because it does not measure distance, but acceleration (and other things).

Anyway, you could (as I hope this works for me) try to 'integrate' (sum over time in our case) twice the acceleration to have some notion of the displacement occurred. Remember that you need also to measure the accelerations with some knowledge of the time the measurements are done. For example, if you measure the acceleration about 1ms, this should be taken in account. You could do something like this:

float x_vel = 0, x_pos = 0;
const float timestamp = 0.001f; // 1ms

void Calculate(float x_acc) {
   x_vel += x_acc * timestamp;  // Assuming you defined the timestamp somewhere
   x_pos += x_vel * timestamp;
}

Like this (or something like that... I've created this right now, so I couldn't test...) you can have the current velocity and the current displacement.

Hope this idea works :)

Regards, Cristóvão Rufino

11 years, 6 months ago.

Hi,

IMU's are not the best way to do this. They can tell you rotation, acceleration and forces like that.

To do cheap distance measurements you can do something like this: http://www.martijnthe.nl/2009/07/interfacing-an-optical-mouse-sensor-to-your-arduino/

Regards, Sjoerd