Skip to content

Releases: strawlab/strand-braid

0.11.1

04 Dec 11:05
Compare
Choose a tag to compare

Added

  • Update build for Ubuntu 20.04 .deb to specify the exact Pylon version
    dependency to the package manager.

Changed

  • Update build for Ubuntu 20.04 .deb to use Pylon 6.2.0.

Fixed

  • Restore the checkerboard calibration to the web browser UI. (This was
    inadvertently disabled in a code reorganization.)

0.11.0

02 Dec 08:10
Compare
Choose a tag to compare

Added

  • The software is released now as a single .deb package for Ubuntu 20.04 which
    includes the main applications (Braid and Strand Camera) in addition to
    numerous smaller utility programs.

  • New program braid-process-video to process multiple simultaneously recorded
    MKV and FMF videos. Optionally, when a simultaneously recorded .braidz file is
    available, the data in the .braidz is used to directly indicated temporally
    synchronized frames. Without the .braidz file, an algorithm attempts to match
    frames acquired exactly synchronously, but the algorithm is imperfect.

  • MKV videos now save timestamps with microsecond precision. (Previously was
    millisecond precision.)

  • Support for "remote cameras" in Braid. A remote camera can be used to connect
    cameras on separate computers over the network to an instance of Braid. One or
    more instances of Strand Camera can thus run on computers other than the
    computer on which Braid is running.

  • Implement loading all camera node map settings from a file. For Braid, this is
    specified in the [[cameras]] section with the camera_settings_filename
    key. For Strand Cam, set this with the --camera-settings-filename
    command-line argument.

  • Braid stores the camera settings for each camera determined with Strand Camera
    was started into the newly created cam_settings directory inside the
    .braidz file.

  • Braid stores the feature detection settings for each camera determined with
    Strand Camera was started into the newly created feature_detect_settings
    directory inside the .braidz file.

  • On linux, Basler Pylon backend checks for resource limits for USB memory
    (/sys/module/usbcore/parameters/usbfs_memory_mb) and file descriptors
    (ulimit) warns if they are likely too low and suggests how to increase
    limits.

  • MKV videos now save the camera name as metadata in the segment title field.

  • MKV, FMF, and uFMF videos have the camera name in the filename when saved with
    Braid.

  • When saving MKV videos, automatically trim pixels to fit divisible-by-two
    requirements for VPX video encoders.

  • Backport to Pylon 5 for Basler cameras. This is not enabled by default but can
    be useful to debug issues dependent on driver version.

  • Validate that triggerbox works in Windows.

  • April Tag detection works in Windows.

  • For debugging, enable ability to capture raw feature detections directly from
    Strand Cam in Braid by the new configuration parameter
    packet_capture_dump_fname which specifies a filename into which the data is
    stored.

  • Basler cameras automatically set the stream grabber MaxTransferSize
    parameter to its maximum possible value. This can be disabled by setting the
    DISABLE_SET_MAX_TRANSFER_SIZE environment variable.

Fixed

  • Fixed computation of triggerbox pulse time and consequently estimated latency.
    There were two problems in the previous implementation, and both are now
    fixed. First, the triggerbox firmware has a bug in which two pulses are
    counted before electrical pulses were actually, physically emitted from the
    device. Secondly, the braid-triggerbox crate prior to 0.2.1 mis-calculated the
    estimated time at which the trigger pulse counter was read.

  • Fixed segmentation fault that sometimes happened on program exit.

Changed

  • Removed runtime compatibility with old flydra v1 camera nodes and mainbrain.
    This had not been tested in many releases and likely didn't work anyway. This
    required some custom serialization and deserialization code, which has now
    been removed. (Braid communication between Strand Cam and the mainbrain is
    currently done with CBOR encoded data.)

0.10.1

27 Jul 06:22
Compare
Choose a tag to compare

Added

  • Camera calibration for Braid can now be in the pymvg .json file format (or
    continue to remain in the flydra .xml file format).

0.10.0

02 Jul 14:31
Compare
Choose a tag to compare

Added

  • Cameras automatically synchronize in braid.

  • Braidz parsing is done by a single implementation in the braidz-parsing
    crate. This transparently handles .braidz files or .braid directories as
    well as uncompressed .csv files or compressed .csv.gz files.

  • In strand-cam a camera calibration can be loaded with the
    --camera-xml-calibration or --camera-pymvg-calibration command-line
    arguments.

  • Use of the human-panic crate to enable better error reporting from users.

Changed

  • For the strand-cam-offline-kalmanize program, the --output (or -o)
    command line argument now MUST be a filename ending with .braidz.
    (Previously, it was a .braid directory name which would implicitly get
    converted to the corresponding .braidz file. For example, foo.braid was
    given on the command line and foo.braidz was saved. Now, use foo.braidz.)

  • The Kalman filter implementation used for tracking in Braid now uses the
    Joseph form method to calculate covariance. This improves robustness. See
    #3.

  • Error handling is now performed by the anyhow and thiserror crates in
    place of the failure crate.

  • Asynchronous task handling was updated to tokio 1.0 from 0.2.

Fixed

  • When saving data with braid, the textlog and experiment info files are saved
    uncompressed and are flushed to disk after initial writing. Therefore, less
    data is stored in memory as the program runs. This works around a bug in
    which, if the program crashes due to a panic, some data scheduled to be
    written to a .gz file is lost.

0.9.1

22 Jun 11:26
Compare
Choose a tag to compare

Fixed

  • Braid zip archive files (.braidz files) containing large files could become
    corrupt (#5). This was fixed.

0.9.0

04 Jan 12:23
Compare
Choose a tag to compare

Added

  • When braid is run without a hardware trigger box listed in the .toml config
    file, it will allow running in a "fake synchronized" mode in which most
    aspects of a triggerbox are emulated. If precise synchronization is not
    necessary, this should enable tracking without synchronization hardware. It
    also opens the door to using hardware which cannot be precisely synchronized
    such as inexpensive cameras without the ability to have an external trigger.

Fixed

  • Checkerboard calibration in strand-cam is much faster and uses sub-pixel
    corner localization. It should behave identically to the calibration in ROS
    camera_calibration.calibrator.MonoCalibrator now.

Changed

  • The log output format has changed slightly as we are now using the
    tracing library for logging.
  • Migrate some error handling to the thiserror and anyhow crates (from the
    failure crate). To continue to provide tracebacks when the RUST_BACKTRACE
    environment variable is set, binaries for release are build with rust nightly
    from 2021-01-03.
  • Several of the internal crates have been individually licensed under
    Apache-2.0/MIT or similar licenses.