# How Precise can I get with Accelerometer and Gyroscope

I want to build a little project to track an objects position in space. For this I intend to use an accelerometer and a gyroscope.

The problem is I want this tracking to be very precise, and I haven't been able to figure out how precise you can actually get (for a fair amount of money). Are we talking 1 centimeter, or centimeters / 1000 ?

The specific combination I'm looking to buy is from SparkFun: IMU Fusion Board - ADXL345 & IMU3000 But I'm more interested in a general answer, as I could go with other combinations. Maybe just a general guideline of how to determine it from the specs.

• Are you trying to position the device in 3D space, or is it constrained in some manner? Also, do you require attitude information in addition to position? Oct 12, 2011 at 17:30
• Well I only really care about relative positions. I don't care about where it is in the world (GPS coords or anything like that). It is not constrained in any manner, but I would be able to take it to a fixed position once every 15 min to get the right position. I actually need to find the position 5 or 10 cm in front of the component, so I'm guessing that would be hard without the attitude (direction). Oct 12, 2011 at 20:17
• How far would it need to travel from the reference position? Oct 13, 2011 at 9:04
• Max 60 cm. Probably less in most cases (around 35 cm) Oct 13, 2011 at 9:21
• The simple answer here is "how much money do you have?". Money = Performance for IMU systems. Sep 13, 2014 at 10:48

As Rocketmagnet mentioned your error is going to grow with time. The error model typically used in inertial navigation is an exponential growth.

To minimize this you must provide external updates. The mechanism typically employed is a Kalman Filter. The inertial sensors provide very good high rate updates. Your external source provides less accurate but long term stable updates at a lower rate (typically something like GPS). These two combine to give you a good combined solution. Not all systems use GPS as the update source. For instance, the IR imager on the front of the Nintendo Wii remote provides the source of these updates.

I'll give you an example of the cost is no factor side of things. I build systems for aerial surveying that utilize inertial systems that cost 100,000+ Euro. With these systems and high end geodetic GPS receivers I can pin-point the location of the IMU to a 2" volume all day long when GPS coverage is good. In the absence of GPS updates (urban canyons, tunnels, etc.) after about 60 seconds we have an error margin of about 10cm. Systems with this level of performance are typically ITAR controlled goods as they are weapons grade devices.

Lower quality MEMS inertial systems are used all day long in less demanding applications yielding meter sub-meter level position and attitude. These lower quality systems still employ the same Kalman Filtering mechanism. The real downside to these lower cost units is that your drift error will grow at a much faster rate.

Edit:

To answer your question as to what is important to look for in an IMU. There are a couple of things you want to look at. The first is temperature stability. Some MEMS sensors are going to have outputs that vary by as much as 10% over temperature range. These may not matter if you are at a constant temperature during operation.

The next thing to consider is the gyro noise spectral density. Obviously the lower the noise amount the better. The following link provides documentation about how to get from the spectral noise density to the drift (in degrees per unit time). http://www.xbow.com/pdf/AngleRandomWalkAppNote.pdf

For acceleration you want to look at sensitivity, and bias in addition to the noise. The noise level will give you an idea of how quickly you're going to integrate error.

• Great and informative answer :) Basically I need to have very precise measurement all the time (we're talking a millimeter here), the movement isn't very big (max 1 meter), so if the position is off by 10 cm, it can't really be used. --- I don't know if you're the guy to ask about magnetic tracker, so I'll post the comment on Rocketmagnets post :) Oct 12, 2011 at 16:08
• Looking at what you have said you're trying to achieve it sounds like an inertial solution is the wrong technology to solve your problem. Unfortunately those levels of performance just aren't available to the general public. This datasheet has a list of position errors listed for different GPS outages (essentially your application). This IMU cost 70k Euro, and after 5 minutes it is out by 40cm. Oct 13, 2011 at 19:58
• Okay, sounds like you're right. This isn't going to work. But thanks for all the help! Oct 14, 2011 at 12:03
• I don't know what your application is or what your limitations are, but here is a suggestion. Perhaps if you had an articulating arm be your point of reference that would get you the precision you need. Something like the faro arm. Build an arm with encoders in each joint. Then it just becomes math! Obviously you wouldn't need to be as precise as they are, but it's an idea on how to get to where you want to be. Oct 14, 2011 at 17:45
• thanks for the suggestion, but that wouldn't work for me. I've figured out it's not possible, so thanks for enlightening me :) Oct 15, 2011 at 13:35

The precision you get is dependent on time. The longer you use it, the more the error will grow. For a short time (a couple of seconds), the precision can be pretty good, less than 1mm. However, because an IMU has no fixed position reference, integration errors will creep in, and eventually you'll be parsecs off, and travelling at the speed of light.

To get good rotation accuracy, you can add a 3-axis compass. To get good good position accuracy, you need some kind of position reference. Exactly what this is depends on how far you want the device to travel.

If you only want to travel a metre or so, I recommend forgetting about the IMU and using a magnetic trcker like the miniBIRD.

For a longer distance you can use GPS.

• Thanks for the answer. I started asking some more questions about miniBIRD, but then noticed the price. Would there be any way to keep the price low, and still have an accuracy of around 1 mm? I would have the ability to reset the position once every second, but I can see this won't help if it goes off by 10 cm on 60 seconds. Oct 12, 2011 at 16:29
• Wow.. that comment had an error, of course I can't reset it every second :D Once every 15 min or so. Oct 12, 2011 at 20:15