Location Finding

Location Finding.

Data Structures

struct sl_rtl_loc_locator_item
Locator item which contains the position and orientation of the locator array.

Macros

#define SL_RTL_LOC_ALL_LOCATORS (uint32_t)(-1)
#define SL_RTL_LOC_ALL_TAGS INT32_MAX

Typedefs

typedef void * sl_rtl_loc_libitem
Locationing library item.

Enumerations

enum sl_rtl_loc_locator_measurement_field {
SL_RTL_LOC_LOCATOR_MEASUREMENT_AZIMUTH , SL_RTL_LOC_LOCATOR_MEASUREMENT_ELEVATION , SL_RTL_LOC_LOCATOR_MEASUREMENT_DISTANCE , SL_RTL_LOC_LOCATOR_MEASUREMENT_AZIMUTH_DEVIATION ,
SL_RTL_LOC_LOCATOR_MEASUREMENT_ELEVATION_DEVIATION , SL_RTL_LOC_LOCATOR_MEASUREMENT_DISTANCE_DEVIATION , SL_RTL_LOC_LOCATOR_LAST
}
Locator-specific measurements.
enum sl_rtl_loc_target_measurement_field { SL_RTL_LOC_TARGET_MEASUREMENT_LAST }
Target-specific measurements - Not yet supported.
enum sl_rtl_loc_estimation_mode {
SL_RTL_LOC_ESTIMATION_MODE_TWO_DIM_FAST_RESPONSE , SL_RTL_LOC_ESTIMATION_MODE_THREE_DIM_FAST_RESPONSE , SL_RTL_LOC_ESTIMATION_MODE_TWO_DIM_HIGH_ACCURACY , SL_RTL_LOC_ESTIMATION_MODE_THREE_DIM_HIGH_ACCURACY ,
SL_RTL_LOC_ESTIMATION_MODE_LAST
}
Estimation mode.
enum sl_rtl_loc_measurement_validation_method { SL_RTL_LOC_MEASUREMENT_VALIDATION_MINIMUM , SL_RTL_LOC_MEASUREMENT_VALIDATION_MEDIUM , SL_RTL_LOC_MEASUREMENT_VALIDATION_FULL }
Measurement validation method.
enum sl_rtl_loc_locator_parameter {
SL_RTL_LOC_LOCATOR_PARAMETER_X_COORDINATE , SL_RTL_LOC_LOCATOR_PARAMETER_Y_COORDINATE , SL_RTL_LOC_LOCATOR_PARAMETER_Z_COORDINATE , SL_RTL_LOC_LOCATOR_PARAMETER_X_ORIENTATION ,
SL_RTL_LOC_LOCATOR_PARAMETER_Y_ORIENTATION , SL_RTL_LOC_LOCATOR_PARAMETER_Z_ORIENTATION , SL_RTL_LOC_LOCATOR_PARAMETER_LAST
}
Locator-specific parameters related to locationing.
enum sl_rtl_loc_target_parameter { SL_RTL_LOC_TARGET_PARAMETER_TARGET_HEIGHT , SL_RTL_LOC_TARGET_CLEAR_TARGET_HEIGHT , SL_RTL_LOC_TARGET_PARAMETER_LAST }
Target-specific parameters related to locationing.
enum sl_rtl_loc_result {
SL_RTL_LOC_RESULT_POSITION_X = 0, SL_RTL_LOC_RESULT_POSITION_Y , SL_RTL_LOC_RESULT_POSITION_Z , SL_RTL_LOC_RESULT_POSITION_RADIUS ,
SL_RTL_LOC_RESULT_POSITION_STDEV_X , SL_RTL_LOC_RESULT_POSITION_STDEV_Y , SL_RTL_LOC_RESULT_POSITION_STDEV_Z , SL_RTL_LOC_RESULT_POSITION_VELOCITY_X ,
SL_RTL_LOC_RESULT_POSITION_VELOCITY_Y , SL_RTL_LOC_RESULT_POSITION_VELOCITY_Z , SL_RTL_LOC_RESULT_POSITION_ACCELERATION_X , SL_RTL_LOC_RESULT_POSITION_ACCELERATION_Y ,
SL_RTL_LOC_RESULT_POSITION_ACCELERATION_Z , SL_RTL_LOC_RESULT_LAST
}
Locationing state results.

