OSVR Framework (Internal Development Docs)  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
osvr::vbtracker::ConfigParams Struct Reference

General configuration parameters. More...

#include </home/jenkins/root/workspace/OSVR-Core-Docs/plugins/unifiedvideoinertialtracker/ConfigParams.h>

Public Member Functions

 ConfigParams ()
 
 ConfigParams ()
 

Public Attributes

bool performingOptimization = false
 
bool silent = false
 For optimization usage.
 
bool logRawBlobs = false
 
bool logUsableLeds = false
 
TuningParams tuning
 
BlobParams blobParams
 Parameters specific to the blob-detection step of the algorithm.
 
EdgeHoleParams extractParams
 Parameters specific to the edge hole based LED extraction algorithm.
 
BuiltInTargetSets targetSet = BuiltInTargetSets::HDK1xChassis
 When using hard-coded target sets, which one to use.
 
bool continuousReporting = true
 
bool highGain = true
 Should we open the camera in high-gain mode?
 
double additionalPrediction = 0.
 Seconds beyond the current time to predict, using the Kalman state.
 
double maxResidual = 0.03631354168383816
 
double initialBeaconError = 1e-7
 
double blobMoveThreshold = 3.5
 
bool debug = false
 Whether to show the debug windows and debug messages.
 
int numThreads = 1
 
double processNoiseAutocorrelation [6]
 
double linearVelocityDecayCoefficient = 0.9040551503451977
 
double angularVelocityDecayCoefficient = 0.8945437897688864
 
double noBeaconLinearVelocityDecayCoefficient = 0.005878868009089861
 
double measurementVarianceScaleFactor = 1.5
 
bool offsetToCentroid = false
 
double manualBeaconOffset [3]
 
bool includeRearPanel = true
 
double headCircumference = 55.75
 
double headToFrontBeaconOriginDistance = 0
 
double backPanelMeasurementError = BaseMeasurementVariance
 
double beaconProcessNoise = 1.e-19
 
double highResidualVariancePenalty = 7.513691210865344
 
bool streamBeaconDebugInfo = false
 
float boundingBoxFilterRatio = 5.f / 4.f
 
double maxZComponent = -0.3
 
bool shouldSkipBrightLeds = false
 
double brightLedVariancePenalty = 28.32749811268542
 
bool blobsKeepIdentity = false
 
bool extraVerbose = false
 Extra verbose developer debugging messages. More...
 
std::string calibrationFile = ""
 
IMUInputParams imu
 IMU input-related parameters.
 
double cameraPosition [3]
 x, y, z, with y up, all in meters.
 
bool cameraIsForward = true
 
bool permitKalman = true
 
std::int32_t cameraMicrosecondsOffset = -27000
 
bool softResets = false
 
double softResetPositionVarianceScale = 1.e-1
 
double softResetOrientationVariance = 1.e0
 Soft reset data incorporation parameter: Orientation variance.
 

Detailed Description

General configuration parameters.

Definition at line 82 of file ConfigParams.h.

Constructor & Destructor Documentation

osvr::vbtracker::ConfigParams::ConfigParams ( )

If you use manual beacon offset (aka turn off offsetToCentroid), this is a good default since it's the best beacon offset for the HDK we've found so far.

Todo:
this is just a guess of how high my camera is.
Todo:
this is just an estimate of how to not break most apps.

Definition at line 36 of file ConfigParams.cpp.

osvr::vbtracker::ConfigParams::ConfigParams ( )
inline

If you use manual beacon offset (aka turn off offsetToCentroid), this is a good default since it's the best beacon offset for the HDK we've found so far - centroid of front beacons, with only z component retained.

Definition at line 212 of file Types.h.

Member Data Documentation

bool osvr::vbtracker::ConfigParams::performingOptimization = false

Not intended to be manually configurable - enabled when doing things like running an optimization algorithm so some things like a debug view might need to change.

