Skip to content

Components

jdavidberger edited this page Aug 16, 2020 · 1 revision

Lists of components

Component Type Component Description Authors
Poser poser_charlesslow.c A very slow, but exhaustive poser system. Calibration only. @cnlohr
Poser poser_daveortho.c A very fast system using orthograpic view and affine transformations. Calibration only (for now) @ultramn
Poser poser_dummy.c Template for posers @cnlohr
Poser poser_octavioradii.c A potentially very fast poser that works by finding the best fit of the distances from the lighthouse to each sensor that matches the known distances between sensors, given the known angles of a lighthouse sweep. Incomplete- distances appear to be found correctly, but more work needed to turn this into a pose. Based on this python code. @mwturvey and @octavio2895
Poser poser_turveytori.c A moderately fast, fairly high precision poser that works by determine the angle at the lighthouse between many sets of two sensors. Using the inscirbed angle theorom, each set defines a torus of possible locations of the lighthouse. Multiple sets define multiple tori, and this poser finds most likely location of the lighthouse using least-squares distance. Best suited for calibration, but is can be used for real-time tracking on a powerful system. @mwturvey
Poser poser_epnp.c Reasonably fast and accurate calibration and tracker that uses the EPNP algorithm to solve the perspective and points problem. Suitable for fast tracking, but does best with >5-6 sensor readings. @jdavidberger
Poser poser_barycentric_svd.c Generalizes the barycentric / svd approach used with EPNP; but allows for different plane equations to support LH2 @jdavidberger
Poser poser_sba.c Reasonably fast and accurate calibration and tracker but is dependent on a 'seed' poser to give it an initial estimate. This then performs bundle adjustment to minimize reprojection error given both ligthhouse readings. This has the benefit of greatly increasing accuracy by incorporating all the light data that is available. Set 'SBASeedPoser' config option to specify the seed poser; default is EPNP. @jdavidberger
Poser poser_mpfit.c (default) Performs Levenberg-Marquardt using MPFIT. Since SBA does basically the same thing, this poser gets nearly identical results to SBA. Overall it is a tad slower than SBA since SBA uses optimized lapack functions to solve Ax=b, but MPFIT has the distinction of not needing lapack at all since it's Ax=b solver is a minimal internal version. It also requires a seed poser. @jdavidberger
Disambiguator survive_charlesbiguator.c The old disambiguator - very fast, but slightly buggy. @cnlohr
Disambiguator survive_turveybiguator.c More complicated but much more robust disambiguator @mwturvey
Disambiguator survive_statebased_disambiguator.c (default) A fast disambiguator that was times the state shifts between pulses. Experimental. Made to allow tracking very close to the lighthouse @jdavidberger
Dismabiguator superceded disambiguator A more sophisticated disambiguator, development abandoned. Removed from tree. @jpicht
Driver survive_vive.c Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker @cnlohr and @mwturvey
OOTX Decoder ootx_decoder.c The system that takes the pulse-codes from the sync pulses from the lighthouses and get OOTX Data @axlecrusher

Component Pluggability Matrix

Component Type Pluggability method
Driver Dynamically loadable runtime, can co-exist with other drivers.
Poser Selectable by configuration at runtime
Disambiguator Selectable by configuration at runtime
OOTX Decoder Not Pluggable
Clone this wiki locally