Functions

enum sl_rtl_error_code sl_rtl_loc_init ( sl_rtl_loc_libitem *item)
enum sl_rtl_error_code sl_rtl_loc_deinit ( sl_rtl_loc_libitem *item)
enum sl_rtl_error_code sl_rtl_loc_reinit ( sl_rtl_loc_libitem *item)
enum sl_rtl_error_code sl_rtl_loc_set_mode ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_estimation_mode mode)
enum sl_rtl_error_code sl_rtl_loc_set_measurement_validation ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_measurement_validation_method method)
enum sl_rtl_error_code sl_rtl_loc_add_locator ( sl_rtl_loc_libitem *item, struct sl_rtl_loc_locator_item *locator_item, uint32_t *locator_id_out)
enum sl_rtl_error_code sl_rtl_loc_add_tag ( sl_rtl_loc_libitem *item, int32_t *tag_id_out)
enum sl_rtl_error_code sl_rtl_loc_remove_tag ( sl_rtl_loc_libitem *item, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_create_position_estimator ( sl_rtl_loc_libitem *item)
enum sl_rtl_error_code sl_rtl_loc_set_locator_parameter ( sl_rtl_loc_libitem *item, uint32_t locator_id, enum sl_rtl_loc_locator_parameter parameter, float value)
enum sl_rtl_error_code sl_rtl_loc_set_target_parameter ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_target_parameter parameter, float value)
enum sl_rtl_error_code sl_rtl_loc_set_target_parameter_tag ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_target_parameter parameter, float value, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_clear_measurements ( sl_rtl_loc_libitem *item)
enum sl_rtl_error_code sl_rtl_loc_clear_measurements_tag ( sl_rtl_loc_libitem *item, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_set_locator_measurement ( sl_rtl_loc_libitem *item, uint32_t locator_id, enum sl_rtl_loc_locator_measurement_field field, float value)
enum sl_rtl_error_code sl_rtl_loc_set_locator_measurement_tag ( sl_rtl_loc_libitem *item, uint32_t locator_id, enum sl_rtl_loc_locator_measurement_field field, float value, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_set_target_measurement ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_target_measurement_field field, float value)
enum sl_rtl_error_code sl_rtl_loc_process ( sl_rtl_loc_libitem *item, float time_step)
enum sl_rtl_error_code sl_rtl_loc_process_tag ( sl_rtl_loc_libitem *item, float time_step, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_get_result ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_result result, float *value)
enum sl_rtl_error_code sl_rtl_loc_get_result_tag ( sl_rtl_loc_libitem *item, enum sl_rtl_loc_result result, float *value, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_get_measurement_in_system_coordinates ( sl_rtl_loc_libitem *item, uint32_t locator_id, enum sl_rtl_loc_locator_measurement_field field, float *value_out)
enum sl_rtl_error_code sl_rtl_loc_get_measurement_in_system_coordinates_tag ( sl_rtl_loc_libitem *item, uint32_t locator_id, enum sl_rtl_loc_locator_measurement_field field, float *value_out, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_get_expected_direction ( sl_rtl_loc_libitem *item, uint32_t locator_id, float *azimuth, float *elevation, float *distance)
enum sl_rtl_error_code sl_rtl_loc_get_expected_direction_tag ( sl_rtl_loc_libitem *item, uint32_t locator_id, float *azimuth, float *elevation, float *distance, int32_t tag_id)
enum sl_rtl_error_code sl_rtl_loc_get_expected_deviation ( sl_rtl_loc_libitem *item, uint32_t locator_id, float *azimuth, float *elevation, float *distance)
enum sl_rtl_error_code sl_rtl_loc_get_expected_deviation_tag ( sl_rtl_loc_libitem *item, uint32_t locator_id, float *azimuth, float *elevation, float *distance, int32_t tag_id)
int sl_rtl_loc_get_number_disabled ( sl_rtl_loc_libitem *item)
int sl_rtl_loc_get_number_disabled_tag ( sl_rtl_loc_libitem *item, int32_t tag_id)
bool sl_rtl_loc_filter_in_reach ( sl_rtl_loc_libitem *item, uint32_t locator_id)
enum sl_rtl_error_code sl_rtl_loc_filter_clear ( sl_rtl_loc_libitem *item, uint32_t locator_id)
enum sl_rtl_error_code sl_rtl_loc_filter_sphere ( sl_rtl_loc_libitem *item, uint32_t locator_id, float radius, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_filter_circle ( sl_rtl_loc_libitem *item, uint32_t locator_id, float radius, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_filter_box ( sl_rtl_loc_libitem *item, uint32_t locator_id, float xDelta, float yDelta, float zDelta, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_filter_rect ( sl_rtl_loc_libitem *item, uint32_t locator_id, float xDelta, float yDelta, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_filter_room ( sl_rtl_loc_libitem *item, uint32_t locator_id, float minX, float maxX, float minY, float maxY, float minZ, float maxZ, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_filter_floor ( sl_rtl_loc_libitem *item, uint32_t locator_id, float minX, float maxX, float minY, float maxY, bool exclude_region)
enum sl_rtl_error_code sl_rtl_loc_enable_trilateration ( sl_rtl_loc_libitem *item, bool value)

Detailed Description

Location Finding.

These functions are related to the calculation of positions from angles and distances.


Data Structure Documentation

sl_rtl_loc_locator_item

struct sl_rtl_loc_locator_item

Locator item which contains the position and orientation of the locator array.

Data Fields
float coordinate_x X-axis coordinate of the locator.
float coordinate_y Y-axis coordinate of the locator.
float coordinate_z Z-axis coordinate of the locator.
float orientation_x_axis_degrees X-axis rotation of the locator (Euler angles) in degrees.
float orientation_y_axis_degrees Y-axis rotation of the locator (Euler angles) in degrees.
float orientation_z_axis_degrees Z-axis rotation of the locator (Euler angles) in degrees.

Macro Definition Documentation

SL_RTL_LOC_ALL_LOCATORS

#define SL_RTL_LOC_ALL_LOCATORS   (uint32_t)(-1)

SL_RTL_LOC_ALL_TAGS

#define SL_RTL_LOC_ALL_TAGS   INT32_MAX

Typedef Documentation

sl_rtl_loc_libitem

typedef void* sl_rtl_loc_libitem

Locationing library item.

Enumeration Type Documentation

sl_rtl_loc_locator_measurement_field

Locator-specific measurements.

Enumerator
SL_RTL_LOC_LOCATOR_MEASUREMENT_AZIMUTH

Measured azimuth from locator to tag.

SL_RTL_LOC_LOCATOR_MEASUREMENT_ELEVATION

Measured elevation from locator to tag.

SL_RTL_LOC_LOCATOR_MEASUREMENT_DISTANCE

Measured distance from locator to tag.

SL_RTL_LOC_LOCATOR_MEASUREMENT_AZIMUTH_DEVIATION

Azimuth stdev.

SL_RTL_LOC_LOCATOR_MEASUREMENT_ELEVATION_DEVIATION

Elevation stdev.

SL_RTL_LOC_LOCATOR_MEASUREMENT_DISTANCE_DEVIATION

Distance stdev.

SL_RTL_LOC_LOCATOR_LAST

sl_rtl_loc_target_measurement_field

Target-specific measurements - Not yet supported.

Enumerator
SL_RTL_LOC_TARGET_MEASUREMENT_LAST

sl_rtl_loc_estimation_mode

Estimation mode.

Enumerator
SL_RTL_LOC_ESTIMATION_MODE_TWO_DIM_FAST_RESPONSE

Two-dimensional mode - Only X and Y plane considered, less filtered mode for fast moving assests.

SL_RTL_LOC_ESTIMATION_MODE_THREE_DIM_FAST_RESPONSE

Three-dimensional mode - Covers X, Y and Z planes, less filtered mode for fast moving assests.

SL_RTL_LOC_ESTIMATION_MODE_TWO_DIM_HIGH_ACCURACY

Two-dimensional mode - Only X and Y plane considered, more filtered mode for relatively static assets.

SL_RTL_LOC_ESTIMATION_MODE_THREE_DIM_HIGH_ACCURACY

Three-dimensional mode - Covers X, Y and Z planes, more filtered mode for relatively static assets.

SL_RTL_LOC_ESTIMATION_MODE_LAST

sl_rtl_loc_measurement_validation_method

Measurement validation method.

Enumerator
SL_RTL_LOC_MEASUREMENT_VALIDATION_MINIMUM

Only the basic validation integrated in the locationing algorithm (default)

SL_RTL_LOC_MEASUREMENT_VALIDATION_MEDIUM

May discard the most inaccurate measurements with an additional calculation round.

SL_RTL_LOC_MEASUREMENT_VALIDATION_FULL

May discard the most inaccurate measurements with several calculation rounds.

sl_rtl_loc_locator_parameter

Locator-specific parameters related to locationing.

Enumerator
SL_RTL_LOC_LOCATOR_PARAMETER_X_COORDINATE

Set X-axis coordinate of the locator.

SL_RTL_LOC_LOCATOR_PARAMETER_Y_COORDINATE

Set Y-axis coordinate of the locator.

SL_RTL_LOC_LOCATOR_PARAMETER_Z_COORDINATE

Set Z-axis coordinate of the locator.

SL_RTL_LOC_LOCATOR_PARAMETER_X_ORIENTATION

Set X-axis rotation of the locator (Euler angles) in degrees.

SL_RTL_LOC_LOCATOR_PARAMETER_Y_ORIENTATION

Set Y-axis rotation of the locator (Euler angles) in degrees.

SL_RTL_LOC_LOCATOR_PARAMETER_Z_ORIENTATION

Set Z-axis rotation of the locator (Euler angles) in degrees.

SL_RTL_LOC_LOCATOR_PARAMETER_LAST

sl_rtl_loc_target_parameter

Target-specific parameters related to locationing.

Enumerator
SL_RTL_LOC_TARGET_PARAMETER_TARGET_HEIGHT
SL_RTL_LOC_TARGET_CLEAR_TARGET_HEIGHT
SL_RTL_LOC_TARGET_PARAMETER_LAST

sl_rtl_loc_result

Locationing state results.

Enumerator
SL_RTL_LOC_RESULT_POSITION_X

Estimated X-axis position of the target.

SL_RTL_LOC_RESULT_POSITION_Y

Estimated Y-axis position of the target.

SL_RTL_LOC_RESULT_POSITION_Z

Estimated Z-axis position of the target.

SL_RTL_LOC_RESULT_POSITION_RADIUS

The combined radius (stdev) of the location estimate.

SL_RTL_LOC_RESULT_POSITION_STDEV_X

The accuracy (stdev) of the location x-coordinate estimate.

SL_RTL_LOC_RESULT_POSITION_STDEV_Y

The accuracy (stdev) of the location y-coordinate estimate.

SL_RTL_LOC_RESULT_POSITION_STDEV_Z

The accuracy (stdev) of the location z-coordinate estimate.

SL_RTL_LOC_RESULT_POSITION_VELOCITY_X

Estimated X-axis velocity of the target.

SL_RTL_LOC_RESULT_POSITION_VELOCITY_Y

Estimated Y-axis velocity of the target.

SL_RTL_LOC_RESULT_POSITION_VELOCITY_Z

Estimated Z-axis velocity of the target.

SL_RTL_LOC_RESULT_POSITION_ACCELERATION_X

Estimated X-axis acceleration of the target.

SL_RTL_LOC_RESULT_POSITION_ACCELERATION_Y

Estimated Y-axis acceleration of the target.

SL_RTL_LOC_RESULT_POSITION_ACCELERATION_Z

Estimated Z-axis acceleration of the target.

SL_RTL_LOC_RESULT_LAST

Number of results.

Function Documentation

sl_rtl_loc_init()

enum sl_rtl_error_code sl_rtl_loc_init ( sl_rtl_loc_libitem * item )

Initialize the locationing libitem instance.

Parameters
[in] item Pointer to the libitem to be initialized.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_deinit()

enum sl_rtl_error_code sl_rtl_loc_deinit ( sl_rtl_loc_libitem * item )

Deinitialize the locationing libitem instance.

Parameters
[in] item Pointer to the libitem to be initialized.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_reinit()

enum sl_rtl_error_code sl_rtl_loc_reinit ( sl_rtl_loc_libitem * item )

Reinitialize the locationing libitem instance.

Reset the libitem's internal values to the starting point so that it can start all over from the beginning. This can be used, for example, in testing instead of deleting and re-creating the libitem object.

Parameters
[in] item Pointer to the libitem to be initialized.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_mode()

enum sl_rtl_error_code sl_rtl_loc_set_mode ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_estimation_mode mode
)

Set the locationing dimensionality mode. Possible choices are 2D or 3D modes. Two-dimensional mode does not vary the z-position of the target and assumes it is 0 at all times. When updating, for example, the distance measurement from the locator to the target in 2D mode, note that even if the locator and tag are on different z-planes, the distance should be as if they were on the same z-plane.

Parameters
[in] item Pointer to the libitem.
[in] mode Estimation mode as enum.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_measurement_validation()

enum sl_rtl_error_code sl_rtl_loc_set_measurement_validation ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_measurement_validation_method method
)

Set the measurement validation method. If not given, the minimum method is used. Possible choices are minimum, medium, and full. The minimum does not increase the calculation CPU load because it is integrated inside the algorithm's normal operation. The medium and full methods use additionally one or multiple calculation rounds respectively and may discard the most inaccurate measurements from the calculation. However, they will always leave enough of them to calculate the estimate.

Parameters
[in] item Pointer to the libitem.
[in] method Validation method as enum.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_add_locator()

enum sl_rtl_error_code sl_rtl_loc_add_locator ( sl_rtl_loc_libitem * item,
struct sl_rtl_loc_locator_item * locator_item,
uint32_t * locator_id_out
)

Add a locator item into the locationing estimator after setting its position and orientation parameters. Add all locators using this function before calling sl_rtl_loc_create_position_estimator to create the estimator instance.

Parameters
[in] item Pointer to the libitem
[in] locator_item Locator item instance to be added
[out] locator_id_out ID of the locator assigned by the library
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_add_tag()

enum sl_rtl_error_code sl_rtl_loc_add_tag ( sl_rtl_loc_libitem * item,
int32_t * tag_id_out
)

Add an asset tag item into the locationing estimator.

Parameters
[in] item Pointer to the libitem.
[out] tag_id_out ID of the tag assigned by the library.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_remove_tag()

enum sl_rtl_error_code sl_rtl_loc_remove_tag ( sl_rtl_loc_libitem * item,
int32_t tag_id
)

Remove an asset tag item previously added with sl_rtl_loc_add_tag.

Parameters
[in] item Pointer to the libitem.
[out] ID of the tag to be removed.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_create_position_estimator()

enum sl_rtl_error_code sl_rtl_loc_create_position_estimator ( sl_rtl_loc_libitem * item )

Create the position estimator instance after all locators have been added.

Parameters
[in] item Pointer to the libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_locator_parameter()

enum sl_rtl_error_code sl_rtl_loc_set_locator_parameter ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
enum sl_rtl_loc_locator_parameter parameter,
float value
)

Set locator-specific parameters, such as the azimuth and elevation measurement covariances.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator for which the parameter will be set.
[in] parameter Parameter to be set (as enum).
[in] value New value for the parameter.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_target_parameter()

enum sl_rtl_error_code sl_rtl_loc_set_target_parameter ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_target_parameter parameter,
float value
)

Set target-specific parameters, such as the known target height.

Parameters
[in] item Pointer to the libitem.
[in] parameter Parameter to be set (as enum).
[in] value New value for the parameter.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_target_parameter_tag()

enum sl_rtl_error_code sl_rtl_loc_set_target_parameter_tag ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_target_parameter parameter,
float value,
int32_t tag_id
)

Set target-specific parameters, such as the known target height for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] parameter Parameter to be set (as enum).
[in] value New value for the parameter.
[in] tag_id TagID of the asset to be changed or SL_RTL_LOC_ALL_TAGS .
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_clear_measurements()

enum sl_rtl_error_code sl_rtl_loc_clear_measurements ( sl_rtl_loc_libitem * item )

Clear previous measurements. Call this function before setting new measurements if the previous measurements are not valid for the next iteration step.

Parameters
[in] item Pointer to the libitem.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_clear_measurements_tag()

enum sl_rtl_error_code sl_rtl_loc_clear_measurements_tag ( sl_rtl_loc_libitem * item,
int32_t tag_id
)

Clear previous measurements for a specified tag. Call this function before setting new measurements if the previous measurements are not valid for the next iteration step.

Parameters
[in] item Pointer to the libitem.
[in] tag_id TagID of the asset to be changed or SL_RTL_LOC_ALL_TAGS .
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_locator_measurement()

enum sl_rtl_error_code sl_rtl_loc_set_locator_measurement ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
enum sl_rtl_loc_locator_measurement_field field,
float value
)

Set a new measurement for a locator specified by the locator ID.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator for which the measurement will be set.
[in] field Measurement to be updated (as enum).
[in] value New value for the measurement.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_locator_measurement_tag()

enum sl_rtl_error_code sl_rtl_loc_set_locator_measurement_tag ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
enum sl_rtl_loc_locator_measurement_field field,
float value,
int32_t tag_id
)

