Monado OpenXR Runtime
|
Interface for Levenberg-Marquardt kinematic optimizer. More...
Go to the source code of this file.
Functions | |
void | xrt::tracking::hand::mercury::lm::optimizer_create (xrt_pose left_in_right, bool is_right, u_logging_level log_level, KinematicHandLM **out_kinematic_hand) |
void | xrt::tracking::hand::mercury::lm::optimizer_run (KinematicHandLM *hand, one_frame_input &observation, bool hand_was_untracked_last_frame, float smoothing_factor, bool optimize_hand_size, float target_hand_size, float hand_size_err_mul, float amt_use_depth, xrt_hand_joint_set &out_hand, float &out_hand_size, float &out_reprojection_error) |
The main tracking code calls this function with some 2D(ish) camera observations of the hand, and this function calculates a good 3D hand pose and writes it to out_viz_hand. More... | |
void | xrt::tracking::hand::mercury::lm::optimizer_destroy (KinematicHandLM **hand) |
Interface for Levenberg-Marquardt kinematic optimizer.
void xrt::tracking::hand::mercury::lm::optimizer_run | ( | KinematicHandLM * | hand, |
one_frame_input & | observation, | ||
bool | hand_was_untracked_last_frame, | ||
float | smoothing_factor, | ||
bool | optimize_hand_size, | ||
float | target_hand_size, | ||
float | hand_size_err_mul, | ||
float | amt_use_depth, | ||
xrt_hand_joint_set & | out_hand, | ||
float & | out_hand_size, | ||
float & | out_reprojection_error | ||
) |
The main tracking code calls this function with some 2D(ish) camera observations of the hand, and this function calculates a good 3D hand pose and writes it to out_viz_hand.
observation | The observation of the hand joints. Warning, this function will mutate the observation unpredictably. Keep a copy of it if you need it after. | |
hand_was_untracked_last_frame | If the hand was untracked last frame (it was out of view, obscured, ML models failed, etc.) - if it was, we don't want to enforce temporal consistency because we have no good previous hand state with which to do that. | |
optimize_hand_size | Whether or not it's allowed to tweak the hand size - when we're calibrating the user's hand size, we want to do that; afterwards we don't want to waste the compute. | |
target_hand_size | The hand size we want it to get close to | |
hand_size_err_mul | A multiplier to help determine how close it has to get to that hand size | |
[out] | out_hand | The xrt_hand_joint_set to output its result to |
[out] | out_hand_size | The hand size it ended up at |
[out] | out_reprojection_error | The reprojection error it ended up at |
smoothing_factor | - Unused if this is the first frame |
References xrt::tracking::hand::mercury::lm::optimizer_run().
Referenced by xrt::tracking::hand::mercury::lm::optimizer_run().