Algorithm developed to calibrate anchors in a UWB indoor location system.
A piece of advice: store all the data involved. This way, in the end of this process, we reduce drastically the possibility of having something amiss :-).
Carefully read the documentation of the calibrate() function located in the src/ directory to understand its purpose, parameters, and expected outputs. Test the code on generated use cases, such as the one presented in the documentation.
Obtain the true positions of the anchors (ground-truth) with high precision for comparison against both our approach and the manufacturer's approach (e.g., using laser-based measurements or possibly using ArUco markers). Repeat this process multiple times to minimize the impact of random errors.
Measure and store inter-anchor distances in advance using ArUco markers and/or recurring to communication between anchors. Repeat this process several times to reduce noise effects and use the mean value for better accuracy.
Obtain the anchor position estimates generated by the manufacturer’s algorithm. Repeat this process several times to reduce noise effects and use the mean value for better accuracy.
Design a trajectory for calibration with multiple known points. For example, if using a rectangular trajectory, the known points could be its corners. A higher number of points improves calibration accuracy. It is recommended to use at least eight points, with the ideal trajectory being an infinity (∞) symbol.
Begin moving the tag along the defined trajectory, ensuring it starts at a known point.
Execute the calibrate() function at each known point along the trajectory, using:
- The previously estimated anchor positions
- The tag's previous positions (known a priori, since it is a point of the predefined trajectory)
- The tag's current position (known a priori, since it is a point of the predefined trajectory)
- The measured tag-to-anchor distances
- The inter-anchor distances (known a priori, since step 3)
Store the intermediate anchor position estimates for further analysis and evaluation.
Repeat steps 6–7 multiple times to ensure statistical reliability. Store all collected data properly for later analysis.
Compare the mean anchor positions estimated by the CALNN method against those from the baseline UWB anchor calibration algorithm.
Define a separate trajectory with known intermediate points to assess how both the baseline and proposed estimators influence the accuracy of the tag’s location. To do this:
- Compute the mean positions of both sets of estimated anchors.
- Perform trilateration twice: once using the manufacturer's estimated anchor positions mean and once using the means of the positions estimated by the proposed algorithm.
- Repeat multiple times for statistical significance and store all results, including the estimated tag positions from both trilateration executions.
By following these steps, you ensure a robust evaluation of anchor calibration and its impact on positioning accuracy.