Set a new measurement for a locator specified by the locator ID for a specified tag.

Parameters
[in] item Pointer to the libitem
[in] locator_id ID of the locator for which the measurement will be set
[in] field Measurement to be updated (as enum)
[in] value New value for the measurement
[in] tag_id TagID of the asset to be changed
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_set_target_measurement()

enum sl_rtl_error_code sl_rtl_loc_set_target_measurement ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_target_measurement_field field,
float value
)

Set a new measurement for the target. Because the current version does not support this function, calling it has no effect.

Parameters
[in] item Pointer to the libitem.
[in] field Measurement to be updated (as enum).
[in] value New value for the measurement.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_process()

enum sl_rtl_error_code sl_rtl_loc_process ( sl_rtl_loc_libitem * item,
float time_step
)

Process the current time step of the locationing filter. Call this function after old measurements are cleared and new measurements are set for the current time step. The process will step the filter forward and provide new state results and state covariance values, which can be retrieved with separate function calls.

Parameters
[in] item Pointer to the libitem.
[in] time_step Process time interval in seconds. This is the time separation between the previous step and this current step.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_process_tag()

enum sl_rtl_error_code sl_rtl_loc_process_tag ( sl_rtl_loc_libitem * item,
float time_step,
int32_t tag_id
)

Process the current time step of the locationing filter for a specified tag. Call this function after old measurements are cleared and new measurements are set for the current time step. The process will step the filter forward and provide new state results and state covariance values, which can be retrieved with separate function calls.

Parameters
[in] item Pointer to the libitem.
[in] time_step Process time interval in seconds. This is the time separation between the previous step and this current step.
[in] tag_id TagID of the asset to be processed or SL_RTL_LOC_ALL_TAGS .
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_result()

enum sl_rtl_error_code sl_rtl_loc_get_result ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_result result,
float * value
)

Get result of the current state variables or state covariances.

Parameters
[in] item Pointer to the libitem.
[in] result The desired state variable result as enum.
[out] value The value output of the state variable.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_result_tag()

enum sl_rtl_error_code sl_rtl_loc_get_result_tag ( sl_rtl_loc_libitem * item,
enum sl_rtl_loc_result result,
float * value,
int32_t tag_id
)

Get result of the current state variables or state covariances for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] result The desired state variable result as enum.
[out] value The value output of the state variable.
[in] tag_id TagID of the asset to fetch the results for.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_measurement_in_system_coordinates()

enum sl_rtl_error_code sl_rtl_loc_get_measurement_in_system_coordinates ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
enum sl_rtl_loc_locator_measurement_field field,
float * value_out
)

Get the latest measurement converted into the coordinate system of the multi-locator system.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator whose measurement will be retrieved.
[in] field Measurement to be retrieved (as enum).
[out] value_out The value output of the state variable.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_measurement_in_system_coordinates_tag()

