Silicon Labs Real-Time Locationing (RTL) Library
Release Notes | Downloads
Bluetooth 5.1 introduces support for Direction Finding by adding the option to send and receive Constant Tone Extensions (CTEs) after Bluetooth packets. This makes it possible to do phase measurements on antenna arrays and ultimately to determine the direction of an incoming signal. To learn more about the theory of Direction Finding and how to determine the direction of incoming signals, see UG103.18: Bluetooth® Direction Finding Fundamentals.
Beginning with Bluetooth SDK v3.0, Silicon Labs’ Bluetooth stack supports CTE transmitting and receiving features and can take phase measurements on the incoming signal as specified by the Bluetooth standard. Note, however, that the determination of the angle of incidence from the phase measurements is outside of the scope of the standard and must be implemented in the application. To reduce the Time to Market for its customers, Silicon Labs also offers a reference implementation of a Bluetooth-based Real Time Locating System (RTLS), which provides both an out-of-box experience to evaluate the solution and a flexible framework that makes it possible for everyone to create their own RTLS. To get started with the reference implementation, refer to AN1296: Application Development with Silicon Labs’ RTL Library.
Users can also employ custom direction-finding algorithms on top of the Bluetooth stack. This requires deep knowledge in Direction Finding but enables even more flexibility. If you choose this approach, see AN1297: Custom Direction-Finding Solutions using Silicon Labs’ Bluetooth Stack.
The Silicon Labs Direction Finding solution is part of the Bluetooth SDK. If you are not yet familiar with the Silicon Labs Bluetooth SDK, start with QSG169: Bluetooth® SDK v3.x Quick-Start Guide.
Finally, whether you use Silicon Labs’ Direction Finding board or your own design, AN1195: Antenna Array Design Guidelines for Direction Finding provides useful information regarding antenna design. It also provides accuracy measurement results of the RTL library used with Silicon Labs’ Direction Finding board.
For more information and to get started with Bluetooth Direction Finding, see QSG175: Silicon Labs Direction Finding Solution Quick-Start Guide.
Real Time Locating (RTL) Library
Estimating the Angle of Arrival (AoA) or Angle of Departure (AoD) from IQ samples is not trivial, especially in a real environment full of reflections. To optimize development and to speed up time-to-market, Silicon Labs provides a Real Time Locating library (RTL lib), which processes the IQ samples received from the Bluetooth stack, implements multipath detection and azimuth and elevation calculation, and exposes the data to the application via an open API.
Silicon Labs RTL Library Providing Azimuth and Elevation
Furthermore, the library can also estimate the location of a tracked asset in a multi-locator scenario using triangulation, where multiple locators receive CTEs from the same asset tag, provided that the library knows the position of each locator. In this case, the positions of the locators and the estimated angles (AoA) serve as the input, and the estimated location is the output.
Silicon Labs RTL Library Providing X, Y and Z
After the positions are estimated, user’s application has to determine how to process data.
The RTL library provides the following features:
|Feature||Value and Comments|
|Direction Finding Method||AoA|
|# of tags supported||infinite (lib needs to be initialized for each, and physical channel puts a limitation on this)|
|# of locators supported||100|
|Antenna arrays supported||4x4 URA, 3x3 URA, 1x4 ULA antenna arrays on Silicon Labs Antenna Array board|
|Modes of operation||Single shot / Real time,|
Fast response / Basic / High accuracy
Azimuth & elevation / Azimuth only
|Supported platforms||Windows x64, Ubuntu x64, Raspbian (Cortex A), Darwin x64|
The RTL library is provided as a single static library for each supported platform. The library can be found in the Gecko SDK suite under: C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.3\util\silicon_labs\aox
The library has three API classes, as follows:
- Angle of Arrival / Departure (sl_rtl_aox): API used for AoA/AoD estimation from IQ samples. (Currently only AoA is supported.)
- Location Finding (sl_rtl_loc): API used for location estimation (x, y, z coordinates) from AoA/AoD.
- Utility Functionality (sl_rtl_util_): API grouping utility functions that may be useful during AoA/AoD/location estimation
An IQ Sample Quality Analysis API is also available inside the Angle of Arrival / Departure and Utility Functionality classes to provide analytical measurements of different errors in the system.
Angle of Arrival / Departure
Bluetooth has two direction-finding methods: Angle of Arrival (AoA) estimation and Angle of Departure (AoD) estimation. Currently, the RTL library supports AoA mode only. In this mode, the transmitter transmits a constant tone on a single antenna, and the receiver receives this signal on multiple antennas. Based on their spatial situation, the receiver antennas will receive the same signal with different phase offsets, from which the direction of the incoming signal can be estimated.
Angle of Arrival
While it is easy to estimate the Angle of Arrival in an environment free of noise and reflections, it can get quite challenging in a noisy real-world environment with a lot of reflections. To mitigate the effects of reflections, the RTL library uses different methods, such as spatial and temporal filtering, averaging over multiple frequencies, and so on.
If there are multiple fixed-position locators that can calculate the direction of the transmitter (asset tag), the position of the asset tag can be calculated from the angles using triangulation. In addition to the Angle of Arrival estimation, the RTL library also provides location finding functionality. After the library learns the position of each locator and gathers the angles from each locator, it can provide a position estimation for asset tags. Just as for AoA estimation, challenges introduced by the reflective and noisy environment are addressed.
IQ Sample Quality Analysis
Errors from multiple sources can affect the quality of the received IQ samples. In a real-life environment, some phenomena are considered as normal and not errors, but can also corrupt the perceived IQ data. The most notable example of this is the multipath propagation, which twists the perceived magnitude and phase of the IQ sample data. Its extent depends on the particular antenna location in the array as well as the position and the angle of the followed tag related to the locator antenna array.
The possible sources for the perceived noise may include the following:
- Radio receiver analog noise
- Quantization noise from the sampling
- Leaking signals from the surrounding channels folding into the band of interest
- Sampling jitter that translates into noise
- Other radio protocols operating on the same band
- Cosmic background noise
- And so on ….
In other words, there are a plenty of sources for signal noise even in relatively good conditions. In addition to the calculation of Angle of Arrival and position estimations, the RTL library also provides functionality called IQ sample quality analysis to help developers find the root cause of angle estimation issues by analyzing statistical properties of the IQ samples.
Real Time Locating System (RTLS) Reference Implementation
Although it is up to developers to determine how the RTL library is used in the application, Silicon Labs offers a reference implementation of a Bluetooth-based Real Time Locating System (RTLS), which provides both an out-of-box experience to evaluate the solution and a flexible framework that makes it possible for everyone to create their own RTLS. The general architecture of this reference RTLS, using Silicon Labs RTL library, looks like this:
General RTLS Architecture as Implemented in the Bluetooth SDK
All AoA related sample apps in the Bluetooth SDK are created so that they support this model. To learn more about the sample apps, see AN1296: Application Development with Silicon Labs’ RTL Library.
Note that on the Locator side the devices work in a Network Co-Processor (NCP) mode, that is, the stack runs on the EFR32 chip, but the application runs on a host computer. Currently, due to the limited computational capacity of the EFR32 chips, only NCP mode is supported, that is the RTL library cannot be used on the chip. To learn more about NCP mode, see AN1259: Using the v3.x Silicon Labs Bluetooth® Stack in Network Co-Processor Mode.
The locators can connect to the central PC in many ways. Silicon Labs’ reference implementation uses MQTT to collect angle data from locators, since it gives the flexibility to run the host sample apps on a distributed network as well as on a single PC using localhost, but other implementations can also be used.