Definition at line 86 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::logRawBlobs = false

For recording tuning data - whether we should record the raw blob data.

Definition at line 93 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::logUsableLeds = false

For recording tuning data - whether we should record the data from just the usable LEDs each frame after they're associated.

Definition at line 97 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::continuousReporting = true

Should we have the tracking thread update the reporting vector for every (IMU) message, instead of waiting/buffering for a few milliseconds between updates?

Definition at line 113 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::maxResidual = 0.03631354168383816

Max residual, in meters at the expected XY plane of the beacon in space, for a beacon before applying a variance penalty.

Max residual (pixel units) for a beacon before applying a variance penalty.

Definition at line 123 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::initialBeaconError = 1e-7

Initial beacon error for autocalibration (units: m^2). 0 effectively turns off beacon auto-calib. This is a variance number, so std deviation squared, but it's pretty likely to be between 0 and 1, so the variance will be smaller than the standard deviation.

Initial beacon error for autocalibration (units: mm^2). 0 effectively turns off beacon auto-calib. This is a variance number, so std deviation squared, but it's pretty likely to be between 0 and 1, so the variance will be smaller than the standard deviation.

Definition at line 130 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::blobMoveThreshold = 3.5

Maximum distance a blob can move, in multiples of its previous "keypoint diameter", and still be considered the same blob.

Definition at line 134 of file ConfigParams.h.

int osvr::vbtracker::ConfigParams::numThreads = 1

How many threads to let OpenCV use. Set to 0 or less to let OpenCV decide (that is, not set an explicit preference)

Definition at line 141 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::processNoiseAutocorrelation

This is the autocorrelation kernel of the process noise. The first three elements correspond to position, the second three to incremental rotation.

Definition at line 146 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::linearVelocityDecayCoefficient = 0.9040551503451977

The value used in exponential decay of linear velocity: it's the proportion of that velocity remaining at the end of 1 second. Thus, smaller = faster decay/higher damping. In range [0, 1]

Definition at line 151 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::angularVelocityDecayCoefficient = 0.8945437897688864

The value used in exponential decay of angular velocity: it's the proportion of that velocity remaining at the end of 1 second. Thus, smaller = faster decay/higher damping. In range [0, 1]

Definition at line 156 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::noBeaconLinearVelocityDecayCoefficient = 0.005878868009089861

The value used in an additional exponential decay of linear velocity when we've lost sight of all beacons, to quickly attenuate coasting. it's the proportion of that velocity remaining at the end of 1 second. Thus, smaller = faster decay/higher damping. In range [0, 1]

Definition at line 162 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::measurementVarianceScaleFactor = 1.5

The measurement variance (units: m^2) is included in the plugin along with the coordinates of the beacons. Some beacons are observed with higher variance than others, due to known difficulties in tracking them, etc. However, for testing you may fine-tine the measurement variances globally by scaling them here.

The measurement variance (units: mm^2) is included in the plugin along with the coordinates of the beacons. Some beacons are observed with higher variance than others, due to known difficulties in tracking them, etc. However, for testing you may fine-tine the measurement variances globally by scaling them here.

Definition at line 169 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::offsetToCentroid = false

Whether the tracking algorithm internally adjusts beacon positions based on the centroid of the input beacon positions.

Definition at line 173 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::manualBeaconOffset

Manual beacon offset (in m) - only really sensible if you only have one target, only used if offsetToCentroid is false.

Manual beacon offset (in mm) - only really sensible if you only have one target, only used if offsetToCentroid is false.

Definition at line 177 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::includeRearPanel = true

If true, this will replace the two sensors with just a single one, including the beacons at the back of the head "rigidly" as a part of it. If true, recommend offsetToCentroid = false, and manualBeaconOffset to be 0, 0, -75.

Definition at line 183 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::headCircumference = 55.75

Head circumference at the head strap, in cm - 55.75 is our estimate for an average based on some hat sizing guidelines. Only matters if includeRearPanel is true.

