OSVR-Core
|
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. | |
General configuration parameters.
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.
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]
double osvr::vbtracker::ConfigParams::backPanelMeasurementError = BaseMeasurementVariance |
This used to be different than the other beacons, but now it's mostly the same.
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.
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.
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.
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.
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.
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.
bool osvr::vbtracker::ConfigParams::cameraIsForward = true |
Whether we should adjust transforms to assume the camera looks along the YZ plane in the +Z direction.
std::int32_t osvr::vbtracker::ConfigParams::cameraMicrosecondsOffset = -27000 |
Time offset for the camera timestamp, in microseconds.
Default is measured on Windows 10 version 1511.
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)
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.
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.
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.
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.
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]
bool osvr::vbtracker::ConfigParams::logRawBlobs = false |
For recording tuning data - whether we should record the raw blob data.
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.
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.
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.
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.
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.
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]
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)
bool osvr::vbtracker::ConfigParams::offsetToCentroid = false |
Whether the tracking algorithm internally adjusts beacon positions based on the centroid of the input beacon positions.
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.
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...
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.
bool osvr::vbtracker::ConfigParams::shouldSkipBrightLeds = false |
Should we attempt to skip bright-mode LEDs? The alternative is to just give them slightly higher variance.
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.
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.
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.