ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Basic answer: you don't.

The relation from acceleration to space is a double integral, this means the second integral is integrating the error in the first which you can't eliminate.

Accelerometers are never used alone to measure space. You could obtain a decent estimate for around 100m, no farther than that.

All of this is valid for MEMS, other technologies (like ICP) respond differently, but the double integration error is inherent in the math behind it all.

Basic answer: you don't.

The relation from acceleration to space is a double integral, this means the second integral is integrating the error in the first which you can't eliminate.

Accelerometers are never used alone to measure space. You could obtain a decent estimate for around 100m, no farther than that.

All of this is valid for MEMS, other technologies (like ICP) respond differently, but the double integration error is inherent in the math behind it all.

If you simulate it in matlab by moving a point by its speed, deriving acceleration and then integrating acceleration two times to obtain space, you'd see the estimate will drift hugely over time.

It would drift even if you'd use the acceleration instead of the speed, only the simulation would appear much more reliable than the real thing because you would not have all the noise that affect the various processes in a real system. Unless you simulate it that is...

Basic answer: you don't.

The relation from acceleration to space is a double integral, this means the second integral is integrating the error in the first which you can't eliminate.

Accelerometers are never used alone to measure space. You could obtain a decent estimate for around 100m, no farther than that.

All of this is valid for MEMS, other technologies (like ICP) respond differently, but the double integration error is inherent in the math behind it all.

If you simulate it in matlab by moving a point by its speed, deriving acceleration and then integrating acceleration two times to obtain space, you'd see the estimate will drift hugely over time.

It would drift even if you'd use the acceleration instead of the speed, only the simulation would appear much more reliable than the real thing because you would not have all the noise that affect the various processes in a real system. Unless you simulate it that is...

Detailed explanation as to why this is the truth about MEMS accelerometers.

Every sensor has its pros and cons. MEMS accelerometers are misleadingly named: they don't really measure accelerations, rather they measure the direction of the gravity vector. This measure is often used to correct the bias of MEMS gyros which tend to accumulate during integration.

A proper IMU, as those found in military systems or civilian passenger jets, is a bulky, powerthirsty thing using huge sensors like mechanical gyroscopes (real rotating mass) or laser ones and real accelerometers made with displaced masses (check wikipedia).

MEMS accelerometers on the contrary are way too small and subject to noise, just like MEMS gyros: if you blindly integrate a gyro's signal, you'll end up with a big accumulated error very fast. Should you do the same with a MEMS accelerometer, integrating to get the speed, you'd also get to an unrecoverable error very fast.

This is due to the inherent nature of the mechanics involved: these kind of sensors are accurate in the transients, but have very noisy steady state ouputs. Such sensors are, by design, suitable for instantaneous measurement rather than accumulated data.

So in 6dof system the Kalman filter family greatly benefits from the fusion of accelerometer and gyroscopes because this fusion yields a very accurate 5dof estimation but don't let the names mislead you: 6dof system means it has 6 degrees of freedom, it doesn't mean it gives you accurate measurements on 6 degrees of movements. Actually what you end up with is a pretty noisy and rough estimate on 4 (the 3 translations and the z rotation) and a very accurate on on 2 (the x and y rotation).

This is much akin to human capability: if I put you in the desert and tell you where you are, than wait some time while you walk and then ask you for your estimation of your position, the degree to which you diverge depends utterly from the time I ask you. And there is no way you can solve that, as you don't have anything by which to reference your position. The same thing done in a town would go much better as you can use buildings, posts, signals, colours, shapes and whatnot to better place you (if you know the town that is).

MEMS sensors are just not made to give the kind of long term accuracy needed for position estimation (which is made by integration), should you trouble yourself to have a look at the kind of compensations which is needed to get decent results have a read at this paper: Error Reduction Techniques for a MEMS Accelerometer-based Digital Input Device.

I hope this suffice as a detailed answer. It all depends how you look at the results: if you want to plot the course of an airplane, a MEMS IMU is not just made for that; if you want to track the last few tens of meters walked by a downed firefighter to save him, MEMS IMUs may be the best solution.

Basic answer: you don't.

The relation from acceleration to space is a double integral, this means the second integral is integrating the error in the first which you can't eliminate.

Accelerometers are never used alone to measure space. You could obtain a decent estimate for around 100m, no farther than that.

All of this is valid for MEMS, other technologies (like ICP) respond differently, but the double integration error is inherent in the math behind it all.

If you simulate it in matlab by moving a point by its speed, deriving acceleration and then integrating acceleration two times to obtain space, you'd see the estimate will drift hugely over time.

It would drift even if you'd use the acceleration instead of the speed, only the simulation would appear much more reliable than the real thing because you would not have all the noise that affect the various processes in a real system. Unless you simulate it that is...

Detailed explanation as to why this is the truth about MEMS accelerometers.

Every sensor has its pros and cons. MEMS accelerometers are misleadingly named: they don't really measure accelerations, rather they measure the direction of the gravity vector. This measure is often used to correct the bias of MEMS gyros which tend to accumulate during integration.

A proper IMU, as those found in military systems or civilian passenger jets, is a bulky, powerthirsty thing using huge sensors like mechanical gyroscopes (real rotating mass) or laser ones and real accelerometers made with displaced masses (check wikipedia).

