OSVR-Core
|
Public Member Functions | |
bool | operator() (CameraParameters const &camParams, LedPtrList const &leds, BeaconStateVec const &beacons, std::vector< BeaconData > &beaconDebug, Eigen::Vector3d &outXlate, Eigen::Quaterniond &outQuat, int skipBrightsCutoff=-1, std::size_t iterations=5) |
Perform RANSAC-based pose estimation. More... | |
bool | operator() (EstimatorInOutParams const &p, LedPtrList const &leds) |
Perform RANSAC-based pose estimation and use it to update a body state (state vector and error covariance) More... | |
bool osvr::vbtracker::RANSACPoseEstimator::operator() | ( | CameraParameters const & | camParams, |
LedPtrList const & | leds, | ||
BeaconStateVec const & | beacons, | ||
std::vector< BeaconData > & | beaconDebug, | ||
Eigen::Vector3d & | outXlate, | ||
Eigen::Quaterniond & | outQuat, | ||
int | skipBrightsCutoff = -1 , |
||
std::size_t | iterations = 5 |
||
) |
Perform RANSAC-based pose estimation.
[out] | outXlate | translation output parameter |
[out] | outQuat | rotation output parameter |
skipBrightsCutoff | If positive, the number of non-bright LEDs seen that will trigger us to skip using bright LEDs in pose estimation. |
Effectively invert the image points here so we get the output of a coordinate system we want.
Make a vector of the inlier beacon IDs.
Now, we will sort that vector of inlier beacon IDs so we can rapidly binary search it to flag the LEDs we used.
Get to Eigen via OpenCV's Affine transform class.
bool osvr::vbtracker::RANSACPoseEstimator::operator() | ( | EstimatorInOutParams const & | p, |
LedPtrList const & | leds | ||
) |
Perform RANSAC-based pose estimation and use it to update a body state (state vector and error covariance)
[out] | state | Tracked body state that will be updated if a pose was estimated |
Call the main pose estimation to get the vector and quat.
OK, so if we're here, estimation succeeded and we have valid data in xlate and quat.
Zero things we can't measure.