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 t_constellation_tracker_camera &camera_params, enum u_logging_level *log_level_ptr, size_t index)
 
 Camera (const Camera &)=delete
 
 Camera (Camera &&)=delete
 
Cameraoperator= (const Camera &)=delete
 
Cameraoperator= (Camera &&)=delete
 
std::optional< xrt_poseGetWorldPose (timepoint_ns when_ns)
 
void DeferSampleToSlowThread (CameraSample &sample)
 
bool TryDevicePose (std::unique_ptr< Device > &device, CameraSample &sample, xrt_pose &Tcv_cam_world, xrt_pose &Tcv_world_device_prior, xrt_pose &Tcv_world_device_candidate, xrt_pose &Tcv_cam_device_found)
 Fast matching based on prior pose.
 
bool TryDeviceBlobRecovery (std::unique_ptr< Device > &device, CameraSample &sample, xrt_pose &Tcv_cam_world, xrt_pose &Tcv_world_device_prior, xrt_pose &Tcv_cam_device_found)
 
void SlowSampleProcess (CameraSample &sample)
 
bool FastSampleProcess (CameraSample &sample)
 Returns whether a slow search is needed.
 
void PushPose (CameraSample &sample, std::unique_ptr< Device > &device, pose_metrics &score, xrt_pose &Tcv_cam_device, bool optimize)
 
void DebugScribbleSample (CameraSample &sample, bool fast)
 

Static Public Member Functions

static CameraGet (t_blob_sink *tbs)
 

Data Fields

t_blob_sink base
 
ConstellationTrackertracker
 The owner tracker, so we can retrieve it from the blob sink callback.
 
std::weak_ptr< CameraMosaicmosaic
 
t_camera_calibration calibration
 
camera_model model
 
CameraScribbleSettings scribble_settings {}
 
size_t index
 The index in the mosaic.
 
os_thread_helper slow_processing_thread
 Does "slow" processing for this camera when fast recovery paths fail.
 
struct { 
 
   std::optional< CameraSample >   sample {std::nullopt} 
 
   correspondence_search *   cs {nullptr} 
 
   u_sink_debug   debug_sink {} 
 
slow_processing_thread_data 
 
os_thread_helper fast_processing_thread
 Does "fast" processing for this camera, trying to recover a pose quickly.
 
struct { 
 
   std::optional< CameraSample >   sample {std::nullopt} 
 
   correspondence_search *   cs {nullptr} 
 
   u_sink_debug   debug_sink {} 
 
fast_processing_thread_data 
 
os::Mutex processing_lock
 Locks all processing data.
 
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,
xrt_pose Tcv_cam_world,
xrt_pose Tcv_world_device_prior,
xrt_pose Tcv_world_device_candidate,
xrt_pose Tcv_cam_device_found 
)

Fast matching based on prior pose.

References POSE_MATCH_GOOD, and POSE_MATCH_LED_IDS.

Referenced by FastSampleProcess().

Field Documentation

◆ base

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

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.

◆ index

size_t xrt::tracking::constellation::Camera::index

The index in the mosaic.

◆ [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

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

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

◆ tracker

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: