diff --git a/src/xrt/drivers/realsense/rs_interface.h b/src/xrt/drivers/realsense/rs_interface.h index 845e050dc..623089164 100644 --- a/src/xrt/drivers/realsense/rs_interface.h +++ b/src/xrt/drivers/realsense/rs_interface.h @@ -47,6 +47,14 @@ rs_create_auto_prober(void); struct xrt_fs * rs_source_create(struct xrt_frame_context *xfctx, int device_idx); +/*! + * Creates an xrt_device that exposes the onboard tracking of a Realsense device + * (ie. probably a T265) + * @return An xrt_device that you can call get_tracked_pose on with XRT_INPUT_GENERIC_TRACKER_POSE + */ +struct xrt_device * +rs_create_tracked_device_internal_slam(); + /*! * @dir drivers/realsense * diff --git a/src/xrt/drivers/realsense/rs_prober.c b/src/xrt/drivers/realsense/rs_prober.c index ac661bf0a..a3f7f8763 100644 --- a/src/xrt/drivers/realsense/rs_prober.c +++ b/src/xrt/drivers/realsense/rs_prober.c @@ -223,6 +223,33 @@ create_tracked_rs_device(struct xrt_prober *xp) return dev; } + +//! Basically just for T265 +struct xrt_device * +rs_create_tracked_device_internal_slam() +{ + rs2_error *e = NULL; + struct rs_container rsc = {0}; + + rsc.context = DO(rs2_create_context, RS2_API_VERSION); + rsc.device_list = DO(rs2_query_devices, rsc.context); + rsc.device_count = DO(rs2_get_device_count, rsc.device_list); + + + int ddev_idx = find_capable_device(RS_TRACKING_DEVICE_SLAM, rsc.device_list); + + + + rs_container_cleanup(&rsc); // We got ddev_idx and hdev_idx, release realsense resources + + struct xrt_device *dev = NULL; + + dev = rs_ddev_create(ddev_idx); + + + return dev; +} + //! @public @memberof rs_prober static int rs_prober_autoprobe(struct xrt_auto_prober *xap,