MEMS accelerometers on the contrary are way too small and subject to noise, just like MEMS gyros: if you blindly integrate a gyro's signal, you'll end up with a big accumulated error very fast. Should you do the same with a MEMS accelerometer, integrating to get the speed, you'd also get to an unrecoverable error very fast.

This is due to the inherent nature of the mechanics involved: these kind of sensors are accurate in the transients, but have very noisy steady state ouputs. Such sensors are, by design, suitable for instantaneous measurement rather than accumulated data.

So in 6dof system the Kalman filter family greatly benefits from the fusion of accelerometer accelerometers and gyroscopes because this fusion yields a very accurate 5dof 6dof estimation but don't let the names mislead you: 6dof system means it has 6 degrees of freedom, it doesn't mean it gives you accurate measurements on 6 degrees of movements. Actually what you end up with is a pretty noisy and rough estimate on 4 (the 3 translations and the z rotation) and a very accurate on one on 2 (the x and y rotation).

This is much akin to human capability: if I put you in the a desert and tell you where you are, than wait some time while you walk and then ask you for your estimation of your position, the degree to which you diverge from the actual position depends utterly from on the time I ask you. The longer the time I let you walk, the worst estimate you'd be able to give.

And there is no way you can solve that, as you don't have anything by which to reference your position. The same thing done in a town would go much better as you can use buildings, posts, signals, colours, shapes and whatnot to better place you (if you yourself. Even if you didn't know the town that is).place, you'd at least be able to know the distance walked, the turns taken, and guess at your position with a fair degree of accuracy.

MEMS sensors are just not made to give the kind of long term accuracy needed for position estimation (which is made by integration), should you trouble yourself to have a look at the kind of compensations which is needed to get decent results have a read at this paper: Error Reduction Techniques for a MEMS Accelerometer-based Digital Input Device.

I hope this suffice as a detailed answer. It all depends how you look at the results: if you want to plot the course of an airplane, a MEMS IMU is just not just made for that; if you want to track the last few tens of meters walked by a downed firefighter to find him and save him, MEMS IMUs may be the best solution.

Basic answer: you don't.

The relation from acceleration to space is a double integral, this means the second integral is integrating the error in the first which you can't eliminate.

Accelerometers are never used alone to measure space. You could obtain a decent estimate for around 100m, no farther than that.

All of this is valid for MEMS, other technologies (like ICP) respond differently, but the double integration error is inherent in the math behind it all.

If you simulate it in matlab by moving a point by its speed, deriving acceleration and then integrating acceleration two times to obtain space, you'd see the estimate will drift hugely over time.

It would drift even if you'd use the acceleration instead of the speed, only the simulation would appear much more reliable than the real thing because you would not have all the noise that affect the various processes in a real system. Unless you simulate it that is...

Detailed explanation as to why this is the truth about MEMS accelerometers.sensors.

Every sensor has its pros and cons. MEMS accelerometers are misleadingly named: they don't really measure accelerations, rather they measure the direction of the gravity vector. This measure is often used to correct the bias of MEMS gyros which tend to accumulate during integration.

A proper IMU, as those found in military systems or civilian passenger jets, is a bulky, powerthirsty thing using huge sensors like mechanical gyroscopes (real rotating mass) or laser ones and real accelerometers made with displaced masses (check wikipedia).

MEMS accelerometers on the contrary are way too small and subject to noise, just like MEMS gyros: if you blindly integrate a gyro's signal, you'll end up with a big accumulated error very fast. Should you do the same with a MEMS accelerometer, integrating to get the speed, you'd also get to an unrecoverable error very fast.

This is due to the inherent nature of the mechanics involved: these kind of sensors are accurate in the transients, but have very noisy steady state ouputs. Such sensors are, by design, suitable for instantaneous measurement rather than accumulated data.

So in 6dof system the Kalman filter family greatly benefits from the fusion of accelerometers and gyroscopes because this fusion yields a very accurate 6dof estimation but don't let the names mislead you: 6dof system means it has 6 degrees of freedom, it doesn't mean it gives you accurate measurements on 6 degrees of movements. Actually what you end up with is a pretty noisy and rough estimate on 4 (the 3 translations and the z rotation) and a very accurate one on 2 (the x and y rotation).

This is much akin to human capability: if I put you in a desert and tell you where you are, than wait some time while you walk and then ask you for your estimation of your position, the degree to which you diverge from the actual position depends utterly on the time I ask you. The longer the time I let you walk, the worst estimate you'd be able to give.

And there is no way you can solve that, as you don't have anything by which to reference your position. The same thing done in a town would go much better as you can use buildings, posts, signals, colours, shapes and whatnot to better place yourself. Even if you didn't know the place, you'd at least be able to know the distance walked, the turns taken, and guess at your position with a fair degree of accuracy.

MEMS sensors are just not made to give the kind of long term accuracy needed for position estimation (which is made by integration), should you trouble yourself to have a look at the kind of compensations which is needed to get decent results have a read at this paper: Error Reduction Techniques for a MEMS Accelerometer-based Digital Input Device.

I hope this suffice as a detailed answer. It all depends how you look at the results: if you want to plot the course of an airplane, a MEMS IMU is just not made for that; if you want to track the last few tens of meters walked by a downed firefighter to find him and save him, MEMS IMUs may be the best solution.