-
Notifications
You must be signed in to change notification settings - Fork 95
zone
Zone navigation is based on RSSI measurements. We need known beacon/transmitters positions for localization.
PRINCIPLE |
We map user position to the position of transmitter with highest RSSI detected. |
PROS |
Robust and simple solution. |
CONS |
Position movement is not stable, the pose jumps between points of beacons placement. |
We have observations of RSSI, which depend on distance from receiver to transmitter. From RSSI measurements we reconstruct the distance using linear model called log-distance path loss model:
Where A and B are known constants.

grey regions |
walls / occupated region with walls and restricted areas |
white area |
allowed area |
blue lines |
discretization of human motion log |
green cross |
point - ground truth pose definedbefore calculation |
The legend is as follows:
User position is calculated as coordinates of transmitter with highest RSSI. We see that the human position is discretized between points on the walls.
We must consider that user pose and transmitter poses are not coincident. We only have poses of closest transmitters as a positions. If we are interested to test beacons correct placement and configuration, this method can be used.
Because this algorithm standalone doesn’t allow us to estimate a user location and has a noisy behaviour, we apply a filtering procedure to calculated pose.
We have one filter called filter implemented.

Notice that we are not calculating the true position of the user. We just make the trajectory smoother.
Additional smoothing methods (moving average, Kalman filter, Savitzky–Golay filter) can be implemented externally if needed. In such case, we need to turn of the smooothing and pass the signal to external filter.
location settings
"Use_algorithm": "ZONES",
"Sig_averaging_time": 0.7,
"Sig_window_shift": 1.25,
"Cutoff_rss": -100,
"Use_Signals": "ble",
"Use_smoothing": true,
"Smoothing": 0.8,We show the parameters used to choose and set up zone positioning algorithm.
- Use_algorithm: {"ZONES", …} - choose the algorithm to work
- with.
- Sig_averaging_time: affects system dynamic reaction time, time
- of sigal to gather before position calculation.
- Cutoff_rss: {-90 .. -120}, [dBm] - reject all observations
- with RSSI < threashold.
- Use_smoothing: {true, false} if use the alpha-beta filter.
- Smoothing: {0.1 .. 0.9} - filter parameter. Settings above can be considered as recommended. However settings have to be fine tuned for different sensors, localitions and situations.
We can’t turn off smoothing with only "Smoothing: 0", use "Use_smoothing: false" instead.
In zone positioning we get observations from sensors with some time delay. To add some reactivity to the model, parameter "Sig_averaging_time" is used.
If averaging time is zero - we will jump to all beacons detected, because each one will have maximum RSSI at that time. Adjusting the "Sig_averaging_time" time interval can help to deal with noisy observations. Example is below.
|
|
"Sig_averaging_time": left {0.7} - right {2.6}
Algorithm returns calculated position and precision calculated as:
Expression above derives distance from log-distance path loss model.
Indoor-Positioning-And-Navigation-Algorithms
- Pose estimation
namespace navigation_core
- Barometer
- ComplementaryFilter
- DeviceProperties
- LevelEstimator
- LevelEstimatorRadiomap
- LevelEstimatorTransmitters
- LevelHistory
- Likelihood
- LikelihoodRadiomap
- MeasurementsPreprocessor
- NavigationClientImpl
- NavigationTimeSmoother
- Pedometer
- PolynomialFit
- PositionEstimator
- PositionEstimatorKnn
- PositionEstimatorOutdoor
- PositionEstimatorZone
- PositionPostprocessor
- PositionSmoother
- PositionSmootherAB
- PositionSmootherLstsq
- Quaternion
- RadioMeasurementBuffer
- SensorFusion
- SigmaFilter
- Triangle
- TriangleEdge
- Trilateration

