Monado OpenXR Runtime
|
Trackers, filters and associated helper code. More...
Files | |
file | t_calibration.cpp |
Calibration code. | |
file | t_calibration_opencv.hpp |
OpenCV calibration helpers. | |
file | t_camera_models.h |
Simple, untemplated, C, float-only, camera (un)projection functions for various camera models. | |
file | t_convert.cpp |
Code to build conversion tables and convert images. | |
file | t_data_utils.c |
Small data helpers for calibration. | |
file | t_debug_hsv_filter.cpp |
HSV filter debug code. | |
file | t_debug_hsv_picker.cpp |
HSV Picker Debugging code. | |
file | t_debug_hsv_viewer.cpp |
HSV debug viewer code. | |
file | t_documentation.h |
Documentation-only header. | |
file | t_euroc_recorder.cpp |
EuRoC dataset recorder utility. | |
file | t_euroc_recorder.h |
EuRoC dataset recorder utility. | |
file | t_file.cpp |
Handling of files and calibration data. | |
file | t_frame_cv_mat_wrapper.cpp |
Simple xrt_frame wrapper around a cv::Mat. | |
file | t_frame_cv_mat_wrapper.hpp |
Simple xrt_frame wrapper around a cv::Mat. | |
file | t_fusion.hpp |
C++ sensor fusion/filtering code that uses flexkalman. | |
file | t_helper_debug_sink.hpp |
Small helper struct that for debugging views. | |
file | t_hsv_filter.c |
A simple HSV filter. | |
file | t_imu.cpp |
IMU fusion implementation - for inclusion into the single kalman-incuding translation unit. | |
file | t_imu.h |
C interface to basic IMU fusion. | |
file | t_imu_fusion.hpp |
C++ sensor fusion/filtering code that uses flexkalman. | |
file | t_kalman.cpp |
Single compiled file for all kalman filter using source. | |
file | t_openvr_tracker.cpp |
OpenVR tracking source. | |
file | t_openvr_tracker.h |
OpenVR tracking source. | |
file | t_tracker_psmv.cpp |
PS Move tracker code. | |
file | t_tracker_psmv_fusion.cpp |
PS Move tracker code that is expensive to compile. | |
file | t_tracker_psmv_fusion.hpp |
PS Move tracker code. | |
file | t_tracker_psvr.cpp |
PSVR tracker code. | |
file | t_tracker_slam.cpp |
SLAM tracking code. | |
file | t_tracking.h |
Tracking API interface. | |
file | t_vit_loader.c |
Visual-Inertial Tracking consumer helper. | |
file | t_vit_loader.h |
Visual-Inertial Tracking consumer helper. | |
file | u_hand_tracking.c |
Hand Tracking API interface. | |
file | hg_interface.h |
Public interface of Mercury hand tracking. | |
Data Structures | |
struct | t_camera_calibration_kb4_params_float |
Floating point parameters for T_DISTORTION_FISHEYE_KB4. More... | |
struct | t_camera_calibration_rt8_params_float |
Floating point parameters for T_DISTORTION_OPENCV_RT8, also including metric_radius. More... | |
struct | t_camera_model_params |
Floating point calibration data for a single calibrated camera. More... | |
struct | t_camera_calibration_rt5_params |
Parameters for T_DISTORTION_OPENCV_RADTAN_5. More... | |
struct | t_camera_calibration_rt8_params |
Parameters for T_DISTORTION_OPENCV_RADTAN_8. More... | |
struct | t_camera_calibration_rt14_params |
Parameters for T_DISTORTION_OPENCV_RADTAN_14. More... | |
struct | t_camera_calibration_kb4_params |
Parameters for T_DISTORTION_FISHEYE_KB4. More... | |
struct | t_camera_calibration_wmr_params |
Parameters for T_DISTORTION_WMR. More... | |
struct | t_camera_calibration |
Essential calibration data for a single camera, or single lens/sensor of a stereo camera. More... | |
struct | t_stereo_camera_calibration |
Stereo camera calibration data to be given to trackers. More... | |
struct | t_inertial_calibration |
Parameters for accelerometer and gyroscope calibration. More... | |
struct | t_imu_calibration |
Combined IMU calibration data. More... | |
struct | t_convert_table |
struct | t_hsv_filter_color |
struct | t_hsv_filter_params |
Parameters for constructing an HSV filter. More... | |
struct | t_hsv_filter_large_table |
struct | t_hsv_filter_optimized_table |
struct | t_slam_camera_calibration |
Extension to camera calibration for SLAM tracking. More... | |
struct | t_slam_imu_calibration |
Extension to IMU calibration for SLAM tracking. More... | |
struct | t_slam_calibration |
Calibration information necessary for SLAM tracking. More... | |
struct | t_slam_tracker_config |
SLAM tracker configuration. More... | |
struct | t_calibration_status |
struct | t_calibration_params |
struct | t_vit_bundle |
A bundle of VIT interface functions, used by the tracking interface loader. More... | |
struct | xrt::tracking::hand::mercury::HandTracking |
Main class of Mercury hand tracking. More... | |
Macros | |
#define | XRT_DISTORTION_MAX_DIM (14) |
Maximum size of rectilinear distortion coefficient array. More... | |
#define | T_HSV_SIZE 32 |
#define | T_HSV_STEP (256 / T_HSV_SIZE) |
#define | T_HSV_DEFAULT_PARAMS() |
Typedefs | |
typedef struct cJSON | cJSON |
Enumerations | |
enum | t_camera_distortion_model { T_DISTORTION_OPENCV_RADTAN_5 , T_DISTORTION_OPENCV_RADTAN_8 , T_DISTORTION_OPENCV_RADTAN_14 , T_DISTORTION_FISHEYE_KB4 , T_DISTORTION_WMR } |
The distortion model this camera calibration falls under. More... | |
enum | t_slam_prediction_type { SLAM_PRED_NONE = 0 , SLAM_PRED_SP_SO_SA_SL , SLAM_PRED_SP_SO_IA_SL , SLAM_PRED_SP_SO_IA_IL , SLAM_PRED_IP_IO_IA_IL , SLAM_PRED_COUNT } |
SLAM prediction type. More... | |
enum | t_board_pattern { T_BOARD_CHECKERS , T_BOARD_SB_CHECKERS , T_BOARD_CIRCLES , T_BOARD_ASYMMETRIC_CIRCLES } |
Board pattern type. More... | |
Functions | |
struct xrt_slam_sinks * | euroc_recorder_create (struct xrt_frame_context *xfctx, const char *record_path, int cam_count, bool record_from_start) |
Create SLAM sinks to record samples in EuRoC format. More... | |
static const char * | t_stringify_camera_distortion_model (const enum t_camera_distortion_model model) |
Stringifies a t_camera_distortion_model. More... | |
static size_t | t_num_params_from_distortion_model (const enum t_camera_distortion_model model) |
Returns the number of parameters needed for this t_camera_distortion_model to be held by an OpenCV Mat and correctly interpreted by OpenCV's (un)projection functions. More... | |
void | t_convert_fill_table (struct t_convert_table *t) |
void | t_convert_make_y8u8v8_to_r8g8b8 (struct t_convert_table *t) |
void | t_convert_make_y8u8v8_to_h8s8v8 (struct t_convert_table *t) |
void | t_convert_make_h8s8v8_to_r8g8b8 (struct t_convert_table *t) |
void | t_convert_in_place_y8u8v8_to_r8g8b8 (uint32_t width, uint32_t height, size_t stride, void *data_ptr) |
void | t_convert_in_place_y8u8v8_to_h8s8v8 (uint32_t width, uint32_t height, size_t stride, void *data_ptr) |
void | t_convert_in_place_h8s8v8_to_r8g8b8 (uint32_t width, uint32_t height, size_t stride, void *data_ptr) |
void | t_hsv_build_convert_table (struct t_hsv_filter_params *params, struct t_convert_table *t) |
void | t_hsv_build_large_table (struct t_hsv_filter_params *params, struct t_hsv_filter_large_table *t) |
void | t_hsv_build_optimized_table (struct t_hsv_filter_params *params, struct t_hsv_filter_optimized_table *t) |
static uint8_t | t_hsv_filter_sample (struct t_hsv_filter_optimized_table *t, uint32_t y, uint32_t u, uint32_t v) |
void | t_slam_fill_default_config (struct t_slam_tracker_config *config) |
Fills in a t_slam_tracker_config with default values. More... | |
void | t_calibration_gui_params_load_or_default (struct t_calibration_params *p) |
void | t_calibration_gui_params_to_json (cJSON **out_json, struct t_calibration_params *p) |
void | t_calibration_gui_params_parse_from_json (const cJSON *params, struct t_calibration_params *p) |
int | t_calibration_stereo_create (struct xrt_frame_context *xfctx, const struct t_calibration_params *params, struct t_calibration_status *status, struct xrt_frame_sink *gui, struct xrt_frame_sink **out_sink) |
Create the camera calibration frame sink. More... | |
int | t_convert_yuv_or_yuyv_create (struct xrt_frame_sink *next, struct xrt_frame_sink **out_sink) |
int | t_debug_hsv_picker_create (struct xrt_frame_context *xfctx, struct xrt_frame_sink *passthrough, struct xrt_frame_sink **out_sink) |
int | t_debug_hsv_viewer_create (struct xrt_frame_context *xfctx, struct xrt_frame_sink *passthrough, struct xrt_frame_sink **out_sink) |
int | t_debug_hsv_filter_create (struct xrt_frame_context *xfctx, struct xrt_frame_sink *passthrough, struct xrt_frame_sink **out_sink) |
bool | t_vit_bundle_load (struct t_vit_bundle *vit, const char *path) |
Load the tracker. More... | |
void | t_vit_bundle_unload (struct t_vit_bundle *vit) |
Unload the tracker. More... | |
struct t_hand_tracking_sync * | t_hand_tracking_sync_mercury_create (struct t_stereo_camera_calibration *calib, struct t_hand_tracking_create_info create_info, const char *models_folder) |
Create a Mercury hand tracking pipeline. More... | |
struct imu_fusion * | imu_fusion::imu_fusion_create (void) |
Create a struct imu_fusion. More... | |
void | imu_fusion::imu_fusion_destroy (struct imu_fusion *fusion) |
Destroy a struct imu_fusion. More... | |
int | imu_fusion::imu_fusion_incorporate_gyros (struct imu_fusion *fusion, uint64_t timestamp_ns, struct xrt_vec3 const *ang_vel, struct xrt_vec3 const *ang_vel_variance) |
Predict and correct fusion with a gyroscope reading. More... | |
int | imu_fusion::imu_fusion_incorporate_accelerometer (struct imu_fusion *fusion, uint64_t timestamp_ns, struct xrt_vec3 const *accel, struct xrt_vec3 const *accel_variance, struct xrt_vec3 *out_world_accel) |
Predict and correct fusion with an accelerometer reading. More... | |
int | imu_fusion::imu_fusion_incorporate_gyros_and_accelerometer (struct imu_fusion *fusion, uint64_t timestamp_ns, struct xrt_vec3 const *ang_vel, struct xrt_vec3 const *ang_vel_variance, struct xrt_vec3 const *accel, struct xrt_vec3 const *accel_variance, struct xrt_vec3 *out_world_accel) |
Predict and correct fusion with a simultaneous accelerometer and gyroscope reading. More... | |
int | imu_fusion::imu_fusion_get_prediction (struct imu_fusion const *fusion, uint64_t timestamp_ns, struct xrt_quat *out_quat, struct xrt_vec3 *out_ang_vel) |
Get the predicted state. More... | |
int | imu_fusion::imu_fusion_get_prediction_rotation_vec (struct imu_fusion const *fusion, uint64_t timestamp_ns, struct xrt_vec3 *out_rotation_vec) |
Get the predicted state as a rotation vector. More... | |
void | t_stereo_camera_calibration::t_stereo_camera_calibration_alloc (struct t_stereo_camera_calibration **out_c, const enum t_camera_distortion_model distortion_model) |
Allocates a new stereo calibration data, unreferences the old data pointed to by out_c . More... | |
static void | t_stereo_camera_calibration_reference (struct t_stereo_camera_calibration **dst, struct t_stereo_camera_calibration *src) |
Update the reference counts on a stereo calibration data(s). More... | |
void | t_camera_calibration_dump (struct t_camera_calibration *c) |
Small helper function that dumps one camera calibration data to logging. More... | |
void | t_stereo_camera_calibration_dump (struct t_stereo_camera_calibration *c) |
Small helper function that dumps the stereo calibration data to logging. More... | |
bool | t_stereo_camera_calibration_load_v1 (FILE *calib_file, struct t_stereo_camera_calibration **out_data) |
Load stereo calibration data from a given file in v1 format (binary). More... | |
bool | t_stereo_camera_calibration_save_v1 (FILE *calib_file, struct t_stereo_camera_calibration *data) |
Save the given stereo calibration data to the given file in v1 format (binary). More... | |
bool | t_stereo_camera_calibration_from_json_v2 (cJSON *json, struct t_stereo_camera_calibration **out_stereo) |
Parse the json object in v2 format into stereo calibration data. More... | |
bool | t_stereo_camera_calibration_to_json_v2 (cJSON **out_cjson, struct t_stereo_camera_calibration *data) |
Convert the given stereo calibration data into a json object in v2 format. More... | |
bool | t_stereo_camera_calibration_load (const char *calib_path, struct t_stereo_camera_calibration **out_data) |
Load stereo calibration data from a given file path. More... | |
bool | t_stereo_camera_calibration_save (const char *calib_path, struct t_stereo_camera_calibration *data) |
Save the given stereo calibration data to the given file path. More... | |
void | t_inertial_calibration_dump (struct t_inertial_calibration *c) |
Prints a t_inertial_calibration struct. More... | |
void | t_imu_calibration_dump (struct t_imu_calibration *c) |
Small helper function that dumps the imu calibration data to logging. More... | |
int | t_hsv_filter::t_hsv_filter_create (struct xrt_frame_context *xfctx, struct t_hsv_filter_params *params, struct xrt_frame_sink *sinks[4], struct xrt_frame_sink **out_sink) |
Construct an HSV filter sink. More... | |
int | xrt_tracked_psmv::t_psmv_start (struct xrt_tracked_psmv *xtmv) |
int | xrt_tracked_psmv::t_psmv_create (struct xrt_frame_context *xfctx, struct xrt_colour_rgb_f32 *rgb, struct t_stereo_camera_calibration *data, struct xrt_tracked_psmv **out_xtmv, struct xrt_frame_sink **out_sink) |
int | xrt_tracked_psvr::t_psvr_start (struct xrt_tracked_psvr *xtvr) |
int | xrt_tracked_psvr::t_psvr_create (struct xrt_frame_context *xfctx, struct t_stereo_camera_calibration *data, struct xrt_tracked_psvr **out_xtvr, struct xrt_frame_sink **out_sink) |
int | xrt_tracked_slam::t_slam_create (struct xrt_frame_context *xfctx, struct t_slam_tracker_config *config, struct xrt_tracked_slam **out_xts, struct xrt_slam_sinks **out_sink) |
int | xrt_tracked_slam::t_slam_start (struct xrt_tracked_slam *xts) |
void | t_calibration_params::t_calibration_gui_params_default (struct t_calibration_params *p) |
Sets the calibration parameters to the their default values. More... | |
Trackers, filters and associated helper code.
Right now there is no specific convention on where a tracking systems coordinate system is centered, and is something we probably need to figure out. Right now the stereo based tracking system used by the PSVR and PSMV tracking system is centered on the camera that OpenCV decided is origin.
To go a bit further on the PSVR/PSMV case. Think about a idealized start up case, the user is wearing the HMD headset and holding two PSMV controllers. The HMD's coordinate system axis are perfectly parallel with the user coordinate with the user's coordinate system. Where -Z is forward. The user holds the controllers with the ball pointing up and the buttons on the back pointing forward. Which if you read the documentation of psmv_device will that the axis of the PSMV are also perfectly aligned with the users coordinate system. So everything "attached" to the user has its coordinate system parallel to the user's.
The camera on the other hand is looking directly at the user, its Z-axis and X-axis is flipped in relation to the user's. So to compare what is sees to what the user sees, everything is rotated 180° around the Y-axis.
#define T_HSV_DEFAULT_PARAMS | ( | ) |
#include <auxiliary/tracking/t_tracking.h>
#define XRT_DISTORTION_MAX_DIM (14) |
#include <auxiliary/tracking/t_tracking.h>
Maximum size of rectilinear distortion coefficient array.
enum t_board_pattern |
#include <auxiliary/tracking/t_tracking.h>
Board pattern type.
Enumerator | |
---|---|
T_BOARD_SB_CHECKERS | Sector based checker board, using |
#include <auxiliary/tracking/t_tracking.h>
The distortion model this camera calibration falls under.
Add RiftS's Fisheye62 to this enumerator once we have native support for it in our hand tracking and SLAM.
Feel free to add support for T_DISTORTION_OPENCV_RADTAN_4 or T_DISTORTION_OPENCV_RADTAN_12 whenever you have a camera that uses those.
Enumerator | |
---|---|
T_DISTORTION_OPENCV_RADTAN_5 | OpenCV's radial-tangential distortion model. Exactly equivalent to the distortion model from OpenCV's calib3d module with just the first five parameters. This may be reinterpreted as RT8 with the last three parameters zeroed out, which is 100% valid and results in exactly equivalent (un)projections. Parameters: \[(k_1, k_2, p_1, p_2, k_3)\] |
T_DISTORTION_OPENCV_RADTAN_8 | OpenCV's radial-tangential distortion model. Exactly equivalent to the distortion model from OpenCV's calib3d module, with just the first 8 parameters. Parameters: \[(k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6)\] |
T_DISTORTION_OPENCV_RADTAN_14 | OpenCV's radial-tangential distortion model. Exactly equivalent to the distortion model from OpenCV's calib3d module, with all 14 parameters. In practice this is reinterpreted as RT8 because the last 6 parameters are almost always approximately 0.
Parameters: \[(k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6, s_1, s_2, s_3, s_4, \tau_x, \tau_y)\] All known factory-calibrated Luxonis cameras use this distortion model, and in all known cases their last 6 parameters are approximately 0. |
T_DISTORTION_FISHEYE_KB4 | Juho Kannalla and Sami Sebastian Brandt's fisheye distortion model. Exactly equivalent to the distortion model from OpenCV's calib3d/fisheye module. Parameters: \[(k_1, k_2, k_3, k_4)\] Many cameras use this model. Here's a non-exhaustive list of cameras Monado knows about that fall under this model:
|
T_DISTORTION_WMR | Windows Mixed Reality headsets' camera model. The model is listed as CALIBRATION_LensDistortionModelRational6KT in the WMR json files, which seems to be equivalent to Azure-Kinect-Sensor-SDK's K4A_CALIBRATION_LENS_DISTORTION_MODEL_RATIONAL_6KT. The only difference between this model and RT8 are codx, cody, and the way p1 and p2 are interpreted. In practice we reinterpret this as RT8 because those values are almost always approximately 0 for WMR headsets. Parameters: \[(k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6, cod_x, cod_y, rpmax)\] |
#include <auxiliary/tracking/t_tracking.h>
SLAM prediction type.
Naming scheme as follows: P: position, O: orientation, A: angular velocity, L: linear velocity S: From SLAM poses (slow, precise), I: From IMU data (fast, noisy)
struct xrt_slam_sinks * euroc_recorder_create | ( | struct xrt_frame_context * | xfctx, |
const char * | record_path, | ||
int | cam_count, | ||
bool | record_from_start | ||
) |
#include <auxiliary/tracking/t_euroc_recorder.h>
Create SLAM sinks to record samples in EuRoC format.
xfctx | Frame context for the sinks. |
record_path | Directory name to save the dataset or NULL for a default based on the current datetime. |
cam_count | Number of cameras to record |
record_from_start | Whether to start recording immediately on creation. |
References xrt_frame_node::break_apart, euroc_recorder::path, and euroc_recorder::path_prefix.
struct imu_fusion * imu_fusion_create | ( | void | ) |
Create a struct imu_fusion.
void imu_fusion_destroy | ( | struct imu_fusion * | fusion | ) |
Destroy a struct imu_fusion.
Should not be called simultaneously with any other imu_fusion function.
fusion | The IMU Fusion object |
int imu_fusion_get_prediction | ( | struct imu_fusion const * | fusion, |
uint64_t | timestamp_ns, | ||
struct xrt_quat * | out_quat, | ||
struct xrt_vec3 * | out_ang_vel | ||
) |
Get the predicted state.
Does not advance the internal state clock.
Non-zero return means error.
fusion | The IMU Fusion object |
timestamp_ns | The timestamp corresponding to the predicted state you want. |
out_quat | The quaternion to populate with the predicted orientation. |
out_ang_vel | The vector to poluate with the predicted angular velocity. |
References xrt::auxiliary::tracking::SimpleIMUFusion::getAngVel(), xrt::auxiliary::tracking::SimpleIMUFusion::getPredictedQuat(), xrt::auxiliary::tracking::SimpleIMUFusion::getQuat(), xrt::auxiliary::math::map_quat(), xrt::auxiliary::math::map_vec3(), and xrt::auxiliary::tracking::SimpleIMUFusion::valid().
int imu_fusion_get_prediction_rotation_vec | ( | struct imu_fusion const * | fusion, |
uint64_t | timestamp_ns, | ||
struct xrt_vec3 * | out_rotation_vec | ||
) |
Get the predicted state as a rotation vector.
Does not advance the internal state clock.
This is mostly for debugging: a rotation vector can be easier to visualize or understand intuitively.
Non-zero return means error.
fusion | The IMU Fusion object |
timestamp_ns | The timestamp corresponding to the predicted state you want. |
out_rotation_vec | The vector to poluate with the predicted orientation rotation vector. |
References xrt::auxiliary::tracking::SimpleIMUFusion::getPredictedQuat(), xrt::auxiliary::tracking::SimpleIMUFusion::getRotationVec(), xrt::auxiliary::math::map_vec3(), and xrt::auxiliary::tracking::SimpleIMUFusion::valid().
int imu_fusion_incorporate_accelerometer | ( | struct imu_fusion * | fusion, |
uint64_t | timestamp_ns, | ||
struct xrt_vec3 const * | accel, | ||
struct xrt_vec3 const * | accel_variance, | ||
struct xrt_vec3 * | out_world_accel | ||
) |
Predict and correct fusion with an accelerometer reading.
If you're receiving accel and gyro data at the same time, call imu_fusion_incorporate_gyros_and_accelerometer() instead.
Should not be called simultaneously with any other imu_fusion function.
Non-zero return means error.
fusion | The IMU Fusion object |
timestamp_ns | The timestamp corresponding to the information being processed with this call. |
accel | Accelerometer data (in m/s/s) including the effect of gravity - assumed to be +y when aligned with the world. |
accel_variance | The variance of the accelerometer measurements: part of the characteristics of the IMU being used. |
out_world_accel | Optional output parameter: will contain the non-gravity acceleration in the world frame. |
References xrt::auxiliary::tracking::SimpleIMUFusion::getCorrectedWorldAccel(), xrt::auxiliary::tracking::SimpleIMUFusion::handleAccel(), and xrt::auxiliary::math::map_vec3().
int imu_fusion_incorporate_gyros | ( | struct imu_fusion * | fusion, |
uint64_t | timestamp_ns, | ||
struct xrt_vec3 const * | ang_vel, | ||
struct xrt_vec3 const * | ang_vel_variance | ||
) |
Predict and correct fusion with a gyroscope reading.
dt should not be zero: If you're receiving accel and gyro data at the same time, call imu_fusion_incorporate_gyros_and_accelerometer() instead.
Should not be called simultaneously with any other imu_fusion function.
Non-zero return means error.
fusion | The IMU Fusion object |
timestamp_ns | The timestamp corresponding to the information being processed with this call. |
ang_vel | Angular velocity vector from gyroscope: in radians per second. |
ang_vel_variance | The variance of the angular velocity measurements: part of the characteristics of the IMU being used. |
References xrt::auxiliary::tracking::SimpleIMUFusion::handleGyro(), and xrt::auxiliary::math::map_vec3().
int imu_fusion_incorporate_gyros_and_accelerometer | ( | struct imu_fusion * | fusion, |
uint64_t | timestamp_ns, | ||
struct xrt_vec3 const * | ang_vel, | ||
struct xrt_vec3 const * | ang_vel_variance, | ||
struct xrt_vec3 const * | accel, | ||
struct xrt_vec3 const * | accel_variance, | ||
struct xrt_vec3 * | out_world_accel | ||
) |
Predict and correct fusion with a simultaneous accelerometer and gyroscope reading.
Should not be called simultaneously with any other imu_fusion function.
Non-zero return means error.
fusion | The IMU Fusion object |
timestamp_ns | The timestamp corresponding to the information being processed with this call. |
ang_vel | Angular velocity vector from gyroscope: radians/s |
ang_vel_variance | The variance of the angular velocity measurements: part of the characteristics of the IMU being used. |
accel | Accelerometer data (in m/s/s) including the effect of gravity - assumed to be +y when aligned with the world. |
accel_variance | The variance of the accelerometer measurements: part of the characteristics of the IMU being used. |
out_world_accel | Optional output parameter: will contain the non-gravity acceleration in the world frame. |
References xrt::auxiliary::tracking::SimpleIMUFusion::getCorrectedWorldAccel(), xrt::auxiliary::tracking::SimpleIMUFusion::handleAccel(), xrt::auxiliary::tracking::SimpleIMUFusion::handleGyro(), xrt::auxiliary::math::map_vec3(), and xrt::auxiliary::tracking::SimpleIMUFusion::postCorrect().
void t_calibration_gui_params_default | ( | struct t_calibration_params * | p | ) |
Sets the calibration parameters to the their default values.
References t_calibration_params::pattern, t_calibration_params::stereo_sbs, and t_calibration_params::use_fisheye.
int t_calibration_stereo_create | ( | struct xrt_frame_context * | xfctx, |
const struct t_calibration_params * | params, | ||
struct t_calibration_status * | status, | ||
struct xrt_frame_sink * | gui, | ||
struct xrt_frame_sink ** | out_sink | ||
) |
#include <auxiliary/tracking/t_tracking.h>
Create the camera calibration frame sink.
xfctx | Context for frame transport. |
params | Parameters to use during calibration. Values copied, pointer not retained. |
status | Optional pointer to structure for status information. Pointer retained, and pointed-to struct modified. |
gui | Frame sink |
out_sink | Output: created frame sink. |
|
related |
Small helper function that dumps one camera calibration data to logging.
References U_LOG_RAW.
Referenced by t_stereo_camera_calibration::t_stereo_camera_calibration_dump().
int t_convert_yuv_or_yuyv_create | ( | struct xrt_frame_sink * | next, |
struct xrt_frame_sink ** | out_sink | ||
) |
#include <auxiliary/tracking/t_tracking.h>
int t_debug_hsv_filter_create | ( | struct xrt_frame_context * | xfctx, |
struct xrt_frame_sink * | passthrough, | ||
struct xrt_frame_sink ** | out_sink | ||
) |
#include <auxiliary/tracking/t_tracking.h>
int t_debug_hsv_picker_create | ( | struct xrt_frame_context * | xfctx, |
struct xrt_frame_sink * | passthrough, | ||
struct xrt_frame_sink ** | out_sink | ||
) |
#include <auxiliary/tracking/t_tracking.h>
int t_debug_hsv_viewer_create | ( | struct xrt_frame_context * | xfctx, |
struct xrt_frame_sink * | passthrough, | ||
struct xrt_frame_sink ** | out_sink | ||
) |
#include <auxiliary/tracking/t_tracking.h>
struct t_hand_tracking_sync * t_hand_tracking_sync_mercury_create | ( | struct t_stereo_camera_calibration * | calib, |
struct t_hand_tracking_create_info | create_info, | ||
const char * | models_folder | ||
) |
#include <tracking/hand/mercury/hg_interface.h>
Create a Mercury hand tracking pipeline.
int t_hsv_filter_create | ( | struct xrt_frame_context * | xfctx, |
struct t_hsv_filter_params * | params, | ||
struct xrt_frame_sink * | sinks[4], | ||
struct xrt_frame_sink ** | out_sink | ||
) |
Construct an HSV filter sink.
References xrt_frame_sink::push_frame, and U_TYPED_CALLOC.
|
related |
Small helper function that dumps the imu calibration data to logging.
|
related |
Prints a t_inertial_calibration struct.
|
inlinestatic |
#include <auxiliary/tracking/t_tracking.h>
Returns the number of parameters needed for this t_camera_distortion_model to be held by an OpenCV Mat and correctly interpreted by OpenCV's (un)projection functions.
model | The distortion model in question |
References T_DISTORTION_FISHEYE_KB4, T_DISTORTION_OPENCV_RADTAN_14, T_DISTORTION_OPENCV_RADTAN_5, T_DISTORTION_OPENCV_RADTAN_8, T_DISTORTION_WMR, and U_LOG_E.
void t_slam_fill_default_config | ( | struct t_slam_tracker_config * | config | ) |
#include <auxiliary/tracking/t_tracking.h>
Fills in a t_slam_tracker_config with default values.
References t_slam_tracker_config::cam_count, t_slam_tracker_config::csv_path, t_slam_tracker_config::features_stat, t_slam_tracker_config::log_level, t_slam_tracker_config::openvr_groundtruth_device, t_slam_tracker_config::prediction, t_slam_tracker_config::slam_config, t_slam_tracker_config::slam_ui, t_slam_tracker_config::submit_from_start, t_slam_tracker_config::timing_stat, t_slam_tracker_config::vit_system_library_path, and t_slam_tracker_config::write_csvs.
Referenced by p_factory_ensure_slam_frameserver().
void t_stereo_camera_calibration_alloc | ( | struct t_stereo_camera_calibration ** | out_c, |
const enum t_camera_distortion_model | distortion_model | ||
) |
Allocates a new stereo calibration data, unreferences the old data pointed to by out_c
.
References t_camera_calibration::distortion_model, t_stereo_camera_calibration::t_stereo_camera_calibration_reference(), U_TYPED_CALLOC, and t_stereo_camera_calibration::view.
Referenced by rift_s_create_stereo_camera_calib_rotated(), and wmr_hmd_create_stereo_camera_calib().
|
related |
Small helper function that dumps the stereo calibration data to logging.
References t_camera_calibration::t_camera_calibration_dump(), U_LOG_RAW, and t_stereo_camera_calibration::view.
|
related |
Parse the json object in v2 format into stereo calibration data.
|
related |
Load stereo calibration data from a given file path.
|
related |
Load stereo calibration data from a given file in v1 format (binary).
|
related |
Update the reference counts on a stereo calibration data(s).
[in,out] | dst | Pointer to a object reference: if the object reference is non-null will decrement its counter. The reference that dst points to will be set to src . |
[in] | src | New object for dst to refer to (may be null). If non-null, will have its refcount increased. |
References t_stereo_camera_calibration::reference, xrt_reference::xrt_reference_dec_and_is_zero(), and xrt_reference::xrt_reference_inc().
Referenced by t_stereo_camera_calibration::t_stereo_camera_calibration_alloc().
|
related |
Save the given stereo calibration data to the given file path.
|
related |
Save the given stereo calibration data to the given file in v1 format (binary).
|
related |
Convert the given stereo calibration data into a json object in v2 format.
|
inlinestatic |
#include <auxiliary/tracking/t_tracking.h>
Stringifies a t_camera_distortion_model.
model | The distortion model to be stringified |
References T_DISTORTION_FISHEYE_KB4, T_DISTORTION_OPENCV_RADTAN_14, T_DISTORTION_OPENCV_RADTAN_5, T_DISTORTION_OPENCV_RADTAN_8, T_DISTORTION_WMR, and U_LOG_E.
bool t_vit_bundle_load | ( | struct t_vit_bundle * | vit, |
const char * | path | ||
) |
void t_vit_bundle_unload | ( | struct t_vit_bundle * | vit | ) |
#include <auxiliary/tracking/t_vit_loader.h>
Unload the tracker.