Monado OpenXR Runtime
Loading...
Searching...
No Matches
xrt::tracking::constellation::Camera Struct Reference
Collaboration diagram for xrt::tracking::constellation::Camera:

Public Member Functions

 Camera (ConstellationTracker *tracker, std::weak_ptr< CameraMosaic > mosaic, const struct t_constellation_tracker_camera &camera_params, enum u_logging_level *log_level_ptr)
 
 Camera (const Camera &)=delete
 
 Camera (Camera &&)=delete
 
Cameraoperator= (const Camera &)=delete
 
Cameraoperator= (Camera &&)=delete
 
std::optional< struct xrt_poseGetWorldPose (timepoint_ns when_ns)
 
void DeferSampleToSlowThread (CameraSample &sample)
 
bool TryDevicePose (std::unique_ptr< Device > &device, CameraSample &sample, struct xrt_pose &Tcv_cam_world, struct xrt_pose &Tcv_world_device_prior, struct xrt_pose &Tcv_world_device_candidate)
 Fast matching based on prior pose.
 
bool TryDeviceBlobRecovery (std::unique_ptr< Device > &device, CameraSample &sample, struct xrt_pose &Tcv_cam_world, struct xrt_pose &Tcv_world_device_prior)
 
void SlowSampleProcess (CameraSample &sample)
 
bool FastSampleProcess (CameraSample &sample)
 Returns whether a slow search is needed.
 
void PushPose (std::unique_ptr< Device > &device, struct pose_metrics &score, struct xrt_pose &Tcv_cam_device, t_blob_observation &tbo, bool optimize)
 

Static Public Member Functions

static CameraGet (struct t_blob_sink *tbs)
 

Data Fields

struct t_blob_sink base
 
struct ConstellationTrackertracker
 The owner tracker, so we can retrieve it from the blob sink callback.
 
std::weak_ptr< CameraMosaicmosaic
 
struct t_camera_calibration calibration
 
struct camera_model model
 
struct os_thread_helper slow_processing_thread
 Does "slow" processing for this camera when fast recovery paths fail.
 
struct { 
 
   struct CameraSample   sample 
 
   struct correspondence_search *   cs 
 
slow_processing_thread_data 
 
struct os_thread_helper fast_processing_thread
 Does "fast" processing for this camera, trying to recover a pose quickly.
 
struct { 
 
   struct CameraSample   sample 
 
   struct correspondence_search *   cs 
 
fast_processing_thread_data 
 
os::Mutex processing_lock
 Locks all processing data.
 
struct { 
 
   struct xrt_pose   Txr_origin_cam 
 
   bool   has_concrete_pose 
 
locked_data 
 All data protected by the processing lock.
 

Member Function Documentation

◆ FastSampleProcess()

bool xrt::tracking::constellation::Camera::FastSampleProcess ( CameraSample sample)

Returns whether a slow search is needed.

References tracker, and TryDevicePose().

◆ TryDevicePose()

bool xrt::tracking::constellation::Camera::TryDevicePose ( std::unique_ptr< Device > &  device,
CameraSample sample,
struct xrt_pose Tcv_cam_world,
struct xrt_pose Tcv_world_device_prior,
struct xrt_pose Tcv_world_device_candidate 
)

Fast matching based on prior pose.

References POSE_MATCH_GOOD, and POSE_MATCH_LED_IDS.

Referenced by FastSampleProcess().

Field Documentation

◆ base

struct t_blob_sink xrt::tracking::constellation::Camera::base
Initial value:
= {
.push_blobs = constellation_tracker_camera_push_blobs,
.destroy = constellation_tracker_camera_destroy,
}

◆ fast_processing_thread

struct os_thread_helper xrt::tracking::constellation::Camera::fast_processing_thread

Does "fast" processing for this camera, trying to recover a pose quickly.

It's valid for this to happen at the same time as a slow process.

◆ [struct]

struct { ... } xrt::tracking::constellation::Camera::locked_data

All data protected by the processing lock.

◆ processing_lock

os::Mutex xrt::tracking::constellation::Camera::processing_lock
mutable

Locks all processing data.

◆ slow_processing_thread

struct os_thread_helper xrt::tracking::constellation::Camera::slow_processing_thread

Does "slow" processing for this camera when fast recovery paths fail.

◆ tracker

struct ConstellationTracker* xrt::tracking::constellation::Camera::tracker

The owner tracker, so we can retrieve it from the blob sink callback.

Referenced by FastSampleProcess().


The documentation for this struct was generated from the following files: