13#define XRT_TRACKING_NAME_LEN 256
15#define XRT_TRACKING_MAX_CAMS 8
16#define XRT_TRACKING_FOR_EACH_CAM(_) _(0) _(1) _(2) _(3) _(4) _(5) _(6) _(7)
18#define XRT_TRACKING_MAX_IMUS 3
19#define XRT_TRACKING_FOR_EACH_IMU(_) _(0) _(1) _(2)
85 char name[XRT_TRACKING_NAME_LEN];
167 } views[XRT_TRACKING_MAX_CAMS];
324XRT_NONNULL_ALL
static inline void
331XRT_NONNULL_ALL
static inline void
334 sink->push_pose(sink, sample);
338XRT_NONNULL_ALL
static inline void
341 sink->push_hand_masks(sink, hand_masks);
345XRT_NONNULL_ALL
static inline void
355XRT_NONNULL_ALL
static inline void
358 psmv->
push_imu(psmv, timestamp_ns, sample);
362XRT_NONNULL_ALL
static inline void
375XRT_NONNULL_ALL
static inline void
384XRT_NONNULL_ALL
static inline void
387 psvr->
push_imu(psvr, timestamp_ns, sample);
391XRT_NONNULL_ALL
static inline void
405XRT_NONNULL_ALL
static inline void
int64_t timepoint_ns
Integer timestamp type.
Definition u_time.h:77
xrt_input_name
Every internal input source known to monado with a baked in type.
Definition xrt_defines.h:940
xrt_tracking_type
What kind of tracking system is this.
Definition xrt_tracking.h:51
@ XRT_TRACKING_TYPE_NONE
The device(s) are never tracked.
Definition xrt_tracking.h:53
@ XRT_TRACKING_TYPE_MAGNETIC
The device(s) are tracked by magnetic fields, eg. Razer Hydra.
Definition xrt_tracking.h:62
@ XRT_TRACKING_TYPE_CONSTELLATION
The device(s) are tracked through a constellation of lights as seen by cameras.
Definition xrt_tracking.h:68
@ XRT_TRACKING_TYPE_LIGHTHOUSE
The device(s) are tracked by Lighthouse.
Definition xrt_tracking.h:59
@ XRT_TRACKING_TYPE_RGB
The device(s) are tracked by RGB camera(s).
Definition xrt_tracking.h:56
@ XRT_TRACKING_TYPE_OTHER
The device(s) are tracked by other methods.
Definition xrt_tracking.h:71
@ XRT_TRACKING_TYPE_ATTACHABLE
The device(s) are (re)attachable.
Definition xrt_tracking.h:74
@ XRT_TRACKING_TYPE_EXTERNAL_SLAM
The device(s) are tracked by external SLAM.
Definition xrt_tracking.h:65
Time-keeping state structure.
Definition u_time.cpp:30
A 3 element colour with floating point channels.
Definition xrt_defines.h:408
A single HMD or input device.
Definition xrt_device.h:341
Object used to track all sinks and frame producers in a graph.
Definition xrt_frame.h:108
A object that is sent frames.
Definition xrt_frame.h:58
Definition xrt_tracking.h:163
bool enabled
Whether a mask for this hand is being reported.
Definition xrt_tracking.h:164
struct xrt_rect_f32 rect
The mask itself in pixel coordinates.
Definition xrt_tracking.h:165
Definition xrt_tracking.h:160
bool enabled
Whether any hand mask for this camera is being reported.
Definition xrt_tracking.h:161
Masks (bounding boxes) of different hands from current views.
Definition xrt_tracking.h:158
An object to push xrt_hand_masks_sample to.
Definition xrt_tracking.h:204
IMU Sample.
Definition xrt_tracking.h:139
An object to send IMU samples to.
Definition xrt_tracking.h:181
void(* push_imu)(struct xrt_imu_sink *, struct xrt_imu_sample *sample)
Push an IMU sample into the sink.
Definition xrt_tracking.h:185
Pose sample.
Definition xrt_tracking.h:149
An object to send pairs of timestamps and poses to.
Definition xrt_tracking.h:194
A pose composed of a position and orientation.
Definition xrt_defines.h:502
Image rectangle.
Definition xrt_defines.h:480
Container of pointers to sinks that could be used for a SLAM system.
Definition xrt_tracking.h:214
struct xrt_pose_sink * gt
Can receive ground truth poses if available.
Definition xrt_tracking.h:219
A relation with two spaces, includes velocity and acceleration.
Definition xrt_defines.h:693
A single tracked PS Move controller, camera and ball are not synced.
Definition xrt_tracking.h:231
void(* push_imu)(struct xrt_tracked_psmv *, timepoint_ns timestamp_ns, struct xrt_tracking_sample *sample)
Push a IMU sample into the tracking system.
Definition xrt_tracking.h:244
struct xrt_device * xdev
Device owning this ball.
Definition xrt_tracking.h:236
void(* get_tracked_pose)(struct xrt_tracked_psmv *, enum xrt_input_name name, timepoint_ns when_ns, struct xrt_space_relation *out_relation)
Called by the owning xrt_device xdev to get the pose of the ball in the tracking space at the given t...
Definition xrt_tracking.h:254
void(* destroy)(struct xrt_tracked_psmv *)
Destroy this tracked ball.
Definition xrt_tracking.h:262
struct xrt_tracking_origin * origin
The tracking system origin for this ball.
Definition xrt_tracking.h:233
struct xrt_colour_rgb_f32 colour
Colour of the ball.
Definition xrt_tracking.h:239
A tracked PSVR headset.
Definition xrt_tracking.h:273
void(* get_tracked_pose)(struct xrt_tracked_psvr *, timepoint_ns when_ns, struct xrt_space_relation *out_relation)
Called by the owning xrt_device xdev to get the pose of the psvr in the tracking space at the given t...
Definition xrt_tracking.h:289
struct xrt_tracking_origin * origin
The tracking system origin for this ball.
Definition xrt_tracking.h:275
void(* destroy)(struct xrt_tracked_psvr *)
Destroy this tracked psvr.
Definition xrt_tracking.h:296
struct xrt_device * xdev
Device owning this ball.
Definition xrt_tracking.h:278
void(* push_imu)(struct xrt_tracked_psvr *, timepoint_ns timestamp_ns, struct xrt_tracking_sample *sample)
Push a IMU sample into the tracking system.
Definition xrt_tracking.h:283
An adapter that wraps an external SLAM tracker to provide SLAM tracking.
Definition xrt_tracking.h:307
void(* get_tracked_pose)(struct xrt_tracked_slam *, timepoint_ns when_ns, struct xrt_space_relation *out_relation)
Called by the owning xrt_device to get the last estimated pose of the SLAM tracker.
Definition xrt_tracking.h:312
Tracking factory.
Definition xrt_tracking.h:102
int(* create_tracked_psmv)(struct xrt_tracking_factory *, struct xrt_tracked_psmv **out_psmv)
Create a tracked PSMV ball.
Definition xrt_tracking.h:109
struct xrt_frame_context * xfctx
Internal frame context, exposed for debugging purposes.
Definition xrt_tracking.h:104
int(* create_tracked_slam)(struct xrt_tracking_factory *, struct xrt_tracked_slam **out_slam)
Create a SLAM tracker.
Definition xrt_tracking.h:121
int(* create_tracked_psvr)(struct xrt_tracking_factory *, struct xrt_tracked_psvr **out_psvr)
Create a tracked PSVR HMD.
Definition xrt_tracking.h:114
A tracking system or device origin.
Definition xrt_tracking.h:83
struct xrt_pose initial_offset
Read-only.
Definition xrt_tracking.h:94
enum xrt_tracking_type type
What can the state tracker expect from this tracking system.
Definition xrt_tracking.h:88
IMU Sample.
Definition xrt_tracking.h:129
A 3 element vector with single doubles.
Definition xrt_defines.h:311
A 3 element vector with single floats.
Definition xrt_defines.h:299
Common defines and enums for XRT.
int64_t timepoint_ns
Definition xrt_tracking.h:38