Jump to content

TEST-X: Difference between revisions

From Teltonika Telematics Wiki
No edit summary
DR - TEST
 
(85 intermediate revisions by the same user not shown)
Line 1: Line 1:
=== <u>Introduction</u> ===
== Dead Reckoning ==
'''Dead Reckoning''' is a navigation technique used to estimate current position of vehicle  , direction of movement, based on its previous position and known speed.  It uses additional sensor data to correct the position received from GNSS receiver.<br>
'''Dead Reckoning''' is a navigation technique used to estimate current position of vehicle  , direction of movement, based on its previous position and known speed.  It uses additional sensor data to correct the position received from GNSS receiver.<br>


Usage of Dead Reckoning is essential in scenarios where GNSS signal is weak or unavailable, such as underground parking lots, tunnels or dense forests.<br>
Usage of Dead Reckoning is essential in scenarios where GNSS signal is weak or unavailable, such as underground parking lots, tunnels or dense forests.<br>


'''Note:''' Dead Reckoning is enabled for all FT platform devices with gyroscope. At the moment, it’s not possible to disable it.<br>
=== <u>Prerequisites</u> ===
Key points to understand before utilizing the Dead Reckoning functionality:
Key points to understand before utilizing the Dead Reckoning functionality:
* Installation
* Installation
* Configuration
* Configuration
* Alignment
* Alignment
=== <u>Prerequisites and Important Settings</u> ===
* Device mounting quality  – Correct device mounting is critical for Dead Reckoning operation. Improper mounting may result in incorrect sensor data and unreliable Dead Reckoning performance.
* Dead Reckoning alignment maintenance – If Dead Reckoning alignment parameters are no longer valid, send the DR_RESET command and perform calibration.
* Electric and hybrid vehicles – For electric and hybrid vehicles, DIN1 should be used for movement detection to ensure correct Dead Reckoning operation.
* Dead Reckoning is not supported for two‑wheeled vehicles (e.g., motorcycles, scooters).
=== <u>Basic Operation</u> ===


'''<u>Installation</u>'''<br>
'''<u>Installation</u>'''<br>


The device must be mounted firmly in the vehicle, with good visibility of the sky. Failure to ensure proper mounting will result in inability to calibrate the device or inaccurate position estimation. DIN1 should be connected to the vehicle ignition (''' applicable to trackers with DIN1'''), it will be used to detect both ignition status and movement, ensuring optimal performance. Following examples ensure that the GNSS antenna is facing towards the sky and there are no physical obstacles, like metal plates,  wires, are blocking the GNSS signal.  
The device must be mounted firmly in the vehicle, with good visibility of the sky. Failure to ensure proper mounting will result in inability to calibrate the device or inaccurate position estimation. Following examples ensure that the GNSS antenna is facing towards the sky and there are no physical obstacles, like metal plates,  wires, are blocking the GNSS signal.  


Good '''mounting''' examples ( <span style="color:red">'''If vehicle has a heated windshield, you should look for an alternative mounting location in the trunk, on some sturdy metal closer to backseat window'''</span>):<br>
Good '''mounting''' examples ( <span style="color:red">'''If vehicle has a heated windshield, you should look for an alternative mounting location in the trunk, on some sturdy metal closer to backseat window'''</span>):<br>
<div style="display: flex; flex-direction: row;">
<div style="display: flex; flex-direction: row;">
[[File:FTC927 under the front dashboard in the middle of the car.jpg|thumb|left|280px|Dashboard in the middle of the car mount]]
[[File:FTC927 under the front dashboard in the middle of the car.jpg|thumb|left|280px|link=Special:Redirect/file/FTC927 under the front dashboard in the middle of the car.jpg|Dashboard in the middle of the car mount]]
[[File:FTC927 beneath the speedometer panel.jpg|thumb|left|300px|Beneath the speedometer panel]]
[[File:FTC927 beneath the speedometer panel.jpg|thumb|left|300px|link=Special:Redirect/file/FTC927 beneath the speedometer panel.jpg|Beneath the speedometer panel]]
[[File:FTC927 above the glove box.jpg|thumb|left|300px|Above glove box]]
[[File:FTC927 above the glove box.jpg|thumb|left|300px|link=Special:Redirect/file/FTC927 above the glove box.jpg|Above glove box]]
</div>
</div>


Bad '''mounting'''  examples:<br>
Bad '''mounting'''  examples:<br>
<div style="display: flex; flex-direction: row;">
<div style="display: flex; flex-direction: row;">
[[File:Dead Reckoning Unwanted movements will be detected by the IMU.png|thumb|left|280px|Unwanted movements will be detected by the IMU]]
[[File:Dead Reckoning Unwanted movements will be detected by the IMU.png|thumb|left|280px|link=Special:Redirect/file/Dead Reckoning Unwanted movements will be detected by the IMU.png|Unwanted movements will be detected by the IMU]]
[[File:Dead Reckoning Metal parts above the mount.png|thumb|left|300px|Metal parts above the mount]]
[[File:Dead Reckoning Metal parts above the mount.png|thumb|left|300px|link=Special:Redirect/file/Dead Reckoning Metal parts above the mount.png|Metal parts above the mount]]
[[File:Dead Reckoning vibration could cause unwanted device movements.png|thumb|left|300px|Places, where vibration could cause unwanted device movements]]
[[File:Dead Reckoning vibration could cause unwanted device movements.png|thumb|left|300px|link=Special:Redirect/file/Dead Reckoning vibration could cause unwanted device movements.png|Places, where vibration could cause unwanted device movements]]
</div>
</div>


Line 36: Line 41:
''The Dead Reckoning feature is configurable via the Dead Reckoning section in the GNSS settings group under System view in TCT.''
''The Dead Reckoning feature is configurable via the Dead Reckoning section in the GNSS settings group under System view in TCT.''


