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.
Intro
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.
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.
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
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
- 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
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:
- Ultrasound
- 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
- Location can jump due to noise or non-line of sight
- Has relatively slow location update – typically, ~8Hz
- 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
- 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
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
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
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.
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.
Positioning track based on sensor fusion - triangle
Close view on fused IMU (blue) and ultrasound (orange) location points - corners of triangle
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 results with settings: 1 forward and 5 backward
Realtime Player results with settings: 3 forward and 5 backward
- 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
Realtime Player gives good results when the update rate is high enough
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:
Summary
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.