Accuracy verification
Introduction
Starting from the server software version 2.7.31, Eliko RTLS has a positioning accuracy verification functionality, which allows users to benchmark the calculated tag coordinates against the known coordinates of pre-defined reference points within the tracking area. After defining reference points and saving them into the database, a user can navigate through the whole process either by using the Eliko RTLS Manager Web UI or by entering specific API commands every time when positioning accuracy verification is needed. The verification process by using the API commands is organized as follows:
-
Process initialization starting with the command LOAD_ANCHOR_COORDINATES and followed by the command DELETE_FRAME_COORDINATES, which clears the history of the previous measurements
-
If a user plans to insert all the reference points into the system at once, this is done by the command ADD_FRAME_COORDINATES. The maximum number of reference points allowed by the system is 20. Otherwise, if a user prefers a point-by point measurement by inserting the coordinates of each reference point separately, this step is skipped.
-
After all the reference points are inserted into the system, the measurement mode is initialized by the command COLLECT_POINTS with the serial number of the tag selected for verification measurements. If no reference point list has been inserted, i.e. measurements are done point-by-point, this step is skipped.
-
The installation engineer moves the tag to each reference point in sequence and performs a measurement by entering the ADD_POINT command with the serial number of the tag selected for verification measurements. If measurements are done point-by-point, the tag serial number is also followed by the reference point X, Y and Z coordinates.
-
After the measurements in all reference points are done, the process is stopped by entering the ADD_POINT command without any arguments
-
The system then compares the known pre-measured coordinates with the UWB RTLS measured ones and gives the accuracy of the system (measurement alpha)
LOAD_ANCHOR_COORDINATES
The command LOAD_ANCHOR_COORDINATES must be called before accuracy verification.
Client sends:
$PEKIO,LOAD_ANCHOR_COORDINATES
If the request was successful, the system responds:
$PEKIO,OK
If there was an error while processing the request due to RTLS server software version incompatibility, the following response will be sent:
$PEKIO,CANNOT_UNDERSTAND
DELETE_FRAME_COORDINATES
This command needs to be sent to the system to clear the history of the previous accuracy verification measurements before starting the process.
Client sends:
$PEKIO,DELETE_FRAME_COORDINATES
If the request was successful, the system responds:
$PEKIO,OK
If there was an error while processing the request due to RTLS server software version incompatibility, the following response will be sent:
$PEKIO,CANNOT_UNDERSTAND
ADD_FRAME_COORDINATES
This command is used when measuring with predefined reference points to add coordinates of each reference point. Up to 20 reference points can be created for accuracy verification. If of a point-by-point measurement, this command is not used.
Client sends:
$PEKIO,ADD_FRAME_COORDINATES,<parameter list>
<parameter list> is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
X coordinate |
X coordinate of a reference point |
1.55 |
|
Y coordinate |
Y coordinate of a reference point |
-2.52 |
|
Z coordinate |
Z coordinate of a reference point |
2.75 |
A full example of client request would be:
$PEKIO,ADD_FRAME_COORDINATES,15.27,6.78,3.25
If processing the request was successful, the system responds:
$PEKIO,OK
If there was an error while processing the request, the following response will be sent:
$PEKIO,NOT_GOOD,<error ID>
<error ID> can be one of the following:
|
Error ID |
Explanation |
|
CANNOT_ADD |
This error message will be returned if the maximum allowed number of 20 reference points has already been reached |
|
ANCHOR_COORDINATES_NOT_INITIALIZED |
This error message will be returned if the ADD_FRAME_COORDINATES command is called without calling LOAD_ANCHOR_COORDINATES beforehand during the current session |
|
WRONG_NUMBER_OF_PARAMETERS |
This error message will be returned if there are either less or more than 3 coordinate values given with the command |
COLLECT_POINTS
This command is used to initialize the measurement mode if all the reference points were previously inserted into the system by the command ADD_FRAME_COORDINATES. If of a point-by-point measurement, this command is not used.
Client sends:
$PEKIO,COLLECT_POINTS,<parameter list>
<parameter list> is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
Tag serial number |
The serial number of the tag used for accuracy verification measurements |
0x1234 |
|
Number of reference points |
The number of reference points for accuracy verification measurements. Must be a positive integer, greater than 0 and less than or equal to 20. |
5 |
A full example of client request would be:
$PEKIO,COLLECT_POINTS,0xBFA,3
If processing the request was successful, the system responds:
$PEKIO,OK
If there was an error while processing the request, the following response will be sent:
$PEKIO,NOT_GOOD,<error ID>
<error ID> can be one of the following:
|
Error ID |
Explanation |
|
PARAMETER_VALUE_ERROR |
This error message will be returned if the value of the number of reference points parameter is not valid (e.g. is less than 1 or larger than 20): |
|
<tag addressing errors> |
If there was a problem with tag addressing, the common error messages described in chapter “Tag Addressing” may also appear. |
ADD_POINT
This command is used by the accuracy verification feature in three formats:
-
To run an accuracy verification measurement in each reference point in case of a point-by-point measurement, i.e. no reference points were previously inserted into the system. In this format, the serial number of the tag used for the measurements is followed by X, Y and Z coordinates of each reference point
-
To run an accuracy verification measurement in each reference point if all reference points were previously inserted into the system. In this format, only the serial number of the tag used for the measurements needs to be entered as a parameter; no coordinate values are used to run measurements and, therefore, the tag serial number is followed by three consecutive commas.
-
To finalize the accuracy verification process and call the measurement statistics report from the system after all measurements are done. In this format, no parameters are used with the command, i.e. it is simply followed by four consecutive commas
Client sends:
$PEKIO,ADD_POINT,<parameter list>
<parameter list> is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
Tag serial number |
The serial number of the tag used for accuracy verification measurements |
0x1234 |
|
X coordinate |
X coordinate of a reference point. Used only in case of point-by-point measurements, otherwise left empty |
1.5 |
|
Y coordinate |
Y coordinate of a reference point. Used only in case of point-by-point measurements, otherwise left empty |
2.5 |
|
Z coordinate |
Z coordinate of a reference point. Used only in case of point-by-point measurements, otherwise left empty |
2.5 |
A full example of client request for a measurement with pre-defined reference points would be:
$PEKIO,ADD_POINT,0xBFA,,,
A full example of client request in case of a point-by-point measurement would be:
$PEKIO,ADD_POINT,0xBFA,5.23,12.74,3.5
A full example of client request in case of finalizing the accuracy verification process and calling the measurement statistics report would be:
$PEKIO,ADD_POINT,,,,
If processing the measurement request was successful, the system responds:
$PEKIO,OK
When the accuracy verification process has been successful, the system responds with a measurement statistics report that consists of measurement results for each reference point (one line per reference point) followed by the average coordinate difference value and terminated by the EOF marker:
$PEKIO,POINT,<parameter list>
$PEKIO,POINT,<parameter list>
…
$PEKIO,D_AVERAGE,<parameter>
$PEKIO,EOF
<parameter list> returned with POINT is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
Actually measured coordinates |
X, Y and Z coordinates measured by the tag in the reference point. May have 6 digits after the comma, in this example trunked to 2 for a more simplified visualization. |
21.54,1.56,0.68 |
|
Configured coordinates |
X, Y and Z coordinates entered by the user for the reference point before measurements. May have 6 digits after the comma, in this example trunked to 2 for a more simplified visualization. |
21.19,3.66,0.72 |
|
Coordinate difference |
The difference between measured and configured X, Y and Z coordinates calculated as:
|
2.132039 |
<parameter> returned with D_AVERAGE has the following meaning:
|
Field name |
Explanation |
Example |
|
Average coordinate difference |
The average value of differences between defined and actually measured X, Y and Z coordinates of all reference points. Calculated as:
Where N is the number of reference points. |
1.668693 |
A full example of measurement statistics report would be:
$PEKIO,POINT,21.54,1.56,0.68,21.19,3.66,0.72,2.132039
$PEKIO,POINT,19.26,5.21,-0.16,19.54,6.72,0.72,1.772986
$PEKIO,POINT,20.90,5.99,0.61,21.72,6.72,0.72,1.101054
$PEKIO,D_AVERAGE,1.668693
$PEKIO,EOF
If there was an error while processing the request, the following response will be sent:
$PEKIO,NOT_GOOD,<error ID>
<error ID> can be one of the following:
|
Error ID |
Explanation |
|
ANCHOR_COORDINATES_NOT_INITIALIZED |
This error message will be returned if the ADD_POINT command is called without calling LOAD_ANCHOR_COORDINATES beforehand during the current session |
|
WRONG_NUMBER_OF_PARAMETERS |
This error message will be returned if either more or less than 3 coordinate values are entered when measuring in point-by-point mode. This message will also be returned if either more or less than 4 consecutive commas are added to the command when finalizing the accuracy verification process and calling the measurement statistics report |
|
MATH_ERROR |
Mathematical error in tag coordinate calculation with error code |
|
NOT_ENOUGH_DATA |
Could not collect RR_L packets for tag position determination (currently the system expects at least 10 "good" RR_L packets out of 100 where at least 4 anchor-tag distances are present for the same anchors) |
|
INCORRECT_MEASUREMENT_MODE |
This error message will be returned, when measuring with predefined reference points without calling the COLLECT_POINTS command beforehand |
|
CANNOT_ADD |
When measuring in point-by-point mode and exceeding the maximum number of 20 reference points |
|
<tag addressing errors> |
If there was a problem with tag addressing, the common error messages described in chapter “Tag Addressing” may also appear. |
Anchor self-positioning
Introduction
The anchor self-positioning feature helps to set up the Eliko RTLS without a need to manually measure all the anchors' coordinates. Instead, the system calculates the anchor coordinates using 3 reference points in the tracking area. The system uses distance measurement reports sent by the tags in each of these three known reference points. This is useful for a fast rollout of an RTLS setup of up to 6 anchors.
The anchor self-positioning process is organized as follows:
-
Anchors are placed in the tracking area, no coordinate measurement is needed
-
3 reference points with known (measured) coordinates are selected in the tracking area
-
3 main anchors and 1 orientation anchor are defined by the command CALCULATE_ANCHOR_COORDINATES
-
A tag is consecutively placed in 3 reference points and the SET_FRAME_POINT command is used for coordinate input in each reference point. This concludes the setup process during which the anchors network has gone through self-positioning and the RTLS is ready for use.
For more information about the anchor self-positioning feature, please refer to the retaled chapter in the Eliko Knowledge Hub.
CALCULATE_ANCHOR_COORDINATES
This command sets up a preliminary coordinate system. Client sends:
$PEKIO,CALCULATE_ANCHOR_COORDINATES,<parameter list>,0,0,0,0,0,0
<parameter list> is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
MA1 |
First main anchor serial number. NB! The serial number may not contain any padding zeroes. For example, if the anchor serial number is 0x0000123, then it should be given as 0x123 in this command. |
0x1234 |
|
MA2 |
Second main anchor serial number. NB! The serial number may not contain any padding zeroes. For example, if the anchor serial number is 0x0000123, then it should be given as 0x123 in this command. |
0x5678 |
|
MA3 |
Third main anchor serial number. NB! The serial number may not contain any padding zeroes. For example, if the anchor serial number is 0x0000123, then it should be given as 0x123 in this command. |
0xABCD |
|
OA |
Orientation anchor serial number. NB! The serial number may not contain any padding zeroes. For example, if the anchor serial number is 0x0000123, then it should be given as 0x123 in this command. |
0xBDCE |
A full example of client request would be:
$PEKIO,CALCULATE_ANCHOR_COORDINATES,0xCC3,0xCB6,0xCB4,0xCC6,0,0,0,0,0,0
The RTLS Server then responds with a sequence of A_TO_A messages indicating the coordinate calculation progress, which may take ca 1 minute time. The penultimate message in the sequence is:
$PEKIO,A_TO_A,DB_SAVE_DONE
If processing the request was successful, the last message of the RTLS Server response is:
$PEKIO,OK
If there was an error while processing the request, the following response will be sent on the last line:
$PEKIO,NOT_GOOD,<error ID>
<error ID> can be one of the following:
|
Error ID |
Explanation |
|
WRONG_NUMBER_OF_PARAMETERS |
Wrong number of parameters is input |
|
INPUT_ERROR |
The anchors location definition has failed |
|
MATH_ERROR,<error code> |
Mathematical error in calculations with a specific error code |
|
<anchor addressing errors> |
If there was a problem with anchor addressing, the common error messages described in chapter “Anchor Addressing” may also appear. |
SET_FRAME_POINT
This command aligns the RTLS coordinate system to an external coordinate system by using three reference points and is executed in each reference point. Client sends:
$PEKIO,SET_FRAME_POINT,<parameter list>
<parameter list> is a comma-separated list with the following fields:
|
Field name |
Explanation |
Example |
|
Point_# |
Sequence number of the reference point. May be 1, 2 or 3 |
1 |
|
TAG_ID |
Tag serial number |
0x1234 |
|
X |
X-coordinate of the reference point |
10.25 |
|
Y |
Y-coordinate of the reference point |
23.47 |
|
Z |
Z-coordinate of the reference point |
1.5 |
A full example of client request would be:
$PEKIO,SET_FRAME_POINT,2,0x000F42,-3.0,2.8,1.15
If processing the request was successful, the system responds:
$PEKIO,OK
If there was an error while processing the request, the following response will be sent:
$PEKIO,NOT_GOOD,<error ID>
<error ID> can be one of the following:
|
Error ID |
Explanation |
|
WRONG_NUMBER_OF_PARAMETERS |
Wrong number of parameters is input |
|
MATH_ERROR,<error code> |
Mathematical error in calculations with a specific error code |
|
UNKNOWN_FRAME_COORDINATES |
CALCULATE_ANCHOR_COORDINATES has not been run prior to SET_FRAME_POINT |
|
INCORRECT_POINT_ID |
Reference point ID is not 1, 2 or 3 |
|
INCORRECT_POINT_ORDER |
Commands for measuring the reference points have been issued in a different order than 1, 2 and 3 |
|
NOT_ENOUGH_DATA |
During reference point measurement the tag location definition has been unsuccessful |
|
Long delay without an error message |
The tag may be switched off or unreachable or a wrong tag serial number was input. Please cancel the last command and start the setup process from tag reference point number 1 |
|
<tag addressing errors> |
If there was a problem with tag addressing, the common error messages described in chapter “Tag Addressing” may also appear. |