Parameter list can be found [[Template:FTX_System#Parameter_list|here]].
Parameter list can be found [[{{{model}}}_System#Parameter_list|here]].


===== Dead Reckoning alignment status =====
===== Dead Reckoning alignment status =====
Line 45: Line 50:
* '''2''' - Coarse: Dead Reckoning is in alignment stage.
* '''2''' - Coarse: Dead Reckoning is in alignment stage.
* '''3''' - Stable: Dead Reckoning alignment stage has been completed. Estimation stage is in progress.
* '''3''' - Stable: Dead Reckoning alignment stage has been completed. Estimation stage is in progress.
* '''99''' - Standby: Dead Reckoning is in standby mode.
* '''99''' - Standby: Dead Reckoning is in standby mode ('''NOTE''': this status is availabe with 3.7.X or newer firmware version)
<!--===== Turning alignment =====


===== Turning alignment =====
The turning alignment is a 1-byte AVL ID ('''1434''') that indicates the current percentage of the turning alignment of the device.
The turning alignment is a 1-byte AVL ID ('''1434''') that indicates the current percentage of the turning alignment of the device.


===== Straight alignment =====
===== Straight alignment =====
The straight alignment is a 1-byte AVL ID ('''1435''') that indicates the current percentage of the straight alignment of the device.
The straight alignment is a 1-byte AVL ID ('''1435''') that indicates the current percentage of the straight alignment of the device.
'''
'''
===== Dead Reckoning realignment reason =====
The Dead Reckoning realignment reason is a 1-byte AVL ID ('''1473''') that indicates the reason for the Dead Reckoning realignment. The possible values are:
* '''-1''' or '''-2:''' GNSS cross check failed. The algorithm detected that the estimated position differs from the GNSS position vastly.
* '''-3''' or '''-4:''' Unexpected vibrations detected.
* '''-5:''' Unexpected rotation detected.
* '''-6:''' GNSS signal quality dropped before the alignment was completed.
* '''-7:''' Abnormal reversing action detected.-->


'''<u>Alignment</u>'''<br>
'''<u>Alignment</u>'''<br>
Line 71: Line 67:
[[File:Dead Reckoning TCT Swift .png|right|400px]]
[[File:Dead Reckoning TCT Swift .png|right|400px]]


We are currently using only the '''Swift''' alignment type. Other types are still unreliable and do not provide better results.
=== <u>Standby mode</u> ===
 
Standby Mode preserves Dead Reckoning calibration indefinitely, ensuring accurate position estimation after extended GNSS outages (e.g., a week in underground parking), and supports unlimited duration in this mode while maintaining full calibration integrity.
 
Standby Mode has two behavior options:
* '''Realignment''' – Calibration alignment is discarded after the Standby Timeout period.
* '''Preserve alignment''' – Calibration alignment is retained during prolonged stationary periods.
 
 
'''<u>Prerequisites and important Settings</u>'''<br>
* If the device is remounted, send the DR_Reset SMS command and perform a full recalibration. This ensures all orientation- and sensor alignment parameters are refreshed, preventing inaccurate Dead Reckoning calculations after the installation change.
 
'''<u>Basic Operation</u>'''<br>
 
'''Entering Standby Mode'''


The device can enter Standby Mode in two scenarios:
* No movement detected
If the device detects absence of movement, Dead Reckoning enters Standby Mode after the timeout defined by '''Standby timeout (ID 124)''' elapses.
* Device enters sleep mode
When the device transitions into sleep mode, the GNSS receiver is switched to power saving mode.


<!--=== <u>How It Works</u> ===
Before GNSS powers down, Dead Reckoning enters Standby Mode '''immediately''', the scenario is paused, and the device proceeds into sleep mode.
//Dead Reckoning functionality consists of two stages:<br>
//* '''Alignment stage''' - The algorithm tries to find the mounting orientation of the device.
* '''Estimation stage''' - The algorithm estimates the current position of the device based on IMU and ('''if available''') GNSS data.


'''<u>Alignment stage</u>'''
'''Exiting Standby Mode'''
Before the algorithm can start estimating the position, it needs to calculate the mounting orientation of the device - this is called the '''alignment''' of IMU and vehicle frames. The result of the alignment is a set of angles that represent the orientation of the device in space, which is used to transform the IMU data into the vehicle frame during Estimation stage.<br>


Alignment is started automatically and constantly observes following parameters: <br>
Standby Mode can be exited in the following cases:
* Movement is detected
When movement is detected, the device exits Standby Mode and resumes normal Dead Reckoning operation. If '''no movement is detected''', Dead Reckoning remains in Standby Mode.


* '''GNSS signal quality''' - The algorithm needs to have a good GNSS fix to calculate the mounting orientation. If during the alignment the signal quality drops below a certain threshold, the algorithm will trigger a realignment.
* '''IMU data''' - The algorithm constantly observes the received IMU data. If it detects that the device movement/rotation exceeded a certain threshold, it will trigger a realignment.<br>


'''Note:''' The Dead Reckoning alignment status AVL ID ('''1433''') will change from '''2''' (Coarse) to '''3''' (Stable). Positional data in records will contain Dead Reckoning data.
=== <u>Key Performance Indicators (based on performed tests)</u> ===
* '''GNSS denied operation (1 km)'''
** When driving 1 km without a GNSS signal (including 15–20 turns), the positional error is ≤ 25 m, achieved in at least 8 out of 10 field tests.<br>
** Dead Reckoning continues operating beyond 1 km; however, positional error may increase after this threshold.<br>


'''<u>Estimation stage</u>'''
* '''Recovery after DR Standby (Sleep Mode)'''
Once the alignment stage is completed, the algorithm enters the estimation stage. The algorithm uses the IMU data to estimate the current position of the device, and if GNSS data is available, it uses it to correct the estimated position. The Dead Reckoning algorithm itself is based on the application of an extended Kalman filter (EKF), which operates in two main states:<br>
** After exiting DR Standby (Sleep Mode), the system correctly reconstructs the driven route for up to 5 minutes or 1000 m, with a positional error of ≤ 50 m, achieved in at least 8 out of 10 field tests.<br>


# '''Predict''' - The algorithm predicts the current position of the device using IMU sensor readings and the previously estimated position.
* '''Real world driving variability'''
# '''Update''' - The predicted position is corrected using the calculated GNSS position from GNSS receiver.-->
** Real world driving conditions may vary and can impact performance results.


=== <u>Limitations</u> ===
=== <u>Limitations, Edge Cases & Additional Notes</u> ===
There are some important things to keep in mind when using the Dead Reckoning functionality. The algorithm tries to correct for these issues, but sometimes they can still affect how well Dead Reckoning works.
There are some important things to keep in mind when using the Dead Reckoning functionality. The algorithm tries to correct for these issues, but sometimes they can still affect how well Dead Reckoning works.
 
* '''Loss of alignment during drifting''' – Dead Reckoning alignment will be lost during drifting, when the actual movement vector does not correspond to the vehicle heading. Re‑alignment is required.
* '''Overshooting''' - May occur when the vehicle travels straight for more than 50 m at speeds below 20 km/h. In such cases, positional overshoot may be observed. An example is shown in the attached image.
[[File:Dead Reckoning - Overshooting.png|300px|link=Special:Redirect/file/Dead Reckoning - Overshooting.png]]
* '''Position accuracy may decrease''' - If the device cannot receive a GNSS signal for a long time, the estimated position may become less accurate. This is because the sensors inside the device can only estimate the position for a limited time without help from GNSS.
* '''Position accuracy may decrease''' - If the device cannot receive a GNSS signal for a long time, the estimated position may become less accurate. This is because the sensors inside the device can only estimate the position for a limited time without help from GNSS.
For example: If a courier spends up to 30 minutes unloading in the underground car park, DR will remain accurate. Otherwise, positioning information will become less accurate.
For example: If a courier spends up to 30 minutes unloading in the underground car park, DR will remain accurate. Otherwise, positioning information will become less accurate.
Line 105: Line 121:
'''Tip:''' If alignment auto-save is enabled, realignment will be faster.
'''Tip:''' If alignment auto-save is enabled, realignment will be faster.


* '''Position jumps after GNSS outages''' - After the device has been in an area with no GNSS signal for a while (such as near tall buildings or obstacles), you might notice sudden jumps in the position when the signal returns. This happens because the device uses the GNSS signal to correct its estimated position, and the type of GNSS signal used is more sensitive to interference from nearby objects.
* '''Position jumps after GNSS outages''' - Multipath occurs when reflected or diffracted GNSS signals reach the receiver, causing position errors. Since Dead Reckoning depends on GNSS for continuous correction, these multipath induced inaccuracies can lead to visible position jumps, especially in urban areas with tall buildings or obstructions.
* '''Standby mode''' - This feature allows calibration data to be stored for unlimited time, meaning that Dead Reckoning will work accurately even if a week has passed while vehicle was left in underground parking. Functionality will be present in 3.7.X firmware version, so current solution is  limited and tracker will lose Dead Reckoning alignment after an hour has passed since ignition OFF event. If vehicle was parked for less than 1 hour, track might be slightly tilted, but if parking lasts more than an hour - GNSS fix needs to be re-acquired. This applies for above and underground parking.
[[File:GNSS Multipath.png|350px]]


=== <u>Parameter list</u> ===
=== <u>AVL ID list</u> ===
<table class="nd-othertables_2" style="width:100%; border-collapse: collapse;">
<table class="nd-othertables_2" style="width:100%; border-collapse: collapse;">
<tr>
<tr>
Line 128: Line 144:
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">[[Dead_Reckoning_feature#Dead_Reckoning_alignment_status|Dead Reckoning alignment status]]</td>
<td style="vertical-align: middle; text-align: center;">[[{{{model}}}_System#Dead_Reckoning_alignment_status|Dead Reckoning alignment status]]</td>
</tr>
</tr>
<tr>
<tr>
Line 138: Line 154:
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">%</td>
<td style="vertical-align: middle; text-align: center;">%</td>
<td style="vertical-align: middle; text-align: center;">[[Dead_Reckoning_feature#Turning_alignment|Turning alignment]]</td>
<td style="vertical-align: middle; text-align: center;">[[{{{model}}}_System#Turning_alignment|Turning alignment]]</td>
</tr>
</tr>
<tr>
<tr>
Line 148: Line 164:
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">%</td>
<td style="vertical-align: middle; text-align: center;">%</td>
<td style="vertical-align: middle; text-align: center;">[[Dead_Reckoning_feature#Straight alignment|Straight alignment]]</td>
<td style="vertical-align: middle; text-align: center;">[[{{{model}}}_System#Straight alignment|Straight alignment]]</td>
</tr>
<!--<tr>
<td style="vertical-align: middle; text-align: center;">1454</td>
<td style="vertical-align: middle; text-align: center;">Mounting angle - Z</td>
<td style="vertical-align: middle; text-align: center;">2</td>
<td style="vertical-align: middle; text-align: center;">-3600</td>
<td style="vertical-align: middle; text-align: center;">3600</td>
<td style="vertical-align: middle; text-align: center;">0.1</td>
<td style="vertical-align: middle; text-align: center;">°</td>
<td style="vertical-align: middle; text-align: center;">Device orientation in Z axis (yaw).</td>
</tr>
</tr>
</table>
=== <u>Parameter list</u> ===
<table class="nd-othertables_2" style="width:100%; border-collapse: collapse;">
<tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1455</td>
<th style="width:8%; vertical-align: middle; text-align: left;">Property ID in AVL packet</th>
<td style="vertical-align: middle; text-align: center;">Mounting angle - Y</td>
<th style="width:15%; vertical-align: middle; text-align: center;">Property Name</th>
<td style="vertical-align: middle; text-align: center;">2</td>
<th style="width:5%; vertical-align: middle; text-align: center;">Bytes</th>
<td style="vertical-align: middle; text-align: center;">-3600</td>
<th style="width:10%; vertical-align: middle; text-align: center;">Min Value</th>
<td style="vertical-align: middle; text-align: center;">3600</td>
<th style="width:10%; vertical-align: middle; text-align: center;">Max Value</th>
<td style="vertical-align: middle; text-align: center;">0.1</td>
<th style="width:5%; vertical-align: middle; text-align: center;">Multiplier</th>
<td style="vertical-align: middle; text-align: center;">°</td>
<th style="width:5%; vertical-align: middle; text-align: center;">Units</th>
<td style="vertical-align: middle; text-align: center;">Device orientation in Y axis (pitch).</td>
<th style="width:32%; vertical-align: middle; text-align: left;">Description</th>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1456</td>
<td style="vertical-align: middle; text-align: center;">Mounting angle - X</td>
<td style="vertical-align: middle; text-align: center;">2</td>
<td style="vertical-align: middle; text-align: center;">-3600</td>
<td style="vertical-align: middle; text-align: center;">3600</td>
<td style="vertical-align: middle; text-align: center;">0.1</td>
<td style="vertical-align: middle; text-align: center;">°</td>
<td style="vertical-align: middle; text-align: center;">Device orientation in X axis (roll).</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1457</td>
<td style="vertical-align: middle; text-align: center;">Device position - X</td>
<td style="vertical-align: middle; text-align: center;">2</td>
<td style="vertical-align: middle; text-align: center;">-32768</td>
<td style="vertical-align: middle; text-align: center;">32767</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">m</td>
<td style="vertical-align: middle; text-align: center;">Linear displacement in X axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1458</td>
<td style="vertical-align: middle; text-align: center;">Device position - Y</td>
<td style="vertical-align: middle; text-align: center;">2</td>
<td style="vertical-align: middle; text-align: center;">-32768</td>
<td style="vertical-align: middle; text-align: center;">32767</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">m</td>
<td style="vertical-align: middle; text-align: center;">Linear displacement in Y axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1459</td>
<td style="vertical-align: middle; text-align: center;">Device position - Z</td>
<td style="vertical-align: middle; text-align: center;">2</td>
<td style="vertical-align: middle; text-align: center;">-32768</td>
<td style="vertical-align: middle; text-align: center;">32767</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">m</td>
<td style="vertical-align: middle; text-align: center;">Linear displacement in Z axis.</td>
</tr>
</tr>
<tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1460</td>
<td style="vertical-align: middle; text-align: center;">123</td>
<td style="vertical-align: middle; text-align: center;">Fusion timestamp</td>
<td style="vertical-align: middle; text-align: center;">Alignment auto-save</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">Fusion timestamp.</td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">This option saves calibration data to device memory, enabling a faster recalibration after device restart. <br> '''0''' = Disable <br> '''1''' = Enable  </td>
</tr>
</tr>
<tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1461</td>
<td style="vertical-align: middle; text-align: center;">124</td>
<td style="vertical-align: middle; text-align: center;">Fusion status</td>
<td style="vertical-align: middle; text-align: center;">Standby timeout</td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">65535</td>
<td style="vertical-align: middle; text-align: center;">255</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">(s) seconds</td>
<td style="vertical-align: middle; text-align: center;">Fusion status.</td>
<td style="vertical-align: middle; text-align: center;">The standby timeout is the time after which device will attempt to correct the position based on correction strategy.<br>  Default value = '''1800''' </td>
</tr>
</tr>
<tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1462</td>
<td style="vertical-align: middle; text-align: center;">125</td>
<td style="vertical-align: middle; text-align: center;">Sum of accelerometer axes std</td>
<td style="vertical-align: middle; text-align: center;">Standby mode</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">Sum of accelerometer axes standard deviation.</td>
<td style="vertical-align: middle; text-align: center;">-</td>
<td style="vertical-align: middle; text-align: center;">The standby mode is the mode in which the device will attempt to correct the position based on correction strategy. <br>'''0''' = Realignment<br>'''1''' = Preserve alignment</td>
</tr>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1463</td>
<td style="vertical-align: middle; text-align: center;">Sum of gyroscope axes std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Sum of gyroscope axes standard deviation.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1464</td>
<td style="vertical-align: middle; text-align: center;">Accelerometer X axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of accelerometer readings along x axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1465</td>
<td style="vertical-align: middle; text-align: center;">Accelerometer Y axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of accelerometer readings along y axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1466</td>
<td style="vertical-align: middle; text-align: center;">Accelerometer Z axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of accelerometer readings along z axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1467</td>
<td style="vertical-align: middle; text-align: center;">Gyroscope X axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of gyroscope readings along x axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1468</td>
<td style="vertical-align: middle; text-align: center;">Gyroscope Y axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of gyroscope readings along y axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1469</td>
<td style="vertical-align: middle; text-align: center;">Gyroscope Z axis std</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">0</td>
<td style="vertical-align: middle; text-align: center;">4294967295</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">Standard deviation of gyroscope readings along z axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1470</td>
<td style="vertical-align: middle; text-align: center;">Acceleration X axis</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">-2147483648</td>
<td style="vertical-align: middle; text-align: center;">2147483647</td>
<td style="vertical-align: middle; text-align: center;">0.000001</td>
<td style="vertical-align: middle; text-align: center;">m/s^2</td>
<td style="vertical-align: middle; text-align: center;">Acceleration in x axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1471</td>
<td style="vertical-align: middle; text-align: center;">Acceleration Y axis</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">-2147483648</td>
<td style="vertical-align: middle; text-align: center;">2147483647</td>
<td style="vertical-align: middle; text-align: center;">0.000001</td>
<td style="vertical-align: middle; text-align: center;">m/s^2</td>
<td style="vertical-align: middle; text-align: center;">Acceleration in y axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1472</td>
<td style="vertical-align: middle; text-align: center;">Acceleration Z axis</td>
<td style="vertical-align: middle; text-align: center;">4</td>
<td style="vertical-align: middle; text-align: center;">-2147483648</td>
<td style="vertical-align: middle; text-align: center;">2147483647</td>
<td style="vertical-align: middle; text-align: center;">0.000001</td>
<td style="vertical-align: middle; text-align: center;">m/s^2</td>
<td style="vertical-align: middle; text-align: center;">Acceleration in z axis.</td>
</tr>
<tr>
<td style="vertical-align: middle; text-align: center;">1473</td>
<td style="vertical-align: middle; text-align: center;">Dead Reckoning realignment reason</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;">-128</td>
<td style="vertical-align: middle; text-align: center;">127</td>
<td style="vertical-align: middle; text-align: center;">1</td>
<td style="vertical-align: middle; text-align: center;"> </td>
<td style="vertical-align: middle; text-align: center;">[[Dead_Reckoning_feature#Dead_Reckoning_realignment_reason|Dead Reckoning realignment reason]]</td>
</tr>-->
</table>
</table>
[[Category:Frequently Asked Questions - FAQ]]

Latest revision as of 13:20, 30 April 2026

Dead Reckoning

Dead Reckoning is a navigation technique used to estimate current position of vehicle , direction of movement, based on its previous position and known speed. It uses additional sensor data to correct the position received from GNSS receiver.

Usage of Dead Reckoning is essential in scenarios where GNSS signal is weak or unavailable, such as underground parking lots, tunnels or dense forests.

Key points to understand before utilizing the Dead Reckoning functionality:

  • Installation
  • Configuration
  • Alignment

Prerequisites and Important Settings

  • Device mounting quality – Correct device mounting is critical for Dead Reckoning operation. Improper mounting may result in incorrect sensor data and unreliable Dead Reckoning performance.
  • Dead Reckoning alignment maintenance – If Dead Reckoning alignment parameters are no longer valid, send the DR_RESET command and perform calibration.
  • Electric and hybrid vehicles – For electric and hybrid vehicles, DIN1 should be used for movement detection to ensure correct Dead Reckoning operation.
  • Dead Reckoning is not supported for two‑wheeled vehicles (e.g., motorcycles, scooters).

Basic Operation

Installation

The device must be mounted firmly in the vehicle, with good visibility of the sky. Failure to ensure proper mounting will result in inability to calibrate the device or inaccurate position estimation. Following examples ensure that the GNSS antenna is facing towards the sky and there are no physical obstacles, like metal plates, wires, are blocking the GNSS signal.

Good mounting examples ( If vehicle has a heated windshield, you should look for an alternative mounting location in the trunk, on some sturdy metal closer to backseat window):

Dashboard in the middle of the car mount
Beneath the speedometer panel
Above glove box

Bad mounting examples:

Unwanted movements will be detected by the IMU
Metal parts above the mount
Places, where vibration could cause unwanted device movements

Configuration

The Dead Reckoning feature is configurable via the Dead Reckoning section in the GNSS settings group under System view in TCT.

Parameter list can be found [[{{{model}}}_System#Parameter_list|here]].

Dead Reckoning alignment status

The Dead Reckoning alignment status is a 1-byte AVL ID (1433) that indicates the current status of the Dead Reckoning alignment. The possible values are:

  • 0 - Unknown: Dead Reckoning status is unknown.
  • 1 - Init: Dead Reckoning alignment is initializing.
  • 2 - Coarse: Dead Reckoning is in alignment stage.
  • 3 - Stable: Dead Reckoning alignment stage has been completed. Estimation stage is in progress.
  • 99 - Standby: Dead Reckoning is in standby mode (NOTE: this status is availabe with 3.7.X or newer firmware version)
Turning alignment

The turning alignment is a 1-byte AVL ID (1434) that indicates the current percentage of the turning alignment of the device.

Straight alignment

The straight alignment is a 1-byte AVL ID (1435) that indicates the current percentage of the straight alignment of the device.

Alignment
Once device mounting adheres to the guidelines, alignment can be performed. The device must finish a specific alignment process to determine its mounting orientation. During this process, there are specific conditions that must be met:

  1. The device must be stationary with clear sky visibility for at least 3 minutes.
  2. Vehicle speed during alignment should be between 10 km/h and 100 km/h, with varying speeds preferred over extended constant-speed driving.
  3. Avoid driving in underground tunnels or areas with poor GNSS signal, otherwise alignment needs to be restarted from the second step.

Standby mode

Standby Mode preserves Dead Reckoning calibration indefinitely, ensuring accurate position estimation after extended GNSS outages (e.g., a week in underground parking), and supports unlimited duration in this mode while maintaining full calibration integrity.

Standby Mode has two behavior options:

  • Realignment – Calibration alignment is discarded after the Standby Timeout period.
  • Preserve alignment – Calibration alignment is retained during prolonged stationary periods.


Prerequisites and important Settings

  • If the device is remounted, send the DR_Reset SMS command and perform a full recalibration. This ensures all orientation- and sensor alignment parameters are refreshed, preventing inaccurate Dead Reckoning calculations after the installation change.

Basic Operation

Entering Standby Mode

The device can enter Standby Mode in two scenarios:

  • No movement detected

If the device detects absence of movement, Dead Reckoning enters Standby Mode after the timeout defined by Standby timeout (ID 124) elapses.

  • Device enters sleep mode

When the device transitions into sleep mode, the GNSS receiver is switched to power saving mode.

Before GNSS powers down, Dead Reckoning enters Standby Mode immediately, the scenario is paused, and the device proceeds into sleep mode.

Exiting Standby Mode

Standby Mode can be exited in the following cases:

  • Movement is detected

When movement is detected, the device exits Standby Mode and resumes normal Dead Reckoning operation. If no movement is detected, Dead Reckoning remains in Standby Mode.


Key Performance Indicators (based on performed tests)

  • GNSS denied operation (1 km)
    • When driving 1 km without a GNSS signal (including 15–20 turns), the positional error is ≤ 25 m, achieved in at least 8 out of 10 field tests.
    • Dead Reckoning continues operating beyond 1 km; however, positional error may increase after this threshold.
  • Recovery after DR Standby (Sleep Mode)
    • After exiting DR Standby (Sleep Mode), the system correctly reconstructs the driven route for up to 5 minutes or 1000 m, with a positional error of ≤ 50 m, achieved in at least 8 out of 10 field tests.
  • Real world driving variability
    • Real world driving conditions may vary and can impact performance results.

Limitations, Edge Cases & Additional Notes

There are some important things to keep in mind when using the Dead Reckoning functionality. The algorithm tries to correct for these issues, but sometimes they can still affect how well Dead Reckoning works.

  • Loss of alignment during drifting – Dead Reckoning alignment will be lost during drifting, when the actual movement vector does not correspond to the vehicle heading. Re‑alignment is required.
  • Overshooting - May occur when the vehicle travels straight for more than 50 m at speeds below 20 km/h. In such cases, positional overshoot may be observed. An example is shown in the attached image.

  • Position accuracy may decrease - If the device cannot receive a GNSS signal for a long time, the estimated position may become less accurate. This is because the sensors inside the device can only estimate the position for a limited time without help from GNSS.

For example: If a courier spends up to 30 minutes unloading in the underground car park, DR will remain accurate. Otherwise, positioning information will become less accurate.

  • Temperature effects - The accuracy of the position can change if the temperature is very different from when the device was last calibrated.
  • Alignment reset - If the device loses power or goes into sleep mode, it will need to be calibrated again.

Tip: If alignment auto-save is enabled, realignment will be faster.

  • Position jumps after GNSS outages - Multipath occurs when reflected or diffracted GNSS signals reach the receiver, causing position errors. Since Dead Reckoning depends on GNSS for continuous correction, these multipath induced inaccuracies can lead to visible position jumps, especially in urban areas with tall buildings or obstructions.

AVL ID list

Property ID in AVL packet Property Name Bytes Min Value Max Value Multiplier Units Description
1433 Dead Reckoning alignment status 1 0 99 1 [[{{{model}}}_System#Dead_Reckoning_alignment_status|Dead Reckoning alignment status]]
1434 Turning alignment 1 0 100 1 % [[{{{model}}}_System#Turning_alignment|Turning alignment]]
1435 Straight alignment 1 0 100 1 % [[{{{model}}}_System#Straight alignment|Straight alignment]]

Parameter list

Property ID in AVL packet Property Name Bytes Min Value Max Value Multiplier Units Description
123 Alignment auto-save - 0 1 - - This option saves calibration data to device memory, enabling a faster recalibration after device restart.
0 = Disable
1 = Enable
124 Standby timeout - 1 65535 1 (s) seconds The standby timeout is the time after which device will attempt to correct the position based on correction strategy.
Default value = 1800
125 Standby mode - 0 1 - - The standby mode is the mode in which the device will attempt to correct the position based on correction strategy.
0 = Realignment
1 = Preserve alignment