Monado OpenXR Runtime
hg_sync.hpp File Reference

Mercury main header! More...

#include "hg_interface.h"
#include "hg_debug_instrumentation.hpp"
#include "tracking/t_hand_tracking.h"
#include "tracking/t_camera_models.h"
#include "xrt/xrt_defines.h"
#include "xrt/xrt_frame.h"
#include "xrt/xrt_tracking.h"
#include "math/m_api.h"
#include "math/m_vec2.h"
#include "math/m_vec3.h"
#include "math/m_mathinclude.h"
#include "math/m_eigen_interop.hpp"
#include "util/u_frame_times_widget.h"
#include "util/u_logging.h"
#include "util/u_sink.h"
#include "util/u_template_historybuf.hpp"
#include "util/u_worker.h"
#include "util/u_trace_marker.h"
#include "util/u_debug.h"
#include "util/u_frame.h"
#include "util/u_var.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <opencv2/opencv.hpp>
#include <onnxruntime_c_api.h>
#include "kine_common.hpp"
#include "kine_lm/lm_interface.hpp"
Include dependency graph for hg_sync.hpp:

Go to the source code of this file.

Data Structures

struct  xrt::tracking::hand::mercury::Hand3D
 
struct  xrt::tracking::hand::mercury::projection_instructions
 
struct  xrt::tracking::hand::mercury::model_input_wrap
 
struct  xrt::tracking::hand::mercury::onnx_wrap
 
struct  xrt::tracking::hand::mercury::hand_region_of_interest
 
struct  xrt::tracking::hand::mercury::hand_detection_run_info
 
struct  xrt::tracking::hand::mercury::keypoint_estimation_run_info
 
struct  xrt::tracking::hand::mercury::ht_view
 
struct  xrt::tracking::hand::mercury::hand_size_refinement
 
struct  xrt::tracking::hand::mercury::model_output_visualizers
 
struct  xrt::tracking::hand::mercury::HandTracking
 Main class of Mercury hand tracking. More...
 

Macros

#define HG_TRACE(hgt, ...)   U_LOG_IFL_T(hgt->log_level, __VA_ARGS__)
 
#define HG_DEBUG(hgt, ...)   U_LOG_IFL_D(hgt->log_level, __VA_ARGS__)
 
#define HG_INFO(hgt, ...)   U_LOG_IFL_I(hgt->log_level, __VA_ARGS__)
 
#define HG_WARN(hgt, ...)   U_LOG_IFL_W(hgt->log_level, __VA_ARGS__)
 
#define HG_ERROR(hgt, ...)   U_LOG_IFL_E(hgt->log_level, __VA_ARGS__)
 

Typedefs

using xrt::tracking::hand::mercury::hand21_2d = std::array< vec2_5, 21 >
 

Enumerations

enum  ROIProvenance { HAND_DETECTION , POSE_PREDICTION }
 

Functions

static const cv::Scalar xrt::tracking::hand::mercury::RED (255, 30, 30)
 
static const cv::Scalar xrt::tracking::hand::mercury::YELLOW (255, 255, 0)
 
static const cv::Scalar xrt::tracking::hand::mercury::PINK (255, 0, 255)
 
static const cv::Scalar xrt::tracking::hand::mercury::GREEN (0, 255, 0)
 
void xrt::tracking::hand::mercury::init_hand_detection (HandTracking *hgt, onnx_wrap *wrap)
 
void xrt::tracking::hand::mercury::run_hand_detection (void *ptr)
 
void xrt::tracking::hand::mercury::init_keypoint_estimation (HandTracking *hgt, onnx_wrap *wrap)
 
void xrt::tracking::hand::mercury::run_keypoint_estimation (void *ptr)
 
void xrt::tracking::hand::mercury::release_onnx_wrap (onnx_wrap *wrap)
 
void xrt::tracking::hand::mercury::make_projection_instructions (t_camera_model_params &dist, bool flip_after, float expand_val, float twist, Eigen::Array< float, 3, 21 > &joints, projection_instructions &out_instructions, hand21_2d &out_hand)
 
void xrt::tracking::hand::mercury::make_projection_instructions_angular (xrt_vec3 direction_3d, bool flip_after, float angular_radius, float expand_val, float twist, projection_instructions &out_instructions)
 
void xrt::tracking::hand::mercury::stereographic_project_image (const t_camera_model_params &dist, const projection_instructions &instructions, cv::Mat &input_image, cv::Mat *debug_image, const cv::Scalar boundary_color, cv::Mat &out)
 

Variables

static constexpr uint16_t xrt::tracking::hand::mercury::kDetectionInputSize = 160
 
static constexpr uint16_t xrt::tracking::hand::mercury::kKeypointInputSize = 128
 
static constexpr uint16_t xrt::tracking::hand::mercury::kKeypointOutputHeatmapSize = 22
 
static constexpr uint16_t xrt::tracking::hand::mercury::kVisSpacerSize = 8
 
static const cv::Scalar xrt::tracking::hand::mercury::colors [2] = {YELLOW, RED}
 
constexpr enum xrt_hand_joint xrt::tracking::hand::mercury::joints_5x5_to_26 [5][5]
 

Detailed Description

Function Documentation

◆ make_projection_instructions()

void xrt::tracking::hand::mercury::make_projection_instructions ( t_camera_model_params dist,
bool  flip_after,
float  expand_val,
float  twist,
Eigen::Array< float, 3, 21 > &  joints,
projection_instructions out_instructions,
hand21_2d &  out_hand 
)
Todo:
optimize
Todo:
this is probably wrong, should probably be negated

References xrt::tracking::hand::mercury::make_projection_instructions().

Referenced by xrt::tracking::hand::mercury::make_projection_instructions().

◆ run_keypoint_estimation()

void xrt::tracking::hand::mercury::run_keypoint_estimation ( void *  ptr)