enum sl_rtl_error_code sl_rtl_loc_get_measurement_in_system_coordinates_tag ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
enum sl_rtl_loc_locator_measurement_field field,
float * value_out,
int32_t tag_id
)

Get latest measurement converted into the coordinate system of the multi-locator system for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator whose measurement will be retrieved.
[in] field Measurement to be retrieved (as enum).
[out] value_out The value output of the state variable.
[in] tag_id TagID of the asset.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_expected_direction()

enum sl_rtl_error_code sl_rtl_loc_get_expected_direction ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float * azimuth,
float * elevation,
float * distance
)

Get the expected direction of the asset for the locator.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator whose measurement will be retrieved.
[out] azimuth The expected azimuth value.
[out] elevation The expected elevation value.
[out] distance The expected distance value.
Returns
SL_RTL_ERROR_SUCCESS if the locator does not require correction.
SL_RTL_ERROR_INCORRECT_MEASUREMENT if the locator's previous measurement was ignored because the error is too large.
Another error code in case of error

Position calculation has a better overall view to the asset's location than any individual locator. If the direction angles differ too much from the expected direction, the locator can be instructed to correct its internal state so that in can recover from this incorrectness faster. See also sl_rtl_aox_set_expected_direction() .

sl_rtl_loc_get_expected_direction_tag()

enum sl_rtl_error_code sl_rtl_loc_get_expected_direction_tag ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float * azimuth,
float * elevation,
float * distance,
int32_t tag_id
)

Get the expected direction of the asset for the locator for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator whose measurement will be retrieved.
[out] azimuth The expected azimuth value.
[out] elevation The expected elevation value.
[out] distance The expected distance value.
[in] tag_id TagID of the asset.
Returns
SL_RTL_ERROR_SUCCESS if the locator does not require correction.
SL_RTL_ERROR_INCORRECT_MEASUREMENT if the locator's previous measurement was ignored because of too large error
Another error code in case of error

Position calculation has a better overall view to the asset's location than any individual locator. If the direction angles differ too much from the expected direction, the locator can be instructed to correct its internal state so that in can recover from this incorrectness faster. See also sl_rtl_aox_set_expected_direction()

sl_rtl_loc_get_expected_deviation()

enum sl_rtl_error_code sl_rtl_loc_get_expected_deviation ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float * azimuth,
float * elevation,
float * distance
)

Get the deviation values for expected direction of the asset for the locator.

Parameters
[in] locator_id ID of the locator whose measurement will be retrieved.
[out] azimuth The expected azimuth value's standard deviation.
[out] elevation The expected elevation value's standard deviation.
[in] item Pointer to the libitem.
[out] distance The expected distance value's standard deviation.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_expected_deviation_tag()

enum sl_rtl_error_code sl_rtl_loc_get_expected_deviation_tag ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float * azimuth,
float * elevation,
float * distance,
int32_t tag_id
)

Get the deviation values for expected direction of the asset for the locator for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator whose measurement will be retrieved.
[out] azimuth The expected azimuth value's standard deviation.
[out] elevation The expected elevation value's standard deviation.
[out] distance The expected distance value's standard deviation.
[in] tag_id TagID of the asset.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_get_number_disabled()

int sl_rtl_loc_get_number_disabled ( sl_rtl_loc_libitem * item )

Get the number of locators, which are disabled from position calculation because the direction error is too large.

Parameters
[in] item Pointer to the libitem.
Returns
Number of locators needing correction, or -1 in case of any other error

sl_rtl_loc_get_number_disabled_tag()

int sl_rtl_loc_get_number_disabled_tag ( sl_rtl_loc_libitem * item,
int32_t tag_id
)

Get the number of locators, which are disabled from position calculation because the direction error is too large, for a specified tag.

Parameters
[in] item Pointer to the libitem.
[in] tag_id TagID of the asset.
Returns
Number of locators needing correction, or -1 in case of any other error

sl_rtl_loc_filter_in_reach()

bool sl_rtl_loc_filter_in_reach ( sl_rtl_loc_libitem * item,
uint32_t locator_id
)

Check if the asset is in reach of a given locator according to the position-based filtering.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of the locator to run the test.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_clear()

enum sl_rtl_error_code sl_rtl_loc_filter_clear ( sl_rtl_loc_libitem * item,
uint32_t locator_id
)

Clear all the position-based filters from a locator or from all locators.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_sphere()

enum sl_rtl_error_code sl_rtl_loc_filter_sphere ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float radius,
bool exclude_region
)

Add a position-based filter. This filter is based on the distance from a locator. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] radius Distance from the locator.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_circle()

enum sl_rtl_error_code sl_rtl_loc_filter_circle ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float radius,
bool exclude_region
)

Add a position-based filter. The two dimensional filter is based on the distance from a locator. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] radius Distance from the locator.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_box()

enum sl_rtl_error_code sl_rtl_loc_filter_box ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float xDelta,
float yDelta,
float zDelta,
bool exclude_region
)

Add a position-based filter. This filter defines relative distances in coordinate axes' directions. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] xDelta Maximum distance in X-coordinate direction.
[in] yDelta Maximum distance in Y-coordinate direction.
[in] zDelta Maximum distance in Z-coordinate direction.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_rect()

enum sl_rtl_error_code sl_rtl_loc_filter_rect ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float xDelta,
float yDelta,
bool exclude_region
)

Add a position-based filter. This two dimensional filter defines relative distances in coordinate axes' directions. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] xDelta Maximum distance in X-coordinate direction.
[in] yDelta Maximum distance in Y-coordinate direction.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_room()

enum sl_rtl_error_code sl_rtl_loc_filter_room ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float minX,
float maxX,
float minY,
float maxY,
float minZ,
float maxZ,
bool exclude_region
)

Add a position-based filter. This filter defines an area in global coordinates. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] minX Minimum X-coordinate value.
[in] maxX Maximum X-coordinate value.
[in] minY Minimum Y-coordinate value.
[in] maxY Maximum Y-coordinate value.
[in] minZ Minimum Z-coordinate value.
[in] maxZ Maximum Z-coordinate value.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_filter_floor()

enum sl_rtl_error_code sl_rtl_loc_filter_floor ( sl_rtl_loc_libitem * item,
uint32_t locator_id,
float minX,
float maxX,
float minY,
float maxY,
bool exclude_region
)

Add a position-based filter. The two dimensional filter defines an area in global coordinates. The filter can be added to one locator or all locators. A locator may also have several combined filters.

Parameters
[in] item Pointer to the libitem.
[in] locator_id ID of a single locator or SL_RTL_LOC_ALL_LOCATORS .
[in] minX Minimum X-coordinate value.
[in] maxX Maximum X-coordinate value.
[in] minY Minimum Y-coordinate value.
[in] maxY Maximum Y-coordinate value.
[in] exclude_region If true, define an excluded region instead.
Returns
SL_RTL_ERROR_SUCCESS if successful

sl_rtl_loc_enable_trilateration()

enum sl_rtl_error_code sl_rtl_loc_enable_trilateration ( sl_rtl_loc_libitem * item,
bool value
)

Enable trilateration method in location calculation.

The trilateration method calculates the position based on the distances from the locators rather than the direction angles. This function enables the method, but the location calculation may still use the direction if available to further increase the accuracy.

Trilateration method is not turned on by default.

Parameters
[in] item Pointer to the libitem.
[in] value Turn the trilateration on or off.
Returns
SL_RTL_ERROR_SUCCESS if successful