29#ifndef RIFT_S_TRACKER_H
30#define RIFT_S_TRACKER_H
34enum rift_s_tracker_pose
36 RIFT_S_TRACKER_POSE_IMU,
37 RIFT_S_TRACKER_POSE_LEFT_CAMERA,
38 RIFT_S_TRACKER_POSE_DEVICE,
87 uint64_t seen_clock_observations;
118 char hand_status[128];
119 char slam_status[128];
144 uint64_t device_timestamp_ns,
150 uint64_t frame_ts_ns,
151 struct xrt_frame *frames[RIFT_S_CAMERA_COUNT]);
154 enum rift_s_tracker_pose pose,
155 uint64_t at_timestamp_ns,
int64_t timepoint_ns
Integer timestamp type.
Definition: u_time.h:70
int64_t time_duration_ns
Integer duration type in nanoseconds.
Definition: u_time.h:81
A IMU fusion specially made for 3dof devices.
Wrapper around OS threading native functions.
Oculus Rift S firmware parsing interface.
struct rift_s_tracker * rift_s_tracker_create(struct xrt_tracking_origin *origin, struct xrt_frame_context *xfctx, struct rift_s_hmd_config *hmd_config)
Procedure to setup trackers: 3dof, SLAM and hand tracking.
Definition: rift_s_tracker.c:322
Definition: m_imu_3dof.h:35
A wrapper around a native mutex.
Definition: os_threading.h:55
Definition: rift_s_tracker.h:42
struct xrt_vec3 last_angular_velocity
The last angular velocity from the IMU, for prediction.
Definition: rift_s_tracker.h:57
struct xrt_tracked_slam * slam
SLAM tracker.
Definition: rift_s_tracker.h:73
bool slam_enabled
Set at start. Whether the SLAM tracker was initialized.
Definition: rift_s_tracker.h:76
struct xrt_pose left_cam_from_imu
Estimated offset from HMD device timestamp to local monotonic clock.
Definition: rift_s_tracker.h:84
struct rift_s_tracker::@170 tracking
Fields related to camera-based tracking (SLAM and hand tracking)
uint64_t last_imu_timestamp_ns
When did we get the last IMU sample, device clock.
Definition: rift_s_tracker.h:60
struct m_imu_3dof i3dof
Main fusion calculator.
Definition: rift_s_tracker.h:54
timepoint_ns last_imu_local_timestamp_ns
Last IMU sample local system clock.
Definition: rift_s_tracker.h:63
struct xrt_pose pose
Last tracked pose.
Definition: rift_s_tracker.h:100
int64_t camera_ts_offset
Adjustment to apply to camera timestamps to bring them into the.
Definition: rift_s_tracker.h:94
struct os_mutex mutex
Protects shared access to 3dof and pose storage.
Definition: rift_s_tracker.h:46
bool hand_enabled
Set at start. Whether the hand tracker was initialized.
Definition: rift_s_tracker.h:79
bool ready_for_data
Don't process IMU / video until started.
Definition: rift_s_tracker.h:49
bool slam_over_3dof
Whether to track the HMD with 6dof SLAM or fallback to the fusion 3dof tracker.
Definition: rift_s_tracker.h:97
Calibration information necessary for SLAM tracking.
Definition: t_tracking.h:636
Stereo camera calibration data to be given to trackers.
Definition: t_tracking.h:248
A single HMD or input device.
Definition: xrt_device.h:241
Object used to track all sinks and frame producers in a graph.
Definition: xrt_frame.h:108
Basic frame data structure - holds a pointer to buffer.
Definition: xrt_frame.h:25
A pose composed of a position and orientation.
Definition: xrt_defines.h:465
Container of pointers to sinks that could be used for a SLAM system.
Definition: xrt_tracking.h:202
A relation with two spaces, includes velocity and acceleration.
Definition: xrt_defines.h:657
An adapter that wraps an external SLAM tracker to provide SLAM tracking.
Definition: xrt_tracking.h:294
A tracking system or device origin.
Definition: xrt_tracking.h:71
A 3 element vector with single floats.
Definition: xrt_defines.h:271
Common defines and enums for XRT.
Header defining an xrt display or controller device.