Skip to content
notenoughsun edited this page Nov 24, 2021 · 5 revisions

Introduction

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:

RSS(d) = RSS(d_0)-10\mu \log \frac{d}{d_0} + w = A + B \log{d}

Where A and B are known constants.

Algorithm

Example Zone positioning

The legend is as follows:

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.

Smoothing implementation

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 \alpha \beta filter implemented.

<img alt="alpha-beta filter" src="https://render.githubusercontent.com/render/math?math=%5Calpha%20%5Cbeta" style="transform: translateY(20%);" /> filtered zone positioning

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.

Parameters and return

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.

Configuration

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}

5-10-2021-16-22-13-PM.png

5-10-2021-16-22-26-PM.png

"Sig_averaging_time": left {0.7} - right {2.6}

Return

Algorithm returns calculated position and precision calculated as:

{precision} = \sqrt{\exp{(A - {nearestTxRssi}} / B)} + 1

Expression above derives distance from log-distance path loss model.

Clone this wiki locally