Releases: strawlab/strand-braid
0.11.1
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
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 thecamera_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 createdcam_settings
directory inside the
.braidz
file. -
Braid stores the feature detection settings for each camera determined with
Strand Camera was started into the newly createdfeature_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
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
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 andfoo.braidz
was saved. Now, usefoo.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
andthiserror
crates in
place of thefailure
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
0.9.0
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
andanyhow
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.