OSVR-Core
Public Member Functions | Public Attributes | List of all members
osvr::vbtracker::ConfigParams Struct Reference

General configuration parameters. More...

#include <ConfigParams.h>

Public Member Functions

 ConfigParams ()
 
 ConfigParams ()
 

Public Attributes

bool 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. More...
 
bool silent = false
 For optimization usage.
 
bool logRawBlobs = false
 For recording tuning data - whether we should record the raw blob data. More...
 
bool logUsableLeds = false
 For recording tuning data - whether we should record the data from just the usable LEDs each frame after they're associated. More...
 
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
 Should we have the tracking thread update the reporting vector for every (IMU) message, instead of waiting/buffering for a few milliseconds between updates?
 
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
 Max residual, in meters at the expected XY plane of the beacon in space, for a beacon before applying a variance penalty. More...
 
double initialBeaconError = 1e-7
 Initial beacon error for autocalibration (units: m^2). More...
 
double blobMoveThreshold = 3.5
 Maximum distance a blob can move, in multiples of its previous "keypoint diameter", and still be considered the same blob. More...
 
bool debug = false
 Whether to show the debug windows and debug messages.
 
int numThreads = 1
 How many threads to let OpenCV use. More...
 
double processNoiseAutocorrelation [6]
 This is the autocorrelation kernel of the process noise. More...
 
double 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. More...
 
double 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. More...
 
double 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. More...
 
double measurementVarianceScaleFactor = 1.5
 The measurement variance (units: m^2) is included in the plugin along with the coordinates of the beacons. More...
 
bool offsetToCentroid = false
 Whether the tracking algorithm internally adjusts beacon positions based on the centroid of the input beacon positions. More...
 
double manualBeaconOffset [3]
 Manual beacon offset (in m) - only really sensible if you only have one target, only used if offsetToCentroid is false. More...
 
bool 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. More...
 
double 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. More...
 
double 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. More...
 
double backPanelMeasurementError = BaseMeasurementVariance
 This used to be different than the other beacons, but now it's mostly the same. More...
 
double beaconProcessNoise = 1.e-19
 This is the process-model noise in the beacon-auto-calibration, in mm^2/s. More...
 
double highResidualVariancePenalty = 7.513691210865344
 This is the multiplicative penalty applied to the variance of measurements with a "bad" residual.
 
bool 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. More...
 
float boundingBoxFilterRatio = 5.f / 4.f
 This should be the ratio of lengths of sides that you'll permit to be filtered in. More...
 
double 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. More...
 
bool shouldSkipBrightLeds = false
 Should we attempt to skip bright-mode LEDs? The alternative is to just give them slightly higher variance. More...
 
double 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. More...
 
bool 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. More...
 
bool extraVerbose = false
 Extra verbose developer debugging messages. More...
 
std::string calibrationFile = ""
 If non-empty, the file to load (or save to) for calibration data. More...
 
IMUInputParams imu
 IMU input-related parameters.
 
double cameraPosition [3]
 x, y, z, with y up, all in meters.
 
bool cameraIsForward = true
 Whether we should adjust transforms to assume the camera looks along the YZ plane in the +Z direction. More...
 
bool 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... More...
 
std::int32_t cameraMicrosecondsOffset = -27000
 Time offset for the camera timestamp, in microseconds. More...
 
bool 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. More...
 
double softResetPositionVarianceScale = 1.e-1
 Soft reset data incorporation parameter: Positional variance scale - multiplied by the square of the distance from the camera. More...
 
double softResetOrientationVariance = 1.e0
 Soft reset data incorporation parameter: Orientation variance.
 

Detailed Description

General configuration parameters.

Constructor & Destructor Documentation

§ ConfigParams() [1/2]

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.

§ ConfigParams() [2/2]

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.

Member Data Documentation

§ angularVelocityDecayCoefficient

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]

§ backPanelMeasurementError

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

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

§ beaconProcessNoise

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.

§ blobMoveThreshold

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.

§ blobsKeepIdentity

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.

§ boundingBoxFilterRatio

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.

§ brightLedVariancePenalty

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.

§ calibrationFile

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.

§ cameraIsForward

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

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

§ cameraMicrosecondsOffset

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

Time offset for the camera timestamp, in microseconds.

Default is measured on Windows 10 version 1511.

§ extraVerbose

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)

§ headCircumference

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.

§ headToFrontBeaconOriginDistance

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.

§ includeRearPanel

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.

§ initialBeaconError

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

Initial beacon error for autocalibration (units: m^2).

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.

§ linearVelocityDecayCoefficient

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]

§ logRawBlobs

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

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

§ logUsableLeds

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.

§ manualBeaconOffset

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.

§ maxResidual

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.

§ maxZComponent

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.

§ measurementVarianceScaleFactor

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.

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.

§ noBeaconLinearVelocityDecayCoefficient

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]

§ numThreads

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)

§ offsetToCentroid

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

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

§ performingOptimization

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.

§ permitKalman

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...

§ processNoiseAutocorrelation

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.

§ shouldSkipBrightLeds

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

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

§ softResetPositionVarianceScale

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.

§ softResets

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.

§ streamBeaconDebugInfo

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.


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