Definition at line 188 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::headToFrontBeaconOriginDistance = 0

This is the distance fron the front of the head to the origin of the front sensor coordinate system in the Z axis, in mm. This is a rough estimate - the origin of the coordinate system is roughly the flat part of the hard plastic.

Definition at line 194 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::backPanelMeasurementError = BaseMeasurementVariance

This used to be different than the other beacons, but now it's mostly the same.

Definition at line 198 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::beaconProcessNoise = 1.e-19

This is the process-model noise in the beacon-auto-calibration, in mm^2/s. Not fully accurate, since it only gets applied when a beacon gets used for a measurement, but it should be enough to keep beacons from converging in a bad local minimum.

Definition at line 204 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::highResidualVariancePenalty = 7.513691210865344

This is the multiplicative penalty applied to the variance of measurements with a "bad" residual

Definition at line 208 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::streamBeaconDebugInfo = false

When true, will stream debug info (variance, pixel measurement, pixel residual) on up to the first 34 beacons of your first sensor as analogs.

Definition at line 213 of file ConfigParams.h.

float osvr::vbtracker::ConfigParams::boundingBoxFilterRatio = 5.f / 4.f

This should be the ratio of lengths of sides that you'll permit to be filtered in. Larger side first, please.

Not currently being used.

Definition at line 219 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::maxZComponent = -0.3

This should be a negative number - it's the largest the z component of the camera-space LED emission vector is permitted to be and still be used in estimation. acos(this number) is the maximum angle away from pointing at the camera that we'll accept an LED pointing.

Definition at line 225 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::shouldSkipBrightLeds = false

Should we attempt to skip bright-mode LEDs? The alternative is to just give them slightly higher variance.

Definition at line 229 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::brightLedVariancePenalty = 28.32749811268542

If shouldSkipBrightLeds is false, we use this value as a factor to increase the measurement variance of bright LEDs, to account for the fact that they are less accurate because they tend to refract through surrounding materials, etc.

Definition at line 235 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::blobsKeepIdentity = false

If this option is set to true, then while some of the pattern identifier is run each frame, an "early-out" will be taken if the blob/LED already has a valid (non-negative) ID assigned to it. This can help keep IDs on hard to identify blobs, but it can also persist errors longer. That's why it's an option.

Defaulting to off because it adds some jitter for some reason.

Definition at line 244 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::extraVerbose = false

Extra verbose developer debugging messages.

Extra verbose developer debugging messages (right now just "hey, you can't possibly be that beacon, I shouldn't be able to see you" messages)

Definition at line 247 of file ConfigParams.h.

std::string osvr::vbtracker::ConfigParams::calibrationFile = ""

If non-empty, the file to load (or save to) for calibration data. Only make sense for a single target.

Definition at line 251 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::cameraIsForward = true

Whether we should adjust transforms to assume the camera looks along the YZ plane in the +Z direction.

Definition at line 261 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::permitKalman = true

Should we permit the whole system to enter Kalman mode? Not doing so is usually a bad idea, unless you're doing something special like development on the tracker itself...

Definition at line 266 of file ConfigParams.h.

std::int32_t osvr::vbtracker::ConfigParams::cameraMicrosecondsOffset = -27000

Time offset for the camera timestamp, in microseconds. Default is measured on Windows 10 version 1511.

Definition at line 270 of file ConfigParams.h.

bool osvr::vbtracker::ConfigParams::softResets = false

Should we permit a reset to be "soft" (blended by a Kalman) rather than a hard state setting, in certain conditions? Only available in the Unified tracker.

Definition at line 275 of file ConfigParams.h.

double osvr::vbtracker::ConfigParams::softResetPositionVarianceScale = 1.e-1

Soft reset data incorporation parameter: Positional variance scale - multiplied by the square of the distance from the camera.

Definition at line 279 of file ConfigParams.h.


The documentation for this struct was generated from the following files: