Skip to content

Mask interfering LEDs

Latest
Compare
Choose a tag to compare
@rpavlik rpavlik released this 05 Aug 20:59
· 6 commits to master since this release

This release contains a single change over the (just a few artificial moments earlier) previous one: several LEDs that are close to other LEDs and have bright pulses at the same time as their neighbors have been "masked out" - disabled in firmware so they do not turn on. This improves tracking reliability: when two LEDs are bright and close to each other, they often form a single blob on camera, which disrupts the continuous tracking of one or both LEDs, introducing a delay before they are fully re-identified, and in some cases making some LEDs almost impossible to identify in some circumstances. Additionally, this improves tracking range by increasing the distance from the camera achievable before LEDs blend together on camera. The masked LEDs were chosen by an algorithm operating on the patterns and the LED positions together with a cost function (source code is in this repository), then tested and found to provide improved performance.

disabled in v20160805 1

This does mean that when using this firmware with the existing video tracking plugin and calibration tool, some beacons will appear to be "missing" - this is expected and harmless (as noted above, it actually is better than harmless, there are still more than enough beacons to track).

Of course, this firmware does contain the improvements listed for the v20160805.0 release over the shipped/stock firmware as well.


Binary configuration/identification data:

[Sensics IR_LED_DRV (PRODUCTION) Built Aug  5 2016 15:29:27.Delay:5500,Bright:150,Interval:100,Dim:30,Lockout:1000]

Input data producing this mask:
/// 1-based indices WRT the tracking software of beacons we'd like to disable.
static const auto DISABLED_TARGET0_BEACONS = {33, 13, 18, 32, 34, 5};

/// 1-based indices WRT the tracking software of the beacons on the rear that never light up anyway.
static const auto DISABLED_TARGET1_BEACONS = {1, 4};

Masked LEDs determined by BrightNeighbors using distance-cost method, 7 passes (6 LEDs).

About the downloads

All attached binaries include a single, unified Intel hex file for the firmware built for an STM8S003K3 microcontroller (as found on the HDK IR board) with the HDK patterns, containing both the program flash and the EEPROM data: this can be split using a tool like SCat (from srecord tools), or your programming tool may be able to handle it as-is. Other files include the build and config identifier file and the mask description file.

Both the zip and exe (self-extracting 7z) marked "bundle" contain software and a single-step script to split and program the firmware onto the microcontroller. See https://github.com/OSVR/OSVR-Docs/blob/master/Utilities/HDKUpgradeIRBoardFirmware.md for more instructions.