Fast indoor positioning system based on IMU sensor fusion

Executive summary

A typical location update rate of indoor positioning systems or GPS is ~8-16Hz, which is enough for the majority of industrial applications, but not for all.

A practical way to increase the location update rate to 100Hz and more is to use IMU and ultrasound sensor fusion that combines the best of both sources of data: a very fast update rate and robustness of IMU and absolute coordinates and no drift of the ultrasound indoor positioning system.

Typical applications of the fast indoor positioning system with sensor fusion:

  • Fast mobile objects, for example, karts or quick industrial machinery
  • Fast sports: half-pipe ski jumpers, indoor bike parks, BMX tracks, skate parks, etc.


A typical GPS solution provides ~8-16Hz update rate. It is enough for regular driving but not for jumps by half-pipe skiers or quick karting turns, for example.

The same is true for our ultrasound-based Indoor Positioning System – Indoor “GPS”:

  • It has an update rate of ~8Hz
  • The update rate is limited, first of all, but the time of flight of ultrasound. Thus, for example, for a 20m submap, even theoretically, it cannot be more than (340m/s)/20m=17Hz. For 34m => 10Hz
  • However, there are other time-consuming activities – filtering, radio interface, and other calculations – that reduce the update rate further

As a result, the typical update rate for a typical-size submap of 10-15m is ~8Hz when only ultrasound is employed for positioning.

Indoor positioning system for karting

Limitations to update rate increase

To achieve the highest update rate, see the article: How to increase location update rate and reduce latency?

It is possible to increase the update rate further by specifically tuning the system for this requirement, for example, for the expense of the level of filtering or even accuracy. But the main limiting factor – time of flight of ultrasound – is impossible to eliminate until you reduce the size of the submap.

For tiny submaps of 2-3 meters, for example, air hockey, it is possible to have up to a 40Hz update rate. But this is a very special case.

Air hockey tracking

To further increase the update rate, it is required to use sensor fusion, for example, IMU + Ultrasound.

Location update rate increase options

There are several ways to increase the location update rate:

1) Do post-processing interpolation in the Dashboard using the Realtime Player:

  • Very easy to do, but this approach “cuts the corners” literally. It uses the existing ultrasound positioning data and interpolates between the dots. If there were sharp turns and fast moves as compared to the location update rate, the system can’t know them and can not restore them
  • Default update rate speed – 100Hz. More than that – on request
  • 100Hz or 1kHz update rate is nearly equally easy because it is post-processing of ultrasound location updates
  • Post-processing with 1kHz update rate doesn’t bring any additional accuracy as compared with 100Hz
This functionality is available in the Dashboard and is called the Realtime Player. It doesn’t require any additional hardware or software.

2) Do post-processing of sensor fusion in the Dashboard:

  • It is a real sensor fusion because more than one source of data is used
  • Typical sensor fusion: IMU and ultrasound. But it could be Odometry + Ultrasound (robots, AGVs, forklifts) or Visual + Ultrasound (VR and AR). It is possible to have multiple sensors fused: Ultrasound + IMU + Odometer + Visual. For example, we use it in our robot Boxie
  • It is a pretty complex solution because it requires transferring of fast IMU data with a typical update rate of 100Hz. With multiple mobile beacons involved it increases the radio traffic by a factor of 10-100 and requires additional modems to be placed on both sides: kart and main computer
  • The tracking doesn’t cut the corners. It is very accurate and very fast at the same time
  • Typical real update rate – not interpolation like in Variant 1) above – 100Hz. If needed, it could be 200Hz or 400Hz
This functionality is available commercially and requires:
  • Additional modems on the mobile beacons’ side. They are called in this case: Radio Head Remote (RHR). It is physically a Modem v5.1 hardware with special software. One per mobile beacon
  • Additional modems on the Dashboard/computer’s side. They are called in this case: Radio Head USB (RHU). It is physically a Modem v5.1 hardware with special software. One per mobile beacon as well. RHR together with RHU create a radio transmission channel for fast IMU data in parallel with relatively slow ultrasound location data sent via a regular beacon-modem radio channel
  • Special SW license to enable IMU+Ultrasound Sensor Fusion – Post-Processing. One license per mobile vehicle
The rest of the equipment – stationary beacons, mobile beacons, modem – is the same.

3) Do real-time processing of sensor fusion either on the external computer or onboard:

  • It is similar to Variant 2), but processing is done in real-time
  • The key difference is that in Variant 2) the latency of the location data could be seconds or even minutes for a long track. For this Variant 3), the latency is ~15ms with a 100Hz location update rate
  • This functionality is still in development. If you have a real commercial business case for it, we will push it stronger to finish sooner

IMU + Ultrasound Sensor Fusion Post-Processing

IMU + Ultrasound sensor fusion post-processing is a real sensor fusion mechanism because two sources of location data are combined:

  1. Ultrasound
  2. IMU

Strong and weak points of inertial and ultrasound indoor positioning systems

Each of the sources of location data has strong and weak points:

Ultrasound indoor positioning system’s strong points:

  • Provides absolute location data
  • Has no drift
Ultrasound indoor positioning system’s weak points:
  • Location can jump due to noise or non-line of sight
  • Has relatively slow location update – typically, ~8Hz
Inertial indoor positioning system’s strong points:
  • Has high or very high location update. By default – 100Hz. In future releases on demand – 200-400Hz
  • Has no location jumps due to short non-line of sight
Inertial indoor positioning system’s weak points:
  • The locations calculated using the double-integration of accelerometer data drift very quickly. It is nearly impossible to make a standalone inertial positioning system using modern MEMS IMUs. Such a system must rely on sensor fusion, for example, with ultrasound, or other sources of data that would eliminate drift
  • Only relative location data is available

How sensor fusion works

Let’s now see in practice how sensor fusion works.

Process in short:

  • There is a positioning track from the ultrasound-based indoor positioning system. It is streamed in the same way with sensor fusion or without sensor fusion. See more about the architectures of the indoor position system
  • In parallel to the ultrasound positioning track, there is a fast stream of IMU data – raw 3D accelerometer data and raw 3D gyroscope data – streamed with a 100Hz-update rate from the mobile beacon to the central computer via RHR and RHU
  • Both streams – ultrasound and IMU – have timestamps that allow them to combine together precisely and correctly
  • The system takes both streams and performs mathematical operations – effectively, the sensor fusion
As a result of sensor fusion: 100Hz location update rate, more robustness to noise and obstructions, and no location drift.

Results of sensor fusion

Ultrasound location positioning track - rectangle

Characteristics of the track below:

  • ~8Hz location update rate
  • Scale: 5cm between dots
  • Ultrasound only
  • Very rapid movements of the mobile beacon
Ultrasound location psitioning track

Positioning track based on sensor fusion - rectangle

Characteristics of the track below:

  • Result: 100 Hz location update rate after sensor fusion with IMU – orange dots
  • Original: ~8Hz location update rate of ultrasound – blue dots
  • Scale: 5cm between dots
  • Very rapid movements of the mobile beacon

The track is now real native 100Hz, and it became more robust against short-time obstructions at the same time

IMU and ultrasound sensor fusion

Close view on fused IMU (blue) and ultrasound (orange) location points

One can see how the IMU dots decelerate near the angle and accelerate after passing the angle.

Close view on ultrasound and IMU sensor fusion track

Ultrasound location positioning track - triangle

Conditions are the same as for the example above. But the shape of the track is different to show the performance.

Track of ultrasound based indoor positioning system

Positioning track based on sensor fusion - triangle

Indoor positioning based on sensor fusion

Close view on fused IMU (blue) and ultrasound (orange) location points - corners of triangle

IMU sensor fusion for indoor positioning system

Comparison of sensor fusion and the Realtime Player

Realtime Player "cuts corners", when there is not enough ultrasound data

Notice that when there are too few ultrasound positioning points – either the object is too quick or the location updates are too rare – the Realtime Player clearly “cuts corners”. That leads to higher positioning errors.

  • Very rapid movements of the mobile object
  • Ultrasound update rate ~8Hz – blue dots
  • IMU sensor fusion – 100Hz – orange dots
  • The Realtime Player – 100Hz – pink dots

Realtime Player results with settings: 0 forward and 5 backward

Realtime player cuts corners, where there is no sufficient location data
Realtime Player performance with 0 forward and 5 backward settings

Realtime Player results with settings: 1 forward and 5 backward

Realtime player cuts corners, where there is no sufficient location data
Realtime Player performance with 1 forward and 5 backward settings

Realtime Player results with settings: 3 forward and 5 backward

Realtime Player performance - 3 forward and 5 backward
Realtime Player performance with 3 forward and 5 backward settings
How to read results:
  • The more forward positioning points are required, the more distance where the Realtime Player can’t build the track because there are no forward points
  • The more overall number of points, the smoother the track and the more it is robust to location point omissions, but the more it cuts the corners at the same

Realtime Player can be good enough for smooth curves

For smooth curves, the Realtime Player performance is typically good enough because, even if the update is rare, there are not many changes in the direction. The result after the Realtime Player closely resembles the actual track, and the positioning error is small.
Realtime Player performance with smooth curves

Realtime Player gives good results when the update rate is high enough

The Realtime Player gives excellent results when there is a sufficiently high update rate compared with the curve’s sharpness. For example, the same triangle as above, but with slower movement along the path, give more location update points per unit of distance. The result is that the Realtime Player performs nearly as good the Sensor Fusion.
Realtime Player performance when there are enough points even on the sharp corners

Post-processing time

Currently available implementation of IMU + Ultrasound Sensor Fusion – Post-Processing functionality shows about 10+0.12sec/1sec post-processing speed. Thus, for example:

  • A fast 5-second jump will be post-processed in 10+5*0.12 => 10.6 sec
  • A 15-min kart drive post-processing will take 10+15*60*0.12 => 2min

The figures above are the results of calculations on a Win11 and Intel i5 laptop. Faster desktop computers will provide post-processed results much quicker.

Future code optimization may significantly reduce the post-processing time without needing new hardware or a new license.

Don't confuse sensor fusion for location and direction

Sensor fusion for positioning is a complex task because the location in the inertial positioning system is calculated based on the double integration of the accelerometer data. It isn’t easy to clearly distinguish between the actual acceleration of a tracked mobile object and the impact of the Earth’s gravitation. Thus, inertia-based indoor positioning systems without sensor fusion can’t work.

At the same time, sensor fusion for angle is a significantly more manageable task. We have been commercially offering this functionality for years. Read more:


Sensor fusion is a complex functionality but enables the best possible performance for precise indoor positioning systems because it efficiently combines data from several sources.

Thus, for example, instead of the typical update rate of ~8Hz for a standalone indoor positioning system, the indoor positioning system with IMU sensor fusion achieves an update rate of 100Hz while keeping the same or higher accuracy than a system without IMU sensor fusion and showing even additional robustness against short non-line of sight events or external acoustic noise.

The Realtime Player is sufficiently good for smooth curves or curves with a high enough update rate compared to the curve’s sharpness.

If anything is unclear, contact us via