Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | BSD-2 |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-event-camera/libcaer.git |
VCS Type | git |
VCS Version | ros_event_camera |
Last Updated | 2024-01-08 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
library for event based sensors
Additional Links
No additional links.
Maintainers
- Bernd Pfrommer
Authors
No additional authors.
WINDOWS BUILD INSTRUCTIONS
==========================
We support building libcaer on the Windows platform by using the MinGW32/64 compilers
and the MSYS2 environment. The result is a static and a dynamic DLL, as well as the
appropriate header files, so that libcaer can be used in MinGW itself.
Visual Studio and the MSVC compiler are not supported out-of-the-box right now, to use
a DLL compiled by MinGW additional steps are necessary: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
Following are detailed step-by-step instructions to install the required
components and get everything building, we use MinGW64 here for the
64-bit Windows platform, if you want to build for 32-bit Windows, just replace all
mentions of 'x86_64' with 'i686'. Whenever you want to install a package, use
the MSYS2 shell, while to build code, use the MinGW32/64 shells!
1) Get MSYS2 from https://msys2.github.io/ and download the appropriate installer.
Follow the instructions to install the system and update its packages. During the
system package upgrade, ignore any heap mismatch errors, and follow what the last
warning tells you to do (close the shell). The base system upgrade seems to break
the Start Menu shortcuts, so from now on start MSYS2 by going to its directory
'C:\msys64\' and double-clicking on 'msys2_shell.cmd'.
2) Install MinGW GCC: pacman -S mingw-w64-x86_64-gcc
3) Install Make/CMake: pacman -S make mingw-w64-x86_64-cmake
4) Install pkg-config: pacman -S mingw-w64-x86_64-pkg-config
5) Install libusb: pacman -S mingw-w64-x86_64-libusb
6) Place the libcaer source in a location easily accessible to MSYS2. We usually
put the source code into 'C:\msys64\home\libcaer\' and use TortoiseGit
(https://tortoisegit.org/) or git from the MSYS2 shell (pacman -S git) to get it.
7) Switch to the MinGW build shell, double-click on 'mingw64.exe' in 'C:\msys64\'.
8) Switch to the libcaer checkout directory: cd /home/libcaer/
9) Configure, run CMake: cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw64 .
10) Build, run Make: make
11) Install: make install
Congratulations, you now have a working libcaer on Windows! The output from that
last 'make install' will have told you exactly where all the DLLs and header
files are located on the file-system. You can now try building one of the
examples in the examples/ directory to verify functionality.
CHANGELOG
Release 3.3.15 - 07.03.2023
BUG FIXES
- eDVS: fix device discovery. Thanks to Benjamin Ward-Cherrier.
- Windows: control MSVC build with BUILD_CONFIG_VCPKG flag.
- Devices: fix compiler warnings.
- Removed obsolete DAVIS_RPI device.
Release 3.3.14 - 25.03.2022
NEW FEATURES
- Full native MSVC/Windows build support.
BUG FIXES
- davis_cvgui example: fix incorrect biasing and APS frame settings.
- USB: fix firmware version check for DVXplorer Mini.
Release 3.3.13 - 25.02.2022
NEW FEATURES
- DVXplorer (Mini): add control of readout timing parameters, readout restart.
Release 3.3.12 - 12.11.2021
BUG FIXES
- DVXplorer Mini: fix inverted polarity.
- dvx_bw_test example: fix length of time interval for
bandwidth estimation.
- Fedora/Ubuntu: fix packaging, use at least GCC-10 to compile.
Release 3.3.11 - 16.07.2021
NEW FEATURES
- Native MacOS ARM (M1) builds, Big Sur compatibility.
- Ubuntu 21.04 Hirsute support.
- Fedora 34 support.
- Ubuntu 16.04 Xenial is no longer supported!
- Cameras: added support for new DVXplorer Mini camera model.
Release 3.3.10 - 16.04.2021
BUG FIXES
- USB: when serial number cannot be determined, use all bits from
USB bus-number/dev-address to construct the fake name (issue #123).
- Examples Device Discovery: add support for DVXplorer and EVK.
Serial Number in Device Discovery can only be used if the
device could be opened correctly (deviceErrorOpen == false).
Release 3.3.9 - 21.12.2020
BUG FIXES
- DVXplorer: fix mapping of events when dual-binning is
enabled (issue #119).
Release 3.3.8 - 15.09.2020
NEW FEATURES
- Linux Udev: simplify udev rules into one file (issue #114).
BUG FIXES
- Samsung EVK: allow multiple EVKs to be selected by a temporary
serial number generated from USB bus addresses (issue #113).
- Samsung EVK: more robust parser for 231Y chip data (issue #115).
Release 3.3.7 - 07.05.2020
BUG FIXES
- Samsung EVK: implement full 64bit timestamps (issue #99).
Release 3.3.6 - 18.04.2020
NEW FEATURES
- MacOS X: set default CMake destination to /usr/local on Apple systems.
- Ubuntu: support for release 20.04 LTS 'Focal Fossa'.
BUG FIXES
- USB: do not claim device interface on discovery, not needed for
simple info requests on control ep0 (issue dv-gui#291).
- Samsung EVK: enable USB transfer timeout (set to 500us), so that
even on low event rates, data keeps coming in with low latency.
Release 3.3.5 - 12.03.2020
INCOMPATIBLE CHANGES
- DVXplorer (Lite): firmware update to version 8.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
BUG FIXES
- USB: improve detection of device serial number.
- USB: optimize setting number/size of USB transfers.
Release 3.3.4 - 04.03.2020
INCOMPATIBLE CHANGES
- DVXplorer: firmware update to version 7.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
NEW FEATURES
- Cameras: added support for DVXplorer Lite camera.
- USB: added support for libusb logging.
Release 3.3.3 - 01.02.2020
BUG FIXES
- Samsung EVK: fix possible non-monotonic timestamp at startup.
- DVXplorer: fix crop start/end address inversion.
Release 3.3.2 - 24.01.2020
BUG FIXES
- DVXplorer/DVS132S: fix IMU accel/gyro scale detection.
- Samsung EVK: fix non-monotonic timestamps when a reference timestamp
event is lost due to high USB traffic.
Release 3.3.1 - 17.01.2020
NEW FEATURES
- Support for new DVXplorer and Samsung EVK devices added.
Release 3.3.0 - 24.12.2019
NEW FEATURES
- Support for mini-eDVS serial device added to eDVS code.
BUG FIXES
- eDVS: fix inverted event polarity.
Release 3.2.2 - 15.07.2019
BUG FIXES
- CMake: fix compatibility with older pre-6.0 GCCs (issue #93).
- CMake: drop required version to 3.10 (Ubuntu Bionic).
- USB devices: better error messages on failure to open a device,
better distinction of generic 'any-camera' case and specific
USB ports or serial numbers.
- eDVS: fix strncpy() compiler warning, ensure serial number is
always NULL terminated.
- DAVIS: fix APS frame color interpolation for color cameras
when ROI is enabled (issue #94).
Release 3.2.0 - 20.05.2019
INCOMPATIBLE CHANGES
- DAVIS firmware and logic update: DAVIS FX3 firmware v6 and logic v18.1.
Fixes a possible USB data corruption bug in some rare cases, especially
on MacOS X systems. Improves quality of APS frames.
- All devices: dataStart() stops all producers and resets all buffers,
ensuring no stale data remains. Producers must be enabled only after
having called dataStart(), it not using the START_PRODUCERS feature.
- CMake: version 3.12.0 or newer of CMake is now required.
- Ubuntu: dropped support for Trusty 14.04.
- DVS128: renamed logicVersion to firmwareVersion in dvs128_info struct.
- Python bindings: removed experimental Python SWIG bindings.
Please use https://github.com/duguyue100/pyaer/ instead (issue #65).
- CMake: installed caer-base.cmake dropped its argument. Use standard
CMake facilities to select the needed C/C++ standard version.
- CMake: caer-base.cmake does not provide the following variables anymore:
- CM_BUILD_DIR (not useful)
- CM_SHARE_DIR (already known when accessing the file)
- CAER_C_THREAD_LIBS (renamed to SYSTEM_THREAD_LIBS)
- CAER_MODULES_DIR (not part of libcaer)
- CMake: renamed CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
to USER_LOCAL_INCDIRS/USER_LOCAL_LIBDIRS/USER_LOCAL_PREFIX.
- Events: removed unused event types: Config, Ear, Matrix4x4,
Point1D, Point2D, Point3D, Point4D and Sample (issue #85).
NEW FEATURES
- Devices: added support for the DVS132S test chip in the C/C++ API.
- CMake: added UDEV_INSTALL switch to disable udev rules installation (issue #82).
- CMake: search for and support OpenCV 4 (issues #83, #90).
- GCC/CMake: add more compiler warnings.
- C++ ringbuffer.hpp: add comparison operators.
- Examples: compile and install examples with -DEXAMPLES_INSTALL=1.
- frame_utils.h: added caerFrameUtilsPixelColor() function (issue #89).
- Device discovery: firmwareVersion is always defined for USB devices
during device discovery. SerialPortName and SerialBaudRate are always
defined for eDVS devices (issue #88).
BUG FIXES
- CMake: ensure LIBCAER_HAVE_SERIALDEV and LIBCAER_HAVE_OPENCV defines
in libcaer.h are always properly defined to be 0 or 1.
- device_discovery.c example: fix compilation with new struct davis_info.
- Examples: fix incorrect defines.
Release 3.1.0 - 27.11.2018
INCOMPATIBLE CHANGES
- DAVIS: require firmware version 5 and logic version 18. Fixes issues with
IMU Run Controls, fixes corrupt data in DAVIS BLUE 346, enables IMU on
DAVIS RED 346.
- Logging: caerLogVAFull() API has been simplified, the two file descriptor
arguments have been removed, use the proper caerLogFileDescriptorsSet()
API to set them when needed.
NEW FEATURES
- Logging: added caerLogCallbackSet() and caerLogCallbackGet() functions
to set/get a global callback function to be executed on every caerLog()
logging call, the log message and its size are passed to the callback.
BUG FIXES
- C++ API frame.hpp: fix demosaic(), set number of (valid) events in
resulting packet correctly. Don't log errors if operation cannot
be performed, just copy over unchanged pixel data.
Also only operate on valid events for demosaic() and contrast().
- DAVIS IMU: temperature readings on InvenSense 6050 were off by +1.53°C.
- CMake: fix linking on Windows.
- Ubuntu Packaging: build with correct GCC version on Ubuntu 14.04 Trusty.
- Logging: performance improvements; move expensive check (TLS) to
last position, ensure log-level is checked first in custom loggers.
- Fix various compiler warnings.
Release 3.0.0 - 23.10.2018
INCOMPATIBLE CHANGES
- frame_utils.h: caerFrameUtilsDemosaic() and caerFrameUtilsContrast()
functions have different signatures to allow for more flexibility in
where frames to be modified are sourced and stored. Also the type
enums changed to add Bayer->Gray conversion options.
- davis.h: support for new logic version 16:
- changed, slightly more efficient data encoding (IMU, APS).
- cleaned up device configuration, removed lots of unused debug options.
- changed APS FrameDelay to FrameInterval, to allow for setting time
between frames and thus control the frame rate directly.
- new hardware filter options for DVS: Background Activity, Refractory
Period, Skip Events, Polarity Suppress/Flatten, Region of Interest (ROI)
and single Pixel Filtering.
- full support for new iniVation devices: DAVIS346 Blue, DAVIS346 Red
and DAVIS346 Red Color.
This represents a new major release version, as it breaks the API
for DAVIS devices: the available configuration options (#defines in
davis.h) heavily change; the struct caer_davis_info and the
caerDavisROIConfigure() function also change incompatibly.
Please ensure all applications targeting DAVIS are recompiled!
NEW FEATURES
- C++ EventPackets: new function getHeaderPointerForCOutput() to get
the underlying C EventPacket pointer and ensure that memory ownership
is transferred to it, and not left with the C++ EventPacket.
- FrameEventPackets: new caerFrameEventPacketAllocateNumPixels() function
to allocate based on total number of pixels instead of X/Y lengths.
- davis.h: added new DAVIS_CONFIG_APS_FRAME_MODE configuration option.
- davis.h: added enums for easier IMU option handling (caer_davis_imu_types,
caer_davis_imu_invensense_accel_scale, caer_davis_imu_invensense_gyro_scale).
- CMake: automatically set CMAKE_INSTALL_PREFIX to /usr if nothing
was specified by user on Unix/Linux, this avoids installs to /usr/local
that often lead to the libraries not being found correctly.
- CMake: support for the ccache compiler cache added.
- CMake: install udev rules on Unix/Linux, to allow access to iniVation
devices. Default rules chmod 0666 the devices, using -DUDEV_SELINUX=1
installs a SELinux-enabled version for systems using TAG 'uaccess'.
- Ubuntu Packaging: libcaer is now split in two packages: libcaer and
libcaer-dev. It is now built using debhelper, and the static library
version is now also installed by libcaer-dev.
- Fedora Packaging: libcaer is now split in three packages: libacer,
libcaer-devel and libcaer-static. The static version is in the latter.
- examples/davis_text.cpp: added new example for writing data to a text file.
BUG FIXES
- Packaging: cmake dependency bumped to 2.8.12 in Ubuntu/Fedora packages.
- src/usb_utils.c: fixed firmware/logic update message to be clearer.
- src/container_generation.h: clearer message on dropped event packets.
Release 2.5.2 - 25.09.2018
INCOMPATIBLE CHANGES
- CMake: raised minimum CMake dependency to version 2.8.12, some
variables we use are only defined starting with this version.
It also corresponds to the version present in the oldest distribution we
support: Ubuntu 14.04 Trusty.
NEW FEATURES
- CMake: added CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
variables to enable easier cross-compilation setups.
- CMake: added CMake configuration files, so that CMake may find the library
using its own package detection system, in addition to the existing pkg-config
based detection. Thanks to Felix Schwitzer (see issue #72 for more details).
- devices/davis.h: added caerBiasCoarseFineFromCurrent() and caerBiasCoarseFineToCurrent()
functions to convert between coarse-fine bias values and the current they
represent (in picoAmpere). Also available in the C++ interface (issue #40).
- filters/dvs_noise.h: added statistics on number of filtered events separated
by ON/OFF polarity. Added caerFilterDVSNoiseStatsApply() function to only
gather statistics and not modify the given polarity event packet (read-only
mode). Also available in the C++ interface.
BUG FIXES
- src/usb_utils.c: check for exact firmware and logic versions.
- events/packetContainer.h: fix sizes used in caerEventPacketContainerCopyAllEvents()
and caerEventPacketContainerCopyValidEvents() to allocate new containers.
Release 2.5.0 - 17.07.2018
INCOMPATIBLE CHANGES
- davis.h: removed support for stereo microphones, this was never used in any
released devices, only for internal experiments on a limited prototype run.
- Events: event packet allocation functions are now in the various headers,
making it possible to create, use and destroy event packets and events by
just including the headers, without having to link to the full library.
CAER_EVENTS_HEADER_ONLY needs to be set before inclusion for this to fully
work, else there is a dependency on caerLog(), which is still in the library.
This is very useful for tools or network receivers. A re-compile of any
programs using these functions is required to avoid runtime linking errors.
- CMake: cleanup linked libraries, libm and librt are not part of the
default dependencies anymore, they need to be added manually to programs
that actually use them. Same goes for thread support, which is now only
exported as the 'CAER_C_THREAD_LIBS' CMake variable but not automatically
included anywhere.
NEW FEATURES
- Device Discovery: added capability of finding any accessible supported
devices on a system, getting information on them, and then opening them.
New header 'devices/device_discover.h' with functions caerDeviceDiscover()
and caerDeviceDiscoverOpen(), example provided in 'examples/device_discovery.c'.
C++ interface available in 'devices/device_discover.hpp', namespace is
'libcaer::devices::discover'.
- Error reporting: both caerDeviceOpen() and caerDeviceOpenSerial() now
set 'errno' on failure to provide more precise reasons for the failure,
error codes are available in the enum 'caer_error_codes'.
- log.h: new functions caerLogDisable(true/false) to turn off all logging
for a region of code (per-thread), and caerLogDisabled() to check current
status of logging. C++ interface available in 'libcaer::log'.
- C++ packetContainer.hpp: support construction of a new packet container
based on a C-style caerEventPacketContainer, with optional memory
ownership take-over for the contained packets.
- C++ utils.hpp: libcaer::events::utils::makeShared/Unique now support the
Matrix 4x4 event type too.
- C++ frame.hpp: new define LIBCAER_FRAMECPP_OPENCV_INSTALLED to enable
special getOpenCVMat() support independently of libcaer itself having
support for OpenCV.
- events/common.h: add new functions caerEventPacketGetDataSizeEvents()
and caerEventPacketGetSizeEvents() to get size of data part of an
event packet, disregarding capacity.
- Examples: added 'davis_simple_2cam.c' example for a two camera setup.
- device.h: CAER_SUPPORTED_DEVICES_NUMBER define is now public.
- eDVS: added 'serialPortName' and 'serialBaudRate' members to its info
structure, contents are OS-specific.
- eDVS: analyze startup message to confirm the presence of an eDVS device.
- eDSV: flush buffers on open to avoid possible garbage data from previous
open attempts to interfere with eDVS detection.
- USB: check both firmware and logic version always and notify users of
needed upgrades for both at the same time; this avoids multiple notify
and upgrade cycles if both change quickly or the user hasn't upgraded
in a long time.
- filters/dvs_noise.h: new filter module to reduce noise from the DVS
output, integrates a hot pixel filter (with learning), a background-
activity filter and a refractory period filter. C++ interface available.
New example 'davis_cvgui_filters.cpp' shows usage.
- devices/davis.h: new define DAVIS_CONFIG_DVS_FILTER_PIXEL_AUTO_TRAIN to
automatically discover abnormally active pixels (hot-pixels) in the camera
output and then filter them at the hardware level (FPGA/CPLD). This only
works on newer camera that support the hardware pixel filtering, it does
nothing on older systems and just returns 'false' on get/set.
- devices/davis.h: support new DAVIS346 with InvenSense MPU 9250, new IMU
options via defines DAVIS_CONFIG_IMU_GYRO_DLPF and DAVIS_CONFIG_IMU_ACCEL_DLPF.
- CMake: new flag ENABLE_STATIC available to enable static compilation
of libcaer in addition to shared library.
- Code is now formatted using clang-format.
BUG FIXES
- C++: add header inclusions for possibly missing types.
- C++ devices/serial.hpp: fix warning about shadowed variable, improve
error message on failure to open by adding serial baud-rate to message.
- C++ packetContainer.hpp: fix construction of event packets, resulting
size was incorrect due to wrong vector sizing at initialization.
- C++ events/common.hpp: shrink_to_fit() fails on empty packets, since
resize to zero is not allowed. Now correctly detects this case.
- Devices: documentation updates, fix typos and precise usage of
'deviceString' member in device info structures; it is only valid
during the life-time of the device!
- eDVS: name case changed to 'EDVS-4337' to follow firmware.
- eDVS: faster startup due to shorter delays.
- eDVS: request exclusive access to serial device on Unix (Linux/MacOSX),
this was already the default on Windows.
- Dynap-SE: delay after initial configuration extended from 1s to 4s,
some devices seem to need longer delays to start up properly.
- USB: better log messages on failure, reduce event handling timeout to
10ms from 1s for quicker response to shutdown requests.
- AutoExposure: debug log messages from the auto-exposure module now
respect the per-device log-level settings.
Release 2.4.2 - 23.03.2018
NEW FEATURES
- Install shared CMake file 'caer-base.cmake' to simplify common build
steps and checks used in libcaer, cAER and its modules.
- examples/davis_cvgui.cpp: improved example, checks for libcaer compiled
with proper OpenCV support (issue #55), shows events in a separate
window, compilation documented in README (PR #53).
BUG FIXES
- Improve Python examples, use numpby for better performance.
- C++ Devices: let users derive from device classes (PR #56).
- C++ EventPackets: fix iteration over empty packet, due to back()
incorrectly throwing an exception when size is zero because of the
usage of the -1 backwards lookup notation.
Release 2.4.0 - 05.12.2017
INCOMPATIBLE CHANGES
- DAVIS: require new firmware version 4 and logic version 9912.
- Dynap-SE: require new logic version 5.
- devices/dynapse.h: the chip IDs are now mapped to be 0,1,2,3 for
U0,U1,U2,U3 respectively, making them as easy to use and loop over
as the core IDs. The defines have been updated, so if you've been
properly using them, no change is needed other than a recompile.
- src/dynapse.c: spike events coming from a Dynap-SE's chip ID 0 (U0) do
now have a chip ID of 0, the same as the chip ID used to configure the
system, removing this small inconsistency. All usages of
'DYNAPSE_CONFIG_DYNAPSE_U0+1' must now remove the '+1', chip U0 is not
to be treated differently anymore in regards to its USB output chip ID.
- events/spike.h: caerSpikeEventGetX() and caerSpikeEventGetY() were
inverting the meaning of column/row, resulting in inconsistencies
when using those two functions in comparison to system configuration.
This has now been corrected, and the functions moved to devices/dynapse.h
with the new names of caerDynapseSpikeEventGetX/Y(), due to them being
specific to the architecture of the Dynap-SE neuromorphic processor.
Now both chips, cores and neurons, as interpreted through these functions,
are set out in row-major order (similar to computer vision).
- devices/dynapse.h: the caerDynapseWriteSram() function is being deprecated
in favour of its newer variant caerDynapseWriteSramN().
- devices/dynapse.h: removed define DYNAPSE_CONFIG_SRAMROW.
Use DYNAPSE_CONFIG_NUMNEURONS and DYNAPSE_CONFIG_NUMSRAM_NEU.
- devices/dynapse.h: removed defines DYNAPSE_MAX_USER_USB_PACKET_SIZE,
DYNAPSE_CONFIG_MAX_USB_TRANSFER and DYNAPSE_CONFIG_MAX_PARAM_SIZE.
Those are internal implementation details, and caerDynapseSendDataToUSB()
now accepts arbitrarily sized data to send, the user does not have to
divide it in chunks of a particular size anymore.
- devices/dynapse.h: improved and changed 'struct caer_bias_dynapse' to
reflect actual biasing of device correctly.
- devices/device.h: CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE's
default value has been changed to zero, disabling the size division of
packets by default. Packet size is now dictated, by default, only by
the time interval, with a value of 10 milliseconds.
NEW FEATURES
- Packaging: packages for Fedora, Debian and Gentoo Linux, as well as
MacOS X via Homebrew are now available for each new libcaer release.
For more information please visit:
https://inivation.com/support/software/libcaer/#automated-installation
- Python bindings: added bindings for Python 2/3 using SWIG. See
bindings/python_swig/ and bindings/python_swig/examples/ for examples.
NOTE: this needs a patched Swig, see 'https://github.com/swig/swig/pull/1166'.
- CMake: added support for generating RPM/DEB files via CPack, to
easily be able to package one's own build.
- DAVIS/Dynap-SE: added support for AER and Multiplexer statistics, to
examine number of events received, filtered and dropped.
- DAVIS: added support for hardware DVS Refractory Period filter on
newer FX3 based devices.
- DAVIS: added support for DVS ROI filtering.
- DAVIS: added support for APS Quad-ROI (up to four independent
regions of interest can be configured and enabled). The number of
supported ROI regions is defined with DAVIS_APS_ROI_REGIONS_MAX.
- devices/davis.h: added 'caerDavisROIConfigure()' function to atomically
and efficiently configure and enable ROI regions.
- devices/davis.h: expanded 'struct caer_davis_info' to account for the
above new features: 'dvsHasROIFilter', 'dvsHasStatistics' and 'muxHasStatistics'.
- devices/dynapse.h: expanded 'struct caer_dynapse_info' to account for
the above new features: 'aerHasStatistics' and 'muxHasStatistics'.
- devices/device.h: added 'caerDeviceConfigGet64()' to read 64-bit
configuration parameters, needed for statistics support.
- src/dynapse.c: the Dynap-SE caerDeviceSendDefaultConfig() function now
performs full initialization of the device and its chips. To reliably
work with the device, make sure to always call this before setting
your own custom configuration afterwards.
- devices/dynapse.h: added caerDynapseWriteSramN() function, uses global
neuron ID [0,1023] instead of core ID/neuron ID syntax. Arguments are
also directly compatible with caerDynapseGenerateSramBits().
- devices/dynapse.h: renamed define DYNAPSE_CONFIG_NUMCAM to
DYNAPSE_CONFIG_NUMCAM_NEU to better explain what it is.
- devices/dynapse.h: added caerBiasDynapseGenerate() and caerBiasDynapseParse()
functions to handle the improved 'struct caer_bias_dynapse' and
transform it to/from the bit-wise bias configuration representation.
- devices/dynapse.h: added caerDynapseGenerateSramBits() function to
generate SRAM configuration bits based on input arguments.
- devices/dynapse.h: added caerDynapseCoreXYToNeuronId() and
caerDynapseCoreAddrToNeuronId() functions to calculate chip global
neuron addresses (range [0,1023]).
- devices/dynapse.h: added caerDynapseSpikeEventFromXY() function to
have a reverse transformation to caerDynapseSpikeEventGetX/Y().
- devices/dynapse.h: added DYNAPSE_CONFIG_TAU2_SET, DYNAPSE_CONFIG_TAU1_RESET
and DYNAPSE_CONFIG_TAU2_RESET defines for caerDeviceConfigSet()
usage, to allow configuration of which neuron leakage bias to use.
- events/common.h: added caerGenericEventCopy() function to copy
events from one place in memory to another.
- events/*.h: added two new functions 'caerXXXEventPacketFromPacketHeader()'
and 'caerXXXEventPacketFromPacketHeaderConst()' to transform a packet
header pointer to the proper event packet pointer. This checks the
type, and is needed for proper bindings support.
- ringbuffer.h/hpp: the ring-buffer functions for producer-consumer
high-performance communication between two threads are now exposed
as part of the API, to allow re-use in other projects such as cAER.
- examples/dynapse_simple.c: added simple example for Dynap-SE access.
- examples/davis_cvgui.cpp: added example for converting frames to OpenCV
Mat and visualizing them using OpenCV's GUI.
- src/timestamps.h: added timestamp debugging code, to measure drift
between host and device. Only enabled in debug builds.
- src/davis.h: improved APS_DEBUG_FRAME support, now splits signal and
reset read for debugging over all ROI regions.
- New device: support for upcoming DAVIS128 Raspberry-Pi integration.
- events/matrix4x4.h: new event type for 4x4 Matrices.
- C++ support: added toString() for devices.
BUG FIXES
- devices/dynapse.h: major API documentation cleanup.
- devices/dynapse.h: several function parameters of integer type were
sized more correctly to reflect the range of their arguments.
- src/dynapse.c: DYNAPSE_CONFIG_CLEAR_CAM now clears all 64 CAMs for
each neuron in a chip, resulting in all CAMs being fully cleared.
- Dynap-SE: default low-power biases are now the same across all cores.
- DAVIS: improved default timings for APS, providing better image quality,
especially on new chips with internal ADC support.
- DAVIS/AutoExposure: fixed auto-exposure on FX3 devices, sometimes didn't
run due to rounding errors when correcting for clock skew between
parameters sent to the devices and parameters received back.
- events/frame.h: added documentation that using the assignment operator
to copy Frame events is not possible, caerGenericEventCopy() should
be used instead. The C++ variant deletes the assignment operator to
enforce this. This fixes issue #26.
- src/usb_utils.c: fixed shutdown callback not being called on MacOS X.
Also fixed possible dead-lock on USB transfer re-submit on Windows.
This fixes issue #32.
- src/date_exchange.h: prevent possible dead-lock inside dataExchangeGet(),
if signals are delivered always while not sleeping.
- portable_endian.h, portable_time.h: fixed stand-alone compilation.
- Fixed many code quality warnings by Sonarcloud.
- Travis-CI: fixed automatic test build issues on MacOS X.
Release 2.3.0 - 30.06.2017
INCOMPATIBLE CHANGES
- device.hpp: removed C++ dataStart() method with no arguments. As with
the C interface, only the variant with all notification arguments
remains. This is to ensure users think about the possible arguments,
especially with regards to the shutdown notification, which usually
should be defined and used.
- Dynap-SE: requires new logic version 4. Adds new features related
to DAVIS integration and spike generation/playback.
NEW FEATURES
- CI: test builds are now done by Travis-CI and results sent off to
Sonarcloud for code quality analysis.
- Examples: added example to show how to bias a DAVIS camera and
configure it for external AER control (davis_enable_aer.cpp).
- Examples: added shutdown notification handler to all examples.
BUG FIXES
- CMake: fix CMake 3.X support on MacOS X.
- caerDeviceDataGet(): now properly returns NULL in blocking mode when
the device goes away or stops sending any data, thus preventing a
dead-lock when using blocking mode with this function.
Release 2.2.0 - 13.06.2017
INCOMPATIBLE CHANGES
- frame_utils.h: the frame utilities API was simplified. Now only one
function for demosaic support respective contrast enhancement support
exists, with the type (standard or OpenCV) as an enumeration argument.
NEW FEATURES
- Added support for the eDVS4337 serial port device. Serial port devices
require the libserialport library (version 0.1.1 or newer), and as such
are optional; enable them by passing -DENABLE_SERIALDEV=1 to cmake.
The presence of this support can be verified with the libcaer.h define
LIBCAER_HAVE_SERIALDEV. When disabled, the API for serial devices is
still available, but will simply return false/NULL on any operation to
indicate missing support. For usage details, see 'examples/edvs_simple.c'.
To open the device, use the new caerDeviceOpenSerial() function with
'deviceType' set to 'CAER_DEVICE_EDVS'. The usual caerDeviceOpen()
will only work for supported USB devices. All other functions, such
as caerDeviceDataGet(), remain the same and work for all device types.
- DAVIS Examples: added example for frame parsing. Thanks to Jonathan Müller.
BUG FIXES
- DVS128/DAVIS/Dynap-se: fix log messages on failure to open device and
on successful shutdown.
- Dynap-se: calculate rate in caerDynapseWritePoissonSpikeRate() as float.
- IMU and PointXD Events: fix conversion of floating-point data to/from
little-endian in-memory format. On MacOS X, this resulted in a function
call with integer arguments and thus conversion to an integer value,
destroying the original floating-point value.
Release 2.1.5 - 03.06.2017
NEW FEATURES
- Dynap-se: added support for experimental DYNAPSE_CONFIG_POISSONSPIKEGEN
control (thanks to Carsten Nielsen).
BUG FIXES
- DAVIS FX3: require new logic revision 9910 for FX3 devices.
This fixes a bug in timestamp synchronization between multiple
cameras, and improves precision of some time related parameters,
namely APS_EXPOSURE, APS_FRAME_DELAY and USB_EARLY_PACKET_DELAY.
- DAVIS: fix incorrect extra log message when opening FX3 devices.
Release 2.1.4 - 30.05.2017
BUG FIXES
- C++: functions defined in C++ header files, such as happens in log or
utils, need the inline keyword to allow the linker to resolve symbols
properly. Fixes #14.
Release 2.1.3 - 28.05.2017
NEW FEATURES
- DAVIS: new device type CAER_DEVICE_DAVIS is now available, handles both
FX2 and FX3 board-based devices transparently.
BUG FIXES
- C++ devices/usb.hpp: add missing std::string include.
- Devices: log failure to put new event packet containers on ring-buffer for
consumption by clients with higher log-level of CAER_LOG_NOTICE.
Release 2.1.2 - 24.05.2017
BUG FIXES
- FrameUtils/C++ FrameEvent: fix detection of OpenCV presence.
- CMake: add dependency on libm for math.h functions.
Release 2.1.1 - 23.05.2017
BUG FIXES
- AutoExposure: disable debug logging.
- AutoExposure: get out of highly over/under-exposed situations much faster.
Release 2.1.0 - 22.05.2017
INCOMPATIBLE CHANGES
- usb.h: the 'dataShutdownNotify' callback of caerDeviceDataStart() will only
be called on exceptional shutdowns now. Normal shutdowns, such as those from
calling caerDeviceDataStop(), will not execute the callback anymore.
The documentation for caerDeviceDataStart() and caerDeviceDataStop() has been
updated accordingly.
- DAVIS: requires new logic revision 9880.
NEW FEATURES
- davis.h: added automatic exposure control, can be turned on/off with
the DAVIS_CONFIG_APS_AUTOEXPOSURE configuration parameter, defaults to off.
- EventPackets (C/C++): added caerEventPacketGetDataSize() and
caerEventPacketGetSize() functions to easily get packet size in bytes.
- C++ FrameEvent: added new function getOpenCVMat() to frame event, if
OpenCV is enabled. Returns a cv::Mat representing the frame's pixels, with
support for deep-const by cloning (can be disabled for efficiency).
- C++ Utils: enhanced makeUniqueFromCStruct() and makeSharedFromCStruct() to
also allow a 'takeMemoryOwnership' parameter that is forwarded to the event
packet constructors; it defaults to true like the constructors themselves.
- Devices (C/C++): added new CAER_HOST_CONFIG_LOG config module with parameter
CAER_HOST_CONFIG_LOG_LEVEL to set per-device log-level; by default the
log-level is equal to the current global one at device opening.
BUG FIXES
- libcaer.hpp: undefine log-level names to avoid name clashes.
- DAVIS: removed variable APS ADC Shift, is not used by any camera currently
offered, all have 10 bits precision.
- DAVIS: fix black APS pixels on very high illumination.
- DAVIS240: fix low range of APS pixels due to reduced ADC dynamic range.
- USB: libusb-based USB communication completely rewritten, now there is one
thread responsible for USB event handling only, while transfers are sent,
started/stopped etc. from other threads. This avoids possible dead-locks,
or other threads stealing the USB event handling, or new settings not being
sent to the device under certain load conditions. This required a small
change in the API, please see "INCOMPATIBLE CHANGES" above for more details.
Release 2.0.2 - 27.04.2017
NEW FEATURES
- Logging: added caerLogFileDescriptorsGetFirst(), caerLogFileDescriptorsGetSecond()
functions to get the two file descriptors where log messages go to.
- Logging: added caerLogVAFull() function to allow full control over all
parameters involved in logging, especially the log-level.
- Dynap-se: added support for experimental DYNAPSE_CONFIG_SPIKEGEN
control and improved DYNAPSE_CONFIG_SRAM control (thanks to Carsten Nielsen).
- Updated C++ examples to use C++ logging functions.
- Updated C++ interface to reflect above changes.
Release 2.0.1 - 16.03.2017
NOTE: this release is numbered 2.0.1 and not 2.0.0, because 2.0.0 was the
development version. To ensure people can depend on the now actually released
version, the version number was increased to 2.0.1 for the official release.
INCOMPATIBLE CHANGES
- The Frame Event format changed to have the origin (0, 0) in the upper left
corner of the image, following standard computer graphics conventions now.
Before it was in the lower left corner, following the OpenGL convention.
This was changed to more easily be able to benefit from the wealth of
computer graphics libraries available, such as OpenCV.
caerFrameEventGetPixelArrayCGFormat() has been removed as a consequence.
- The Polarity Event format has also changed its origin to the upper left corner.
- Device INFO structures have additional data members now, be sure to
recompile anything depending on those!
- CAER_HOST_CONFIG_PACKETS_MAX_*_SIZE and MAX_*_INTERVAL options have been
removed, the whole data packeting system is now much simpler with only
two configuration options to control it:
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_INTERVAL
These act at the event packet container level. See packetContainer.h
documentation on more information for how this works.
- Removed LIBCAER_LOG_NONE define from headers, it is now not possible
to completely suppress log output anymore.
- caerGenericEventGetEvent() has had its bounds restricted to [0,eventNumber[
instead of [0,eventCapacity[.
- Event packet copy functions have been renamed to:
- caerEventPacketCopy()
- caerEventPacketCopyOnlyEvents()
- caerEventPacketCopyOnlyValidEvents()
NEW FEATURES
- Support for the aiCTX DYNAP-SE neuromorphic chip was added.
- Added new event type Spike Event for spiking neurons.
- Added new event types Point1D, Point2D, Point3D and Point4D to
hold floating point data in multiple dimensions.
- New event packet functions were added:
- caerEventPacketEquals()
- caerEventPacketClear()
- caerEventPacketClean()
- caerEventPacketResize()
- caerEventPacketGrow()
- caerEventPacketAppend()
- Full native support for C++11 through header library (libcaercpp).
- Improved const-qualification of functions, to allow better compile
time checks for read-only data. A GetEventConst() function was added
to each event type as part of this, to get read-only events.
- Const, reverse and const-reverse iterators were added to all event types.
- davis.h: added support for stereo microphones on DAVIS346mini.
- davis.h: added support for extra signal detectors.
- network.h: added header with functions to help parse AEDAT 3.X
network stream headers.
- frame.h: added support for more color filter configurations.
- packetContainer.h: better documentation, now tracks lowest and highest
timestamps contained, as well as number of total and valid events.
- packetContainer.h: added caerEventPacketContainerUpdateStatistics() to
update above statistics. Automatically called on each addition or
removal of an event packet from the container.
- packetContainer.h: added caerEventPacketContainerFindEventPacketByType*(),
caerEventPacketContainerCopyAllEvents() and caerEventPacketContainerCopyValidEvents()
functions to search for event packets by type and to make deep-copies of them.
- special.h: added new Special Event types, to support extra signal detection
schemes and add Frame Event related timing information.
- special.h: added caerSpecialEventPacketFindEventByType*() and
caerSpecialEventPacketFindValidEventByType*() functions to search for
a specified type of special event.
- libcaer.h: added LIBCAER_VERSION, LIBCAER_NAME_STRING,
LIBCAER_VERSION_STRING and LIBCAER_HAVE_OPENCV defines.
- log.h: added caerLogVA() function to pass va_list arguments directly.
Release 1.0.3 - 28.03.2016
INCOMPATIBLE CHANGES
- davis_fx2.c: removed specific FX2 code, now uses same backend as FX3
for sending all configuration values, due to new firmware version 3
for FX2 DAVIS small-board cameras. A firmware update is required,
please follow the instructions at https://inivation.com/support/software/reflashing/.
NEW FEATURES
- frame.h: add function caerFrameEventGetPixelArrayCGFormat() to
Frame Event, allows to get a copy of the pixels array in the
standard computer graphics format (pixel (0, 0) in upper left
corner) efficently.
- davis.h: add DAVIS_CONFIG_APS_ADC_TEST_MODE parameter to APS module.
Release 1.0.2 - 08.01.2016
IMCOMPATIBLE CHANGES
- frame.h: rename channel number to color channels and add color
filter information, to better specify the information needed
to reconstruct color frames. The 'enum caer_frame_event_color_channels'
and 'enum caer_frame_event_color_filter' hold the possible values.
This change is backwards-compatible with older frame format!
- davis.h, dvs128.h: changed info data structure's integers to be
signed for better cross-language compatibility. Also 'deviceID'
can now be compared directly with 'sourceID' from event packets.
- davis.h: changed type of 'apsColorFilter' in info data structure
to take advantage of new 'enum caer_frame_event_color_filter'.
NEW FEATURES
- common.h: add generic functions for event packet copying, with
support for packet size reductions (copy only valid).
- libcaer.h: add generic clear, get and set functions for bitfields,
and use them in all the event functions to avoid errors.
- config.h: add device configuration event type, for tracking
of device configuration changes in the event stream.
- log.c: add timezone information to log message time information.
- dvs128_simple.cpp, davis_simple.cpp: add C++11 example variants.
- Enable more Clang compiler warnings.
BUG FIXES
- davis_common.c: only update the ROI size information if ROI
updates actually came in from the device.
- Fix and improve documentation, especially for the frame event.
- Fix off-by-one in event's GetEvent() function's warning log message.
- device.c: mark global function pointer arrays static.
- common.h, frame.h: fix compilation of inline functions in
strict C++11 mode.
Release 1.0.1 - 06.11.2015
INCOMPATIBLE CHANGES
- Requires firmware version 2 and logic revision 7449.
- usb.h: improved caerDeviceDataStart() API to also allow for
notification of data acquisition shutdown, to be able to react
to abnormal shutdown cases, like when a device is unplugged.
- frame.h: changed in-memory format for easier handling and compatibility
with the other event formats (all-in-one memory block).
- davis.h: rename DAVIS240 APSOVERFLOWLEVEL to APSOVERFLOWLEVELBN.
NEW FEATURES
- Headers are C++ compatible and stand-alone now.
- MacOS X support.
- Added pkg-config file for library.
- Full API documentation (see docs/ for PDF).
- Various cmake/build improvements. Support out-of-tree builds.
- Add iterator macros for EventPackets.
- frame.h: added ROI region ID tracking, as well as ROI position.
Added caerFrameEventGetExposureLength() and caerFrameEventGetTimestamp(),
which is defined as the median of the exposure times.
Added caerFrameEventPacketGetPixelsSize() and caerFrameEventPacketGetPixelsMaxIndex()
for EventPacket-level size information.
Added caerFrameEventGetPixelsSize() and caerFrameEventGetPixelsMaxIndex()
for Event-level size information.
- log.h: added caerLogFileDescriptorsSet() to allow logging to
up to two different file descriptors (defaults to STDERR only).
- davis.h: added chipID check macros.
- davis.h: added DAVIS_CONFIG_APS_SNAPSHOT to take one frame snapshots.
- dvs128.h: added DVS128_CONFIG_DVS_TS_MASTER to select timestamp
master or slave behavior (timestamp synchronization).
- davis_common.c: added support for outputting only reset read or
signal read frames, for debugging purposes.
- c11threads_posix.h: C11-compatible thread abstraction, for
both Linux and MacOS X, based on POSIX Threads.
BUG FIXES
- Relaxed atomic operations memory constraints for better
performance on weakly-ordered architectures (like ARM).
- log.c: call tzset() before localtime_r(), as per standard.
- davis_common.c: improved Region of Interest support (APS).
- davis_fx2.c: keep GlobalShutter flag correctly in-sync.
- davis_fx3.c: fixed support for new FX3 devices.
- packetContainer.h: handle container being NULL by returning NULL.
Release 1.0.0 - 02.10.2015
- Initial release.
Wiki Tutorials
This package does not provide any links to tutorials in it's rosindex metadata.
You can check on the ROS Wiki Tutorials page for the package.
Package Dependencies
No dependencies on ROS packages.
System Dependencies
Dependant Packages
No known dependants.
Launch files
No launch files found
Messages
No message files found.
Services
No service files found
Plugins
No plugins found.
Recent questions tagged libcaer at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | BSD-2 |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-event-camera/libcaer.git |
VCS Type | git |
VCS Version | ros_event_camera |
Last Updated | 2024-01-08 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
library for event based sensors
Additional Links
No additional links.
Maintainers
- Bernd Pfrommer
Authors
No additional authors.
WINDOWS BUILD INSTRUCTIONS
==========================
We support building libcaer on the Windows platform by using the MinGW32/64 compilers
and the MSYS2 environment. The result is a static and a dynamic DLL, as well as the
appropriate header files, so that libcaer can be used in MinGW itself.
Visual Studio and the MSVC compiler are not supported out-of-the-box right now, to use
a DLL compiled by MinGW additional steps are necessary: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
Following are detailed step-by-step instructions to install the required
components and get everything building, we use MinGW64 here for the
64-bit Windows platform, if you want to build for 32-bit Windows, just replace all
mentions of 'x86_64' with 'i686'. Whenever you want to install a package, use
the MSYS2 shell, while to build code, use the MinGW32/64 shells!
1) Get MSYS2 from https://msys2.github.io/ and download the appropriate installer.
Follow the instructions to install the system and update its packages. During the
system package upgrade, ignore any heap mismatch errors, and follow what the last
warning tells you to do (close the shell). The base system upgrade seems to break
the Start Menu shortcuts, so from now on start MSYS2 by going to its directory
'C:\msys64\' and double-clicking on 'msys2_shell.cmd'.
2) Install MinGW GCC: pacman -S mingw-w64-x86_64-gcc
3) Install Make/CMake: pacman -S make mingw-w64-x86_64-cmake
4) Install pkg-config: pacman -S mingw-w64-x86_64-pkg-config
5) Install libusb: pacman -S mingw-w64-x86_64-libusb
6) Place the libcaer source in a location easily accessible to MSYS2. We usually
put the source code into 'C:\msys64\home\libcaer\' and use TortoiseGit
(https://tortoisegit.org/) or git from the MSYS2 shell (pacman -S git) to get it.
7) Switch to the MinGW build shell, double-click on 'mingw64.exe' in 'C:\msys64\'.
8) Switch to the libcaer checkout directory: cd /home/libcaer/
9) Configure, run CMake: cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw64 .
10) Build, run Make: make
11) Install: make install
Congratulations, you now have a working libcaer on Windows! The output from that
last 'make install' will have told you exactly where all the DLLs and header
files are located on the file-system. You can now try building one of the
examples in the examples/ directory to verify functionality.
CHANGELOG
Release 3.3.15 - 07.03.2023
BUG FIXES
- eDVS: fix device discovery. Thanks to Benjamin Ward-Cherrier.
- Windows: control MSVC build with BUILD_CONFIG_VCPKG flag.
- Devices: fix compiler warnings.
- Removed obsolete DAVIS_RPI device.
Release 3.3.14 - 25.03.2022
NEW FEATURES
- Full native MSVC/Windows build support.
BUG FIXES
- davis_cvgui example: fix incorrect biasing and APS frame settings.
- USB: fix firmware version check for DVXplorer Mini.
Release 3.3.13 - 25.02.2022
NEW FEATURES
- DVXplorer (Mini): add control of readout timing parameters, readout restart.
Release 3.3.12 - 12.11.2021
BUG FIXES
- DVXplorer Mini: fix inverted polarity.
- dvx_bw_test example: fix length of time interval for
bandwidth estimation.
- Fedora/Ubuntu: fix packaging, use at least GCC-10 to compile.
Release 3.3.11 - 16.07.2021
NEW FEATURES
- Native MacOS ARM (M1) builds, Big Sur compatibility.
- Ubuntu 21.04 Hirsute support.
- Fedora 34 support.
- Ubuntu 16.04 Xenial is no longer supported!
- Cameras: added support for new DVXplorer Mini camera model.
Release 3.3.10 - 16.04.2021
BUG FIXES
- USB: when serial number cannot be determined, use all bits from
USB bus-number/dev-address to construct the fake name (issue #123).
- Examples Device Discovery: add support for DVXplorer and EVK.
Serial Number in Device Discovery can only be used if the
device could be opened correctly (deviceErrorOpen == false).
Release 3.3.9 - 21.12.2020
BUG FIXES
- DVXplorer: fix mapping of events when dual-binning is
enabled (issue #119).
Release 3.3.8 - 15.09.2020
NEW FEATURES
- Linux Udev: simplify udev rules into one file (issue #114).
BUG FIXES
- Samsung EVK: allow multiple EVKs to be selected by a temporary
serial number generated from USB bus addresses (issue #113).
- Samsung EVK: more robust parser for 231Y chip data (issue #115).
Release 3.3.7 - 07.05.2020
BUG FIXES
- Samsung EVK: implement full 64bit timestamps (issue #99).
Release 3.3.6 - 18.04.2020
NEW FEATURES
- MacOS X: set default CMake destination to /usr/local on Apple systems.
- Ubuntu: support for release 20.04 LTS 'Focal Fossa'.
BUG FIXES
- USB: do not claim device interface on discovery, not needed for
simple info requests on control ep0 (issue dv-gui#291).
- Samsung EVK: enable USB transfer timeout (set to 500us), so that
even on low event rates, data keeps coming in with low latency.
Release 3.3.5 - 12.03.2020
INCOMPATIBLE CHANGES
- DVXplorer (Lite): firmware update to version 8.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
BUG FIXES
- USB: improve detection of device serial number.
- USB: optimize setting number/size of USB transfers.
Release 3.3.4 - 04.03.2020
INCOMPATIBLE CHANGES
- DVXplorer: firmware update to version 7.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
NEW FEATURES
- Cameras: added support for DVXplorer Lite camera.
- USB: added support for libusb logging.
Release 3.3.3 - 01.02.2020
BUG FIXES
- Samsung EVK: fix possible non-monotonic timestamp at startup.
- DVXplorer: fix crop start/end address inversion.
Release 3.3.2 - 24.01.2020
BUG FIXES
- DVXplorer/DVS132S: fix IMU accel/gyro scale detection.
- Samsung EVK: fix non-monotonic timestamps when a reference timestamp
event is lost due to high USB traffic.
Release 3.3.1 - 17.01.2020
NEW FEATURES
- Support for new DVXplorer and Samsung EVK devices added.
Release 3.3.0 - 24.12.2019
NEW FEATURES
- Support for mini-eDVS serial device added to eDVS code.
BUG FIXES
- eDVS: fix inverted event polarity.
Release 3.2.2 - 15.07.2019
BUG FIXES
- CMake: fix compatibility with older pre-6.0 GCCs (issue #93).
- CMake: drop required version to 3.10 (Ubuntu Bionic).
- USB devices: better error messages on failure to open a device,
better distinction of generic 'any-camera' case and specific
USB ports or serial numbers.
- eDVS: fix strncpy() compiler warning, ensure serial number is
always NULL terminated.
- DAVIS: fix APS frame color interpolation for color cameras
when ROI is enabled (issue #94).
Release 3.2.0 - 20.05.2019
INCOMPATIBLE CHANGES
- DAVIS firmware and logic update: DAVIS FX3 firmware v6 and logic v18.1.
Fixes a possible USB data corruption bug in some rare cases, especially
on MacOS X systems. Improves quality of APS frames.
- All devices: dataStart() stops all producers and resets all buffers,
ensuring no stale data remains. Producers must be enabled only after
having called dataStart(), it not using the START_PRODUCERS feature.
- CMake: version 3.12.0 or newer of CMake is now required.
- Ubuntu: dropped support for Trusty 14.04.
- DVS128: renamed logicVersion to firmwareVersion in dvs128_info struct.
- Python bindings: removed experimental Python SWIG bindings.
Please use https://github.com/duguyue100/pyaer/ instead (issue #65).
- CMake: installed caer-base.cmake dropped its argument. Use standard
CMake facilities to select the needed C/C++ standard version.
- CMake: caer-base.cmake does not provide the following variables anymore:
- CM_BUILD_DIR (not useful)
- CM_SHARE_DIR (already known when accessing the file)
- CAER_C_THREAD_LIBS (renamed to SYSTEM_THREAD_LIBS)
- CAER_MODULES_DIR (not part of libcaer)
- CMake: renamed CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
to USER_LOCAL_INCDIRS/USER_LOCAL_LIBDIRS/USER_LOCAL_PREFIX.
- Events: removed unused event types: Config, Ear, Matrix4x4,
Point1D, Point2D, Point3D, Point4D and Sample (issue #85).
NEW FEATURES
- Devices: added support for the DVS132S test chip in the C/C++ API.
- CMake: added UDEV_INSTALL switch to disable udev rules installation (issue #82).
- CMake: search for and support OpenCV 4 (issues #83, #90).
- GCC/CMake: add more compiler warnings.
- C++ ringbuffer.hpp: add comparison operators.
- Examples: compile and install examples with -DEXAMPLES_INSTALL=1.
- frame_utils.h: added caerFrameUtilsPixelColor() function (issue #89).
- Device discovery: firmwareVersion is always defined for USB devices
during device discovery. SerialPortName and SerialBaudRate are always
defined for eDVS devices (issue #88).
BUG FIXES
- CMake: ensure LIBCAER_HAVE_SERIALDEV and LIBCAER_HAVE_OPENCV defines
in libcaer.h are always properly defined to be 0 or 1.
- device_discovery.c example: fix compilation with new struct davis_info.
- Examples: fix incorrect defines.
Release 3.1.0 - 27.11.2018
INCOMPATIBLE CHANGES
- DAVIS: require firmware version 5 and logic version 18. Fixes issues with
IMU Run Controls, fixes corrupt data in DAVIS BLUE 346, enables IMU on
DAVIS RED 346.
- Logging: caerLogVAFull() API has been simplified, the two file descriptor
arguments have been removed, use the proper caerLogFileDescriptorsSet()
API to set them when needed.
NEW FEATURES
- Logging: added caerLogCallbackSet() and caerLogCallbackGet() functions
to set/get a global callback function to be executed on every caerLog()
logging call, the log message and its size are passed to the callback.
BUG FIXES
- C++ API frame.hpp: fix demosaic(), set number of (valid) events in
resulting packet correctly. Don't log errors if operation cannot
be performed, just copy over unchanged pixel data.
Also only operate on valid events for demosaic() and contrast().
- DAVIS IMU: temperature readings on InvenSense 6050 were off by +1.53°C.
- CMake: fix linking on Windows.
- Ubuntu Packaging: build with correct GCC version on Ubuntu 14.04 Trusty.
- Logging: performance improvements; move expensive check (TLS) to
last position, ensure log-level is checked first in custom loggers.
- Fix various compiler warnings.
Release 3.0.0 - 23.10.2018
INCOMPATIBLE CHANGES
- frame_utils.h: caerFrameUtilsDemosaic() and caerFrameUtilsContrast()
functions have different signatures to allow for more flexibility in
where frames to be modified are sourced and stored. Also the type
enums changed to add Bayer->Gray conversion options.
- davis.h: support for new logic version 16:
- changed, slightly more efficient data encoding (IMU, APS).
- cleaned up device configuration, removed lots of unused debug options.
- changed APS FrameDelay to FrameInterval, to allow for setting time
between frames and thus control the frame rate directly.
- new hardware filter options for DVS: Background Activity, Refractory
Period, Skip Events, Polarity Suppress/Flatten, Region of Interest (ROI)
and single Pixel Filtering.
- full support for new iniVation devices: DAVIS346 Blue, DAVIS346 Red
and DAVIS346 Red Color.
This represents a new major release version, as it breaks the API
for DAVIS devices: the available configuration options (#defines in
davis.h) heavily change; the struct caer_davis_info and the
caerDavisROIConfigure() function also change incompatibly.
Please ensure all applications targeting DAVIS are recompiled!
NEW FEATURES
- C++ EventPackets: new function getHeaderPointerForCOutput() to get
the underlying C EventPacket pointer and ensure that memory ownership
is transferred to it, and not left with the C++ EventPacket.
- FrameEventPackets: new caerFrameEventPacketAllocateNumPixels() function
to allocate based on total number of pixels instead of X/Y lengths.
- davis.h: added new DAVIS_CONFIG_APS_FRAME_MODE configuration option.
- davis.h: added enums for easier IMU option handling (caer_davis_imu_types,
caer_davis_imu_invensense_accel_scale, caer_davis_imu_invensense_gyro_scale).
- CMake: automatically set CMAKE_INSTALL_PREFIX to /usr if nothing
was specified by user on Unix/Linux, this avoids installs to /usr/local
that often lead to the libraries not being found correctly.
- CMake: support for the ccache compiler cache added.
- CMake: install udev rules on Unix/Linux, to allow access to iniVation
devices. Default rules chmod 0666 the devices, using -DUDEV_SELINUX=1
installs a SELinux-enabled version for systems using TAG 'uaccess'.
- Ubuntu Packaging: libcaer is now split in two packages: libcaer and
libcaer-dev. It is now built using debhelper, and the static library
version is now also installed by libcaer-dev.
- Fedora Packaging: libcaer is now split in three packages: libacer,
libcaer-devel and libcaer-static. The static version is in the latter.
- examples/davis_text.cpp: added new example for writing data to a text file.
BUG FIXES
- Packaging: cmake dependency bumped to 2.8.12 in Ubuntu/Fedora packages.
- src/usb_utils.c: fixed firmware/logic update message to be clearer.
- src/container_generation.h: clearer message on dropped event packets.
Release 2.5.2 - 25.09.2018
INCOMPATIBLE CHANGES
- CMake: raised minimum CMake dependency to version 2.8.12, some
variables we use are only defined starting with this version.
It also corresponds to the version present in the oldest distribution we
support: Ubuntu 14.04 Trusty.
NEW FEATURES
- CMake: added CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
variables to enable easier cross-compilation setups.
- CMake: added CMake configuration files, so that CMake may find the library
using its own package detection system, in addition to the existing pkg-config
based detection. Thanks to Felix Schwitzer (see issue #72 for more details).
- devices/davis.h: added caerBiasCoarseFineFromCurrent() and caerBiasCoarseFineToCurrent()
functions to convert between coarse-fine bias values and the current they
represent (in picoAmpere). Also available in the C++ interface (issue #40).
- filters/dvs_noise.h: added statistics on number of filtered events separated
by ON/OFF polarity. Added caerFilterDVSNoiseStatsApply() function to only
gather statistics and not modify the given polarity event packet (read-only
mode). Also available in the C++ interface.
BUG FIXES
- src/usb_utils.c: check for exact firmware and logic versions.
- events/packetContainer.h: fix sizes used in caerEventPacketContainerCopyAllEvents()
and caerEventPacketContainerCopyValidEvents() to allocate new containers.
Release 2.5.0 - 17.07.2018
INCOMPATIBLE CHANGES
- davis.h: removed support for stereo microphones, this was never used in any
released devices, only for internal experiments on a limited prototype run.
- Events: event packet allocation functions are now in the various headers,
making it possible to create, use and destroy event packets and events by
just including the headers, without having to link to the full library.
CAER_EVENTS_HEADER_ONLY needs to be set before inclusion for this to fully
work, else there is a dependency on caerLog(), which is still in the library.
This is very useful for tools or network receivers. A re-compile of any
programs using these functions is required to avoid runtime linking errors.
- CMake: cleanup linked libraries, libm and librt are not part of the
default dependencies anymore, they need to be added manually to programs
that actually use them. Same goes for thread support, which is now only
exported as the 'CAER_C_THREAD_LIBS' CMake variable but not automatically
included anywhere.
NEW FEATURES
- Device Discovery: added capability of finding any accessible supported
devices on a system, getting information on them, and then opening them.
New header 'devices/device_discover.h' with functions caerDeviceDiscover()
and caerDeviceDiscoverOpen(), example provided in 'examples/device_discovery.c'.
C++ interface available in 'devices/device_discover.hpp', namespace is
'libcaer::devices::discover'.
- Error reporting: both caerDeviceOpen() and caerDeviceOpenSerial() now
set 'errno' on failure to provide more precise reasons for the failure,
error codes are available in the enum 'caer_error_codes'.
- log.h: new functions caerLogDisable(true/false) to turn off all logging
for a region of code (per-thread), and caerLogDisabled() to check current
status of logging. C++ interface available in 'libcaer::log'.
- C++ packetContainer.hpp: support construction of a new packet container
based on a C-style caerEventPacketContainer, with optional memory
ownership take-over for the contained packets.
- C++ utils.hpp: libcaer::events::utils::makeShared/Unique now support the
Matrix 4x4 event type too.
- C++ frame.hpp: new define LIBCAER_FRAMECPP_OPENCV_INSTALLED to enable
special getOpenCVMat() support independently of libcaer itself having
support for OpenCV.
- events/common.h: add new functions caerEventPacketGetDataSizeEvents()
and caerEventPacketGetSizeEvents() to get size of data part of an
event packet, disregarding capacity.
- Examples: added 'davis_simple_2cam.c' example for a two camera setup.
- device.h: CAER_SUPPORTED_DEVICES_NUMBER define is now public.
- eDVS: added 'serialPortName' and 'serialBaudRate' members to its info
structure, contents are OS-specific.
- eDVS: analyze startup message to confirm the presence of an eDVS device.
- eDSV: flush buffers on open to avoid possible garbage data from previous
open attempts to interfere with eDVS detection.
- USB: check both firmware and logic version always and notify users of
needed upgrades for both at the same time; this avoids multiple notify
and upgrade cycles if both change quickly or the user hasn't upgraded
in a long time.
- filters/dvs_noise.h: new filter module to reduce noise from the DVS
output, integrates a hot pixel filter (with learning), a background-
activity filter and a refractory period filter. C++ interface available.
New example 'davis_cvgui_filters.cpp' shows usage.
- devices/davis.h: new define DAVIS_CONFIG_DVS_FILTER_PIXEL_AUTO_TRAIN to
automatically discover abnormally active pixels (hot-pixels) in the camera
output and then filter them at the hardware level (FPGA/CPLD). This only
works on newer camera that support the hardware pixel filtering, it does
nothing on older systems and just returns 'false' on get/set.
- devices/davis.h: support new DAVIS346 with InvenSense MPU 9250, new IMU
options via defines DAVIS_CONFIG_IMU_GYRO_DLPF and DAVIS_CONFIG_IMU_ACCEL_DLPF.
- CMake: new flag ENABLE_STATIC available to enable static compilation
of libcaer in addition to shared library.
- Code is now formatted using clang-format.
BUG FIXES
- C++: add header inclusions for possibly missing types.
- C++ devices/serial.hpp: fix warning about shadowed variable, improve
error message on failure to open by adding serial baud-rate to message.
- C++ packetContainer.hpp: fix construction of event packets, resulting
size was incorrect due to wrong vector sizing at initialization.
- C++ events/common.hpp: shrink_to_fit() fails on empty packets, since
resize to zero is not allowed. Now correctly detects this case.
- Devices: documentation updates, fix typos and precise usage of
'deviceString' member in device info structures; it is only valid
during the life-time of the device!
- eDVS: name case changed to 'EDVS-4337' to follow firmware.
- eDVS: faster startup due to shorter delays.
- eDVS: request exclusive access to serial device on Unix (Linux/MacOSX),
this was already the default on Windows.
- Dynap-SE: delay after initial configuration extended from 1s to 4s,
some devices seem to need longer delays to start up properly.
- USB: better log messages on failure, reduce event handling timeout to
10ms from 1s for quicker response to shutdown requests.
- AutoExposure: debug log messages from the auto-exposure module now
respect the per-device log-level settings.
Release 2.4.2 - 23.03.2018
NEW FEATURES
- Install shared CMake file 'caer-base.cmake' to simplify common build
steps and checks used in libcaer, cAER and its modules.
- examples/davis_cvgui.cpp: improved example, checks for libcaer compiled
with proper OpenCV support (issue #55), shows events in a separate
window, compilation documented in README (PR #53).
BUG FIXES
- Improve Python examples, use numpby for better performance.
- C++ Devices: let users derive from device classes (PR #56).
- C++ EventPackets: fix iteration over empty packet, due to back()
incorrectly throwing an exception when size is zero because of the
usage of the -1 backwards lookup notation.
Release 2.4.0 - 05.12.2017
INCOMPATIBLE CHANGES
- DAVIS: require new firmware version 4 and logic version 9912.
- Dynap-SE: require new logic version 5.
- devices/dynapse.h: the chip IDs are now mapped to be 0,1,2,3 for
U0,U1,U2,U3 respectively, making them as easy to use and loop over
as the core IDs. The defines have been updated, so if you've been
properly using them, no change is needed other than a recompile.
- src/dynapse.c: spike events coming from a Dynap-SE's chip ID 0 (U0) do
now have a chip ID of 0, the same as the chip ID used to configure the
system, removing this small inconsistency. All usages of
'DYNAPSE_CONFIG_DYNAPSE_U0+1' must now remove the '+1', chip U0 is not
to be treated differently anymore in regards to its USB output chip ID.
- events/spike.h: caerSpikeEventGetX() and caerSpikeEventGetY() were
inverting the meaning of column/row, resulting in inconsistencies
when using those two functions in comparison to system configuration.
This has now been corrected, and the functions moved to devices/dynapse.h
with the new names of caerDynapseSpikeEventGetX/Y(), due to them being
specific to the architecture of the Dynap-SE neuromorphic processor.
Now both chips, cores and neurons, as interpreted through these functions,
are set out in row-major order (similar to computer vision).
- devices/dynapse.h: the caerDynapseWriteSram() function is being deprecated
in favour of its newer variant caerDynapseWriteSramN().
- devices/dynapse.h: removed define DYNAPSE_CONFIG_SRAMROW.
Use DYNAPSE_CONFIG_NUMNEURONS and DYNAPSE_CONFIG_NUMSRAM_NEU.
- devices/dynapse.h: removed defines DYNAPSE_MAX_USER_USB_PACKET_SIZE,
DYNAPSE_CONFIG_MAX_USB_TRANSFER and DYNAPSE_CONFIG_MAX_PARAM_SIZE.
Those are internal implementation details, and caerDynapseSendDataToUSB()
now accepts arbitrarily sized data to send, the user does not have to
divide it in chunks of a particular size anymore.
- devices/dynapse.h: improved and changed 'struct caer_bias_dynapse' to
reflect actual biasing of device correctly.
- devices/device.h: CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE's
default value has been changed to zero, disabling the size division of
packets by default. Packet size is now dictated, by default, only by
the time interval, with a value of 10 milliseconds.
NEW FEATURES
- Packaging: packages for Fedora, Debian and Gentoo Linux, as well as
MacOS X via Homebrew are now available for each new libcaer release.
For more information please visit:
https://inivation.com/support/software/libcaer/#automated-installation
- Python bindings: added bindings for Python 2/3 using SWIG. See
bindings/python_swig/ and bindings/python_swig/examples/ for examples.
NOTE: this needs a patched Swig, see 'https://github.com/swig/swig/pull/1166'.
- CMake: added support for generating RPM/DEB files via CPack, to
easily be able to package one's own build.
- DAVIS/Dynap-SE: added support for AER and Multiplexer statistics, to
examine number of events received, filtered and dropped.
- DAVIS: added support for hardware DVS Refractory Period filter on
newer FX3 based devices.
- DAVIS: added support for DVS ROI filtering.
- DAVIS: added support for APS Quad-ROI (up to four independent
regions of interest can be configured and enabled). The number of
supported ROI regions is defined with DAVIS_APS_ROI_REGIONS_MAX.
- devices/davis.h: added 'caerDavisROIConfigure()' function to atomically
and efficiently configure and enable ROI regions.
- devices/davis.h: expanded 'struct caer_davis_info' to account for the
above new features: 'dvsHasROIFilter', 'dvsHasStatistics' and 'muxHasStatistics'.
- devices/dynapse.h: expanded 'struct caer_dynapse_info' to account for
the above new features: 'aerHasStatistics' and 'muxHasStatistics'.
- devices/device.h: added 'caerDeviceConfigGet64()' to read 64-bit
configuration parameters, needed for statistics support.
- src/dynapse.c: the Dynap-SE caerDeviceSendDefaultConfig() function now
performs full initialization of the device and its chips. To reliably
work with the device, make sure to always call this before setting
your own custom configuration afterwards.
- devices/dynapse.h: added caerDynapseWriteSramN() function, uses global
neuron ID [0,1023] instead of core ID/neuron ID syntax. Arguments are
also directly compatible with caerDynapseGenerateSramBits().
- devices/dynapse.h: renamed define DYNAPSE_CONFIG_NUMCAM to
DYNAPSE_CONFIG_NUMCAM_NEU to better explain what it is.
- devices/dynapse.h: added caerBiasDynapseGenerate() and caerBiasDynapseParse()
functions to handle the improved 'struct caer_bias_dynapse' and
transform it to/from the bit-wise bias configuration representation.
- devices/dynapse.h: added caerDynapseGenerateSramBits() function to
generate SRAM configuration bits based on input arguments.
- devices/dynapse.h: added caerDynapseCoreXYToNeuronId() and
caerDynapseCoreAddrToNeuronId() functions to calculate chip global
neuron addresses (range [0,1023]).
- devices/dynapse.h: added caerDynapseSpikeEventFromXY() function to
have a reverse transformation to caerDynapseSpikeEventGetX/Y().
- devices/dynapse.h: added DYNAPSE_CONFIG_TAU2_SET, DYNAPSE_CONFIG_TAU1_RESET
and DYNAPSE_CONFIG_TAU2_RESET defines for caerDeviceConfigSet()
usage, to allow configuration of which neuron leakage bias to use.
- events/common.h: added caerGenericEventCopy() function to copy
events from one place in memory to another.
- events/*.h: added two new functions 'caerXXXEventPacketFromPacketHeader()'
and 'caerXXXEventPacketFromPacketHeaderConst()' to transform a packet
header pointer to the proper event packet pointer. This checks the
type, and is needed for proper bindings support.
- ringbuffer.h/hpp: the ring-buffer functions for producer-consumer
high-performance communication between two threads are now exposed
as part of the API, to allow re-use in other projects such as cAER.
- examples/dynapse_simple.c: added simple example for Dynap-SE access.
- examples/davis_cvgui.cpp: added example for converting frames to OpenCV
Mat and visualizing them using OpenCV's GUI.
- src/timestamps.h: added timestamp debugging code, to measure drift
between host and device. Only enabled in debug builds.
- src/davis.h: improved APS_DEBUG_FRAME support, now splits signal and
reset read for debugging over all ROI regions.
- New device: support for upcoming DAVIS128 Raspberry-Pi integration.
- events/matrix4x4.h: new event type for 4x4 Matrices.
- C++ support: added toString() for devices.
BUG FIXES
- devices/dynapse.h: major API documentation cleanup.
- devices/dynapse.h: several function parameters of integer type were
sized more correctly to reflect the range of their arguments.
- src/dynapse.c: DYNAPSE_CONFIG_CLEAR_CAM now clears all 64 CAMs for
each neuron in a chip, resulting in all CAMs being fully cleared.
- Dynap-SE: default low-power biases are now the same across all cores.
- DAVIS: improved default timings for APS, providing better image quality,
especially on new chips with internal ADC support.
- DAVIS/AutoExposure: fixed auto-exposure on FX3 devices, sometimes didn't
run due to rounding errors when correcting for clock skew between
parameters sent to the devices and parameters received back.
- events/frame.h: added documentation that using the assignment operator
to copy Frame events is not possible, caerGenericEventCopy() should
be used instead. The C++ variant deletes the assignment operator to
enforce this. This fixes issue #26.
- src/usb_utils.c: fixed shutdown callback not being called on MacOS X.
Also fixed possible dead-lock on USB transfer re-submit on Windows.
This fixes issue #32.
- src/date_exchange.h: prevent possible dead-lock inside dataExchangeGet(),
if signals are delivered always while not sleeping.
- portable_endian.h, portable_time.h: fixed stand-alone compilation.
- Fixed many code quality warnings by Sonarcloud.
- Travis-CI: fixed automatic test build issues on MacOS X.
Release 2.3.0 - 30.06.2017
INCOMPATIBLE CHANGES
- device.hpp: removed C++ dataStart() method with no arguments. As with
the C interface, only the variant with all notification arguments
remains. This is to ensure users think about the possible arguments,
especially with regards to the shutdown notification, which usually
should be defined and used.
- Dynap-SE: requires new logic version 4. Adds new features related
to DAVIS integration and spike generation/playback.
NEW FEATURES
- CI: test builds are now done by Travis-CI and results sent off to
Sonarcloud for code quality analysis.
- Examples: added example to show how to bias a DAVIS camera and
configure it for external AER control (davis_enable_aer.cpp).
- Examples: added shutdown notification handler to all examples.
BUG FIXES
- CMake: fix CMake 3.X support on MacOS X.
- caerDeviceDataGet(): now properly returns NULL in blocking mode when
the device goes away or stops sending any data, thus preventing a
dead-lock when using blocking mode with this function.
Release 2.2.0 - 13.06.2017
INCOMPATIBLE CHANGES
- frame_utils.h: the frame utilities API was simplified. Now only one
function for demosaic support respective contrast enhancement support
exists, with the type (standard or OpenCV) as an enumeration argument.
NEW FEATURES
- Added support for the eDVS4337 serial port device. Serial port devices
require the libserialport library (version 0.1.1 or newer), and as such
are optional; enable them by passing -DENABLE_SERIALDEV=1 to cmake.
The presence of this support can be verified with the libcaer.h define
LIBCAER_HAVE_SERIALDEV. When disabled, the API for serial devices is
still available, but will simply return false/NULL on any operation to
indicate missing support. For usage details, see 'examples/edvs_simple.c'.
To open the device, use the new caerDeviceOpenSerial() function with
'deviceType' set to 'CAER_DEVICE_EDVS'. The usual caerDeviceOpen()
will only work for supported USB devices. All other functions, such
as caerDeviceDataGet(), remain the same and work for all device types.
- DAVIS Examples: added example for frame parsing. Thanks to Jonathan Müller.
BUG FIXES
- DVS128/DAVIS/Dynap-se: fix log messages on failure to open device and
on successful shutdown.
- Dynap-se: calculate rate in caerDynapseWritePoissonSpikeRate() as float.
- IMU and PointXD Events: fix conversion of floating-point data to/from
little-endian in-memory format. On MacOS X, this resulted in a function
call with integer arguments and thus conversion to an integer value,
destroying the original floating-point value.
Release 2.1.5 - 03.06.2017
NEW FEATURES
- Dynap-se: added support for experimental DYNAPSE_CONFIG_POISSONSPIKEGEN
control (thanks to Carsten Nielsen).
BUG FIXES
- DAVIS FX3: require new logic revision 9910 for FX3 devices.
This fixes a bug in timestamp synchronization between multiple
cameras, and improves precision of some time related parameters,
namely APS_EXPOSURE, APS_FRAME_DELAY and USB_EARLY_PACKET_DELAY.
- DAVIS: fix incorrect extra log message when opening FX3 devices.
Release 2.1.4 - 30.05.2017
BUG FIXES
- C++: functions defined in C++ header files, such as happens in log or
utils, need the inline keyword to allow the linker to resolve symbols
properly. Fixes #14.
Release 2.1.3 - 28.05.2017
NEW FEATURES
- DAVIS: new device type CAER_DEVICE_DAVIS is now available, handles both
FX2 and FX3 board-based devices transparently.
BUG FIXES
- C++ devices/usb.hpp: add missing std::string include.
- Devices: log failure to put new event packet containers on ring-buffer for
consumption by clients with higher log-level of CAER_LOG_NOTICE.
Release 2.1.2 - 24.05.2017
BUG FIXES
- FrameUtils/C++ FrameEvent: fix detection of OpenCV presence.
- CMake: add dependency on libm for math.h functions.
Release 2.1.1 - 23.05.2017
BUG FIXES
- AutoExposure: disable debug logging.
- AutoExposure: get out of highly over/under-exposed situations much faster.
Release 2.1.0 - 22.05.2017
INCOMPATIBLE CHANGES
- usb.h: the 'dataShutdownNotify' callback of caerDeviceDataStart() will only
be called on exceptional shutdowns now. Normal shutdowns, such as those from
calling caerDeviceDataStop(), will not execute the callback anymore.
The documentation for caerDeviceDataStart() and caerDeviceDataStop() has been
updated accordingly.
- DAVIS: requires new logic revision 9880.
NEW FEATURES
- davis.h: added automatic exposure control, can be turned on/off with
the DAVIS_CONFIG_APS_AUTOEXPOSURE configuration parameter, defaults to off.
- EventPackets (C/C++): added caerEventPacketGetDataSize() and
caerEventPacketGetSize() functions to easily get packet size in bytes.
- C++ FrameEvent: added new function getOpenCVMat() to frame event, if
OpenCV is enabled. Returns a cv::Mat representing the frame's pixels, with
support for deep-const by cloning (can be disabled for efficiency).
- C++ Utils: enhanced makeUniqueFromCStruct() and makeSharedFromCStruct() to
also allow a 'takeMemoryOwnership' parameter that is forwarded to the event
packet constructors; it defaults to true like the constructors themselves.
- Devices (C/C++): added new CAER_HOST_CONFIG_LOG config module with parameter
CAER_HOST_CONFIG_LOG_LEVEL to set per-device log-level; by default the
log-level is equal to the current global one at device opening.
BUG FIXES
- libcaer.hpp: undefine log-level names to avoid name clashes.
- DAVIS: removed variable APS ADC Shift, is not used by any camera currently
offered, all have 10 bits precision.
- DAVIS: fix black APS pixels on very high illumination.
- DAVIS240: fix low range of APS pixels due to reduced ADC dynamic range.
- USB: libusb-based USB communication completely rewritten, now there is one
thread responsible for USB event handling only, while transfers are sent,
started/stopped etc. from other threads. This avoids possible dead-locks,
or other threads stealing the USB event handling, or new settings not being
sent to the device under certain load conditions. This required a small
change in the API, please see "INCOMPATIBLE CHANGES" above for more details.
Release 2.0.2 - 27.04.2017
NEW FEATURES
- Logging: added caerLogFileDescriptorsGetFirst(), caerLogFileDescriptorsGetSecond()
functions to get the two file descriptors where log messages go to.
- Logging: added caerLogVAFull() function to allow full control over all
parameters involved in logging, especially the log-level.
- Dynap-se: added support for experimental DYNAPSE_CONFIG_SPIKEGEN
control and improved DYNAPSE_CONFIG_SRAM control (thanks to Carsten Nielsen).
- Updated C++ examples to use C++ logging functions.
- Updated C++ interface to reflect above changes.
Release 2.0.1 - 16.03.2017
NOTE: this release is numbered 2.0.1 and not 2.0.0, because 2.0.0 was the
development version. To ensure people can depend on the now actually released
version, the version number was increased to 2.0.1 for the official release.
INCOMPATIBLE CHANGES
- The Frame Event format changed to have the origin (0, 0) in the upper left
corner of the image, following standard computer graphics conventions now.
Before it was in the lower left corner, following the OpenGL convention.
This was changed to more easily be able to benefit from the wealth of
computer graphics libraries available, such as OpenCV.
caerFrameEventGetPixelArrayCGFormat() has been removed as a consequence.
- The Polarity Event format has also changed its origin to the upper left corner.
- Device INFO structures have additional data members now, be sure to
recompile anything depending on those!
- CAER_HOST_CONFIG_PACKETS_MAX_*_SIZE and MAX_*_INTERVAL options have been
removed, the whole data packeting system is now much simpler with only
two configuration options to control it:
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_INTERVAL
These act at the event packet container level. See packetContainer.h
documentation on more information for how this works.
- Removed LIBCAER_LOG_NONE define from headers, it is now not possible
to completely suppress log output anymore.
- caerGenericEventGetEvent() has had its bounds restricted to [0,eventNumber[
instead of [0,eventCapacity[.
- Event packet copy functions have been renamed to:
- caerEventPacketCopy()
- caerEventPacketCopyOnlyEvents()
- caerEventPacketCopyOnlyValidEvents()
NEW FEATURES
- Support for the aiCTX DYNAP-SE neuromorphic chip was added.
- Added new event type Spike Event for spiking neurons.
- Added new event types Point1D, Point2D, Point3D and Point4D to
hold floating point data in multiple dimensions.
- New event packet functions were added:
- caerEventPacketEquals()
- caerEventPacketClear()
- caerEventPacketClean()
- caerEventPacketResize()
- caerEventPacketGrow()
- caerEventPacketAppend()
- Full native support for C++11 through header library (libcaercpp).
- Improved const-qualification of functions, to allow better compile
time checks for read-only data. A GetEventConst() function was added
to each event type as part of this, to get read-only events.
- Const, reverse and const-reverse iterators were added to all event types.
- davis.h: added support for stereo microphones on DAVIS346mini.
- davis.h: added support for extra signal detectors.
- network.h: added header with functions to help parse AEDAT 3.X
network stream headers.
- frame.h: added support for more color filter configurations.
- packetContainer.h: better documentation, now tracks lowest and highest
timestamps contained, as well as number of total and valid events.
- packetContainer.h: added caerEventPacketContainerUpdateStatistics() to
update above statistics. Automatically called on each addition or
removal of an event packet from the container.
- packetContainer.h: added caerEventPacketContainerFindEventPacketByType*(),
caerEventPacketContainerCopyAllEvents() and caerEventPacketContainerCopyValidEvents()
functions to search for event packets by type and to make deep-copies of them.
- special.h: added new Special Event types, to support extra signal detection
schemes and add Frame Event related timing information.
- special.h: added caerSpecialEventPacketFindEventByType*() and
caerSpecialEventPacketFindValidEventByType*() functions to search for
a specified type of special event.
- libcaer.h: added LIBCAER_VERSION, LIBCAER_NAME_STRING,
LIBCAER_VERSION_STRING and LIBCAER_HAVE_OPENCV defines.
- log.h: added caerLogVA() function to pass va_list arguments directly.
Release 1.0.3 - 28.03.2016
INCOMPATIBLE CHANGES
- davis_fx2.c: removed specific FX2 code, now uses same backend as FX3
for sending all configuration values, due to new firmware version 3
for FX2 DAVIS small-board cameras. A firmware update is required,
please follow the instructions at https://inivation.com/support/software/reflashing/.
NEW FEATURES
- frame.h: add function caerFrameEventGetPixelArrayCGFormat() to
Frame Event, allows to get a copy of the pixels array in the
standard computer graphics format (pixel (0, 0) in upper left
corner) efficently.
- davis.h: add DAVIS_CONFIG_APS_ADC_TEST_MODE parameter to APS module.
Release 1.0.2 - 08.01.2016
IMCOMPATIBLE CHANGES
- frame.h: rename channel number to color channels and add color
filter information, to better specify the information needed
to reconstruct color frames. The 'enum caer_frame_event_color_channels'
and 'enum caer_frame_event_color_filter' hold the possible values.
This change is backwards-compatible with older frame format!
- davis.h, dvs128.h: changed info data structure's integers to be
signed for better cross-language compatibility. Also 'deviceID'
can now be compared directly with 'sourceID' from event packets.
- davis.h: changed type of 'apsColorFilter' in info data structure
to take advantage of new 'enum caer_frame_event_color_filter'.
NEW FEATURES
- common.h: add generic functions for event packet copying, with
support for packet size reductions (copy only valid).
- libcaer.h: add generic clear, get and set functions for bitfields,
and use them in all the event functions to avoid errors.
- config.h: add device configuration event type, for tracking
of device configuration changes in the event stream.
- log.c: add timezone information to log message time information.
- dvs128_simple.cpp, davis_simple.cpp: add C++11 example variants.
- Enable more Clang compiler warnings.
BUG FIXES
- davis_common.c: only update the ROI size information if ROI
updates actually came in from the device.
- Fix and improve documentation, especially for the frame event.
- Fix off-by-one in event's GetEvent() function's warning log message.
- device.c: mark global function pointer arrays static.
- common.h, frame.h: fix compilation of inline functions in
strict C++11 mode.
Release 1.0.1 - 06.11.2015
INCOMPATIBLE CHANGES
- Requires firmware version 2 and logic revision 7449.
- usb.h: improved caerDeviceDataStart() API to also allow for
notification of data acquisition shutdown, to be able to react
to abnormal shutdown cases, like when a device is unplugged.
- frame.h: changed in-memory format for easier handling and compatibility
with the other event formats (all-in-one memory block).
- davis.h: rename DAVIS240 APSOVERFLOWLEVEL to APSOVERFLOWLEVELBN.
NEW FEATURES
- Headers are C++ compatible and stand-alone now.
- MacOS X support.
- Added pkg-config file for library.
- Full API documentation (see docs/ for PDF).
- Various cmake/build improvements. Support out-of-tree builds.
- Add iterator macros for EventPackets.
- frame.h: added ROI region ID tracking, as well as ROI position.
Added caerFrameEventGetExposureLength() and caerFrameEventGetTimestamp(),
which is defined as the median of the exposure times.
Added caerFrameEventPacketGetPixelsSize() and caerFrameEventPacketGetPixelsMaxIndex()
for EventPacket-level size information.
Added caerFrameEventGetPixelsSize() and caerFrameEventGetPixelsMaxIndex()
for Event-level size information.
- log.h: added caerLogFileDescriptorsSet() to allow logging to
up to two different file descriptors (defaults to STDERR only).
- davis.h: added chipID check macros.
- davis.h: added DAVIS_CONFIG_APS_SNAPSHOT to take one frame snapshots.
- dvs128.h: added DVS128_CONFIG_DVS_TS_MASTER to select timestamp
master or slave behavior (timestamp synchronization).
- davis_common.c: added support for outputting only reset read or
signal read frames, for debugging purposes.
- c11threads_posix.h: C11-compatible thread abstraction, for
both Linux and MacOS X, based on POSIX Threads.
BUG FIXES
- Relaxed atomic operations memory constraints for better
performance on weakly-ordered architectures (like ARM).
- log.c: call tzset() before localtime_r(), as per standard.
- davis_common.c: improved Region of Interest support (APS).
- davis_fx2.c: keep GlobalShutter flag correctly in-sync.
- davis_fx3.c: fixed support for new FX3 devices.
- packetContainer.h: handle container being NULL by returning NULL.
Release 1.0.0 - 02.10.2015
- Initial release.
Wiki Tutorials
This package does not provide any links to tutorials in it's rosindex metadata.
You can check on the ROS Wiki Tutorials page for the package.
Package Dependencies
No dependencies on ROS packages.
System Dependencies
Dependant Packages
No known dependants.
Launch files
No launch files found
Messages
No message files found.
Services
No service files found
Plugins
No plugins found.
Recent questions tagged libcaer at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | BSD-2 |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-event-camera/libcaer.git |
VCS Type | git |
VCS Version | ros_event_camera |
Last Updated | 2024-01-08 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
library for event based sensors
Additional Links
No additional links.
Maintainers
- Bernd Pfrommer
Authors
No additional authors.
WINDOWS BUILD INSTRUCTIONS
==========================
We support building libcaer on the Windows platform by using the MinGW32/64 compilers
and the MSYS2 environment. The result is a static and a dynamic DLL, as well as the
appropriate header files, so that libcaer can be used in MinGW itself.
Visual Studio and the MSVC compiler are not supported out-of-the-box right now, to use
a DLL compiled by MinGW additional steps are necessary: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
Following are detailed step-by-step instructions to install the required
components and get everything building, we use MinGW64 here for the
64-bit Windows platform, if you want to build for 32-bit Windows, just replace all
mentions of 'x86_64' with 'i686'. Whenever you want to install a package, use
the MSYS2 shell, while to build code, use the MinGW32/64 shells!
1) Get MSYS2 from https://msys2.github.io/ and download the appropriate installer.
Follow the instructions to install the system and update its packages. During the
system package upgrade, ignore any heap mismatch errors, and follow what the last
warning tells you to do (close the shell). The base system upgrade seems to break
the Start Menu shortcuts, so from now on start MSYS2 by going to its directory
'C:\msys64\' and double-clicking on 'msys2_shell.cmd'.
2) Install MinGW GCC: pacman -S mingw-w64-x86_64-gcc
3) Install Make/CMake: pacman -S make mingw-w64-x86_64-cmake
4) Install pkg-config: pacman -S mingw-w64-x86_64-pkg-config
5) Install libusb: pacman -S mingw-w64-x86_64-libusb
6) Place the libcaer source in a location easily accessible to MSYS2. We usually
put the source code into 'C:\msys64\home\libcaer\' and use TortoiseGit
(https://tortoisegit.org/) or git from the MSYS2 shell (pacman -S git) to get it.
7) Switch to the MinGW build shell, double-click on 'mingw64.exe' in 'C:\msys64\'.
8) Switch to the libcaer checkout directory: cd /home/libcaer/
9) Configure, run CMake: cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw64 .
10) Build, run Make: make
11) Install: make install
Congratulations, you now have a working libcaer on Windows! The output from that
last 'make install' will have told you exactly where all the DLLs and header
files are located on the file-system. You can now try building one of the
examples in the examples/ directory to verify functionality.
CHANGELOG
Release 3.3.15 - 07.03.2023
BUG FIXES
- eDVS: fix device discovery. Thanks to Benjamin Ward-Cherrier.
- Windows: control MSVC build with BUILD_CONFIG_VCPKG flag.
- Devices: fix compiler warnings.
- Removed obsolete DAVIS_RPI device.
Release 3.3.14 - 25.03.2022
NEW FEATURES
- Full native MSVC/Windows build support.
BUG FIXES
- davis_cvgui example: fix incorrect biasing and APS frame settings.
- USB: fix firmware version check for DVXplorer Mini.
Release 3.3.13 - 25.02.2022
NEW FEATURES
- DVXplorer (Mini): add control of readout timing parameters, readout restart.
Release 3.3.12 - 12.11.2021
BUG FIXES
- DVXplorer Mini: fix inverted polarity.
- dvx_bw_test example: fix length of time interval for
bandwidth estimation.
- Fedora/Ubuntu: fix packaging, use at least GCC-10 to compile.
Release 3.3.11 - 16.07.2021
NEW FEATURES
- Native MacOS ARM (M1) builds, Big Sur compatibility.
- Ubuntu 21.04 Hirsute support.
- Fedora 34 support.
- Ubuntu 16.04 Xenial is no longer supported!
- Cameras: added support for new DVXplorer Mini camera model.
Release 3.3.10 - 16.04.2021
BUG FIXES
- USB: when serial number cannot be determined, use all bits from
USB bus-number/dev-address to construct the fake name (issue #123).
- Examples Device Discovery: add support for DVXplorer and EVK.
Serial Number in Device Discovery can only be used if the
device could be opened correctly (deviceErrorOpen == false).
Release 3.3.9 - 21.12.2020
BUG FIXES
- DVXplorer: fix mapping of events when dual-binning is
enabled (issue #119).
Release 3.3.8 - 15.09.2020
NEW FEATURES
- Linux Udev: simplify udev rules into one file (issue #114).
BUG FIXES
- Samsung EVK: allow multiple EVKs to be selected by a temporary
serial number generated from USB bus addresses (issue #113).
- Samsung EVK: more robust parser for 231Y chip data (issue #115).
Release 3.3.7 - 07.05.2020
BUG FIXES
- Samsung EVK: implement full 64bit timestamps (issue #99).
Release 3.3.6 - 18.04.2020
NEW FEATURES
- MacOS X: set default CMake destination to /usr/local on Apple systems.
- Ubuntu: support for release 20.04 LTS 'Focal Fossa'.
BUG FIXES
- USB: do not claim device interface on discovery, not needed for
simple info requests on control ep0 (issue dv-gui#291).
- Samsung EVK: enable USB transfer timeout (set to 500us), so that
even on low event rates, data keeps coming in with low latency.
Release 3.3.5 - 12.03.2020
INCOMPATIBLE CHANGES
- DVXplorer (Lite): firmware update to version 8.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
BUG FIXES
- USB: improve detection of device serial number.
- USB: optimize setting number/size of USB transfers.
Release 3.3.4 - 04.03.2020
INCOMPATIBLE CHANGES
- DVXplorer: firmware update to version 7.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
NEW FEATURES
- Cameras: added support for DVXplorer Lite camera.
- USB: added support for libusb logging.
Release 3.3.3 - 01.02.2020
BUG FIXES
- Samsung EVK: fix possible non-monotonic timestamp at startup.
- DVXplorer: fix crop start/end address inversion.
Release 3.3.2 - 24.01.2020
BUG FIXES
- DVXplorer/DVS132S: fix IMU accel/gyro scale detection.
- Samsung EVK: fix non-monotonic timestamps when a reference timestamp
event is lost due to high USB traffic.
Release 3.3.1 - 17.01.2020
NEW FEATURES
- Support for new DVXplorer and Samsung EVK devices added.
Release 3.3.0 - 24.12.2019
NEW FEATURES
- Support for mini-eDVS serial device added to eDVS code.
BUG FIXES
- eDVS: fix inverted event polarity.
Release 3.2.2 - 15.07.2019
BUG FIXES
- CMake: fix compatibility with older pre-6.0 GCCs (issue #93).
- CMake: drop required version to 3.10 (Ubuntu Bionic).
- USB devices: better error messages on failure to open a device,
better distinction of generic 'any-camera' case and specific
USB ports or serial numbers.
- eDVS: fix strncpy() compiler warning, ensure serial number is
always NULL terminated.
- DAVIS: fix APS frame color interpolation for color cameras
when ROI is enabled (issue #94).
Release 3.2.0 - 20.05.2019
INCOMPATIBLE CHANGES
- DAVIS firmware and logic update: DAVIS FX3 firmware v6 and logic v18.1.
Fixes a possible USB data corruption bug in some rare cases, especially
on MacOS X systems. Improves quality of APS frames.
- All devices: dataStart() stops all producers and resets all buffers,
ensuring no stale data remains. Producers must be enabled only after
having called dataStart(), it not using the START_PRODUCERS feature.
- CMake: version 3.12.0 or newer of CMake is now required.
- Ubuntu: dropped support for Trusty 14.04.
- DVS128: renamed logicVersion to firmwareVersion in dvs128_info struct.
- Python bindings: removed experimental Python SWIG bindings.
Please use https://github.com/duguyue100/pyaer/ instead (issue #65).
- CMake: installed caer-base.cmake dropped its argument. Use standard
CMake facilities to select the needed C/C++ standard version.
- CMake: caer-base.cmake does not provide the following variables anymore:
- CM_BUILD_DIR (not useful)
- CM_SHARE_DIR (already known when accessing the file)
- CAER_C_THREAD_LIBS (renamed to SYSTEM_THREAD_LIBS)
- CAER_MODULES_DIR (not part of libcaer)
- CMake: renamed CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
to USER_LOCAL_INCDIRS/USER_LOCAL_LIBDIRS/USER_LOCAL_PREFIX.
- Events: removed unused event types: Config, Ear, Matrix4x4,
Point1D, Point2D, Point3D, Point4D and Sample (issue #85).
NEW FEATURES
- Devices: added support for the DVS132S test chip in the C/C++ API.
- CMake: added UDEV_INSTALL switch to disable udev rules installation (issue #82).
- CMake: search for and support OpenCV 4 (issues #83, #90).
- GCC/CMake: add more compiler warnings.
- C++ ringbuffer.hpp: add comparison operators.
- Examples: compile and install examples with -DEXAMPLES_INSTALL=1.
- frame_utils.h: added caerFrameUtilsPixelColor() function (issue #89).
- Device discovery: firmwareVersion is always defined for USB devices
during device discovery. SerialPortName and SerialBaudRate are always
defined for eDVS devices (issue #88).
BUG FIXES
- CMake: ensure LIBCAER_HAVE_SERIALDEV and LIBCAER_HAVE_OPENCV defines
in libcaer.h are always properly defined to be 0 or 1.
- device_discovery.c example: fix compilation with new struct davis_info.
- Examples: fix incorrect defines.
Release 3.1.0 - 27.11.2018
INCOMPATIBLE CHANGES
- DAVIS: require firmware version 5 and logic version 18. Fixes issues with
IMU Run Controls, fixes corrupt data in DAVIS BLUE 346, enables IMU on
DAVIS RED 346.
- Logging: caerLogVAFull() API has been simplified, the two file descriptor
arguments have been removed, use the proper caerLogFileDescriptorsSet()
API to set them when needed.
NEW FEATURES
- Logging: added caerLogCallbackSet() and caerLogCallbackGet() functions
to set/get a global callback function to be executed on every caerLog()
logging call, the log message and its size are passed to the callback.
BUG FIXES
- C++ API frame.hpp: fix demosaic(), set number of (valid) events in
resulting packet correctly. Don't log errors if operation cannot
be performed, just copy over unchanged pixel data.
Also only operate on valid events for demosaic() and contrast().
- DAVIS IMU: temperature readings on InvenSense 6050 were off by +1.53°C.
- CMake: fix linking on Windows.
- Ubuntu Packaging: build with correct GCC version on Ubuntu 14.04 Trusty.
- Logging: performance improvements; move expensive check (TLS) to
last position, ensure log-level is checked first in custom loggers.
- Fix various compiler warnings.
Release 3.0.0 - 23.10.2018
INCOMPATIBLE CHANGES
- frame_utils.h: caerFrameUtilsDemosaic() and caerFrameUtilsContrast()
functions have different signatures to allow for more flexibility in
where frames to be modified are sourced and stored. Also the type
enums changed to add Bayer->Gray conversion options.
- davis.h: support for new logic version 16:
- changed, slightly more efficient data encoding (IMU, APS).
- cleaned up device configuration, removed lots of unused debug options.
- changed APS FrameDelay to FrameInterval, to allow for setting time
between frames and thus control the frame rate directly.
- new hardware filter options for DVS: Background Activity, Refractory
Period, Skip Events, Polarity Suppress/Flatten, Region of Interest (ROI)
and single Pixel Filtering.
- full support for new iniVation devices: DAVIS346 Blue, DAVIS346 Red
and DAVIS346 Red Color.
This represents a new major release version, as it breaks the API
for DAVIS devices: the available configuration options (#defines in
davis.h) heavily change; the struct caer_davis_info and the
caerDavisROIConfigure() function also change incompatibly.
Please ensure all applications targeting DAVIS are recompiled!
NEW FEATURES
- C++ EventPackets: new function getHeaderPointerForCOutput() to get
the underlying C EventPacket pointer and ensure that memory ownership
is transferred to it, and not left with the C++ EventPacket.
- FrameEventPackets: new caerFrameEventPacketAllocateNumPixels() function
to allocate based on total number of pixels instead of X/Y lengths.
- davis.h: added new DAVIS_CONFIG_APS_FRAME_MODE configuration option.
- davis.h: added enums for easier IMU option handling (caer_davis_imu_types,
caer_davis_imu_invensense_accel_scale, caer_davis_imu_invensense_gyro_scale).
- CMake: automatically set CMAKE_INSTALL_PREFIX to /usr if nothing
was specified by user on Unix/Linux, this avoids installs to /usr/local
that often lead to the libraries not being found correctly.
- CMake: support for the ccache compiler cache added.
- CMake: install udev rules on Unix/Linux, to allow access to iniVation
devices. Default rules chmod 0666 the devices, using -DUDEV_SELINUX=1
installs a SELinux-enabled version for systems using TAG 'uaccess'.
- Ubuntu Packaging: libcaer is now split in two packages: libcaer and
libcaer-dev. It is now built using debhelper, and the static library
version is now also installed by libcaer-dev.
- Fedora Packaging: libcaer is now split in three packages: libacer,
libcaer-devel and libcaer-static. The static version is in the latter.
- examples/davis_text.cpp: added new example for writing data to a text file.
BUG FIXES
- Packaging: cmake dependency bumped to 2.8.12 in Ubuntu/Fedora packages.
- src/usb_utils.c: fixed firmware/logic update message to be clearer.
- src/container_generation.h: clearer message on dropped event packets.
Release 2.5.2 - 25.09.2018
INCOMPATIBLE CHANGES
- CMake: raised minimum CMake dependency to version 2.8.12, some
variables we use are only defined starting with this version.
It also corresponds to the version present in the oldest distribution we
support: Ubuntu 14.04 Trusty.
NEW FEATURES
- CMake: added CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
variables to enable easier cross-compilation setups.
- CMake: added CMake configuration files, so that CMake may find the library
using its own package detection system, in addition to the existing pkg-config
based detection. Thanks to Felix Schwitzer (see issue #72 for more details).
- devices/davis.h: added caerBiasCoarseFineFromCurrent() and caerBiasCoarseFineToCurrent()
functions to convert between coarse-fine bias values and the current they
represent (in picoAmpere). Also available in the C++ interface (issue #40).
- filters/dvs_noise.h: added statistics on number of filtered events separated
by ON/OFF polarity. Added caerFilterDVSNoiseStatsApply() function to only
gather statistics and not modify the given polarity event packet (read-only
mode). Also available in the C++ interface.
BUG FIXES
- src/usb_utils.c: check for exact firmware and logic versions.
- events/packetContainer.h: fix sizes used in caerEventPacketContainerCopyAllEvents()
and caerEventPacketContainerCopyValidEvents() to allocate new containers.
Release 2.5.0 - 17.07.2018
INCOMPATIBLE CHANGES
- davis.h: removed support for stereo microphones, this was never used in any
released devices, only for internal experiments on a limited prototype run.
- Events: event packet allocation functions are now in the various headers,
making it possible to create, use and destroy event packets and events by
just including the headers, without having to link to the full library.
CAER_EVENTS_HEADER_ONLY needs to be set before inclusion for this to fully
work, else there is a dependency on caerLog(), which is still in the library.
This is very useful for tools or network receivers. A re-compile of any
programs using these functions is required to avoid runtime linking errors.
- CMake: cleanup linked libraries, libm and librt are not part of the
default dependencies anymore, they need to be added manually to programs
that actually use them. Same goes for thread support, which is now only
exported as the 'CAER_C_THREAD_LIBS' CMake variable but not automatically
included anywhere.
NEW FEATURES
- Device Discovery: added capability of finding any accessible supported
devices on a system, getting information on them, and then opening them.
New header 'devices/device_discover.h' with functions caerDeviceDiscover()
and caerDeviceDiscoverOpen(), example provided in 'examples/device_discovery.c'.
C++ interface available in 'devices/device_discover.hpp', namespace is
'libcaer::devices::discover'.
- Error reporting: both caerDeviceOpen() and caerDeviceOpenSerial() now
set 'errno' on failure to provide more precise reasons for the failure,
error codes are available in the enum 'caer_error_codes'.
- log.h: new functions caerLogDisable(true/false) to turn off all logging
for a region of code (per-thread), and caerLogDisabled() to check current
status of logging. C++ interface available in 'libcaer::log'.
- C++ packetContainer.hpp: support construction of a new packet container
based on a C-style caerEventPacketContainer, with optional memory
ownership take-over for the contained packets.
- C++ utils.hpp: libcaer::events::utils::makeShared/Unique now support the
Matrix 4x4 event type too.
- C++ frame.hpp: new define LIBCAER_FRAMECPP_OPENCV_INSTALLED to enable
special getOpenCVMat() support independently of libcaer itself having
support for OpenCV.
- events/common.h: add new functions caerEventPacketGetDataSizeEvents()
and caerEventPacketGetSizeEvents() to get size of data part of an
event packet, disregarding capacity.
- Examples: added 'davis_simple_2cam.c' example for a two camera setup.
- device.h: CAER_SUPPORTED_DEVICES_NUMBER define is now public.
- eDVS: added 'serialPortName' and 'serialBaudRate' members to its info
structure, contents are OS-specific.
- eDVS: analyze startup message to confirm the presence of an eDVS device.
- eDSV: flush buffers on open to avoid possible garbage data from previous
open attempts to interfere with eDVS detection.
- USB: check both firmware and logic version always and notify users of
needed upgrades for both at the same time; this avoids multiple notify
and upgrade cycles if both change quickly or the user hasn't upgraded
in a long time.
- filters/dvs_noise.h: new filter module to reduce noise from the DVS
output, integrates a hot pixel filter (with learning), a background-
activity filter and a refractory period filter. C++ interface available.
New example 'davis_cvgui_filters.cpp' shows usage.
- devices/davis.h: new define DAVIS_CONFIG_DVS_FILTER_PIXEL_AUTO_TRAIN to
automatically discover abnormally active pixels (hot-pixels) in the camera
output and then filter them at the hardware level (FPGA/CPLD). This only
works on newer camera that support the hardware pixel filtering, it does
nothing on older systems and just returns 'false' on get/set.
- devices/davis.h: support new DAVIS346 with InvenSense MPU 9250, new IMU
options via defines DAVIS_CONFIG_IMU_GYRO_DLPF and DAVIS_CONFIG_IMU_ACCEL_DLPF.
- CMake: new flag ENABLE_STATIC available to enable static compilation
of libcaer in addition to shared library.
- Code is now formatted using clang-format.
BUG FIXES
- C++: add header inclusions for possibly missing types.
- C++ devices/serial.hpp: fix warning about shadowed variable, improve
error message on failure to open by adding serial baud-rate to message.
- C++ packetContainer.hpp: fix construction of event packets, resulting
size was incorrect due to wrong vector sizing at initialization.
- C++ events/common.hpp: shrink_to_fit() fails on empty packets, since
resize to zero is not allowed. Now correctly detects this case.
- Devices: documentation updates, fix typos and precise usage of
'deviceString' member in device info structures; it is only valid
during the life-time of the device!
- eDVS: name case changed to 'EDVS-4337' to follow firmware.
- eDVS: faster startup due to shorter delays.
- eDVS: request exclusive access to serial device on Unix (Linux/MacOSX),
this was already the default on Windows.
- Dynap-SE: delay after initial configuration extended from 1s to 4s,
some devices seem to need longer delays to start up properly.
- USB: better log messages on failure, reduce event handling timeout to
10ms from 1s for quicker response to shutdown requests.
- AutoExposure: debug log messages from the auto-exposure module now
respect the per-device log-level settings.
Release 2.4.2 - 23.03.2018
NEW FEATURES
- Install shared CMake file 'caer-base.cmake' to simplify common build
steps and checks used in libcaer, cAER and its modules.
- examples/davis_cvgui.cpp: improved example, checks for libcaer compiled
with proper OpenCV support (issue #55), shows events in a separate
window, compilation documented in README (PR #53).
BUG FIXES
- Improve Python examples, use numpby for better performance.
- C++ Devices: let users derive from device classes (PR #56).
- C++ EventPackets: fix iteration over empty packet, due to back()
incorrectly throwing an exception when size is zero because of the
usage of the -1 backwards lookup notation.
Release 2.4.0 - 05.12.2017
INCOMPATIBLE CHANGES
- DAVIS: require new firmware version 4 and logic version 9912.
- Dynap-SE: require new logic version 5.
- devices/dynapse.h: the chip IDs are now mapped to be 0,1,2,3 for
U0,U1,U2,U3 respectively, making them as easy to use and loop over
as the core IDs. The defines have been updated, so if you've been
properly using them, no change is needed other than a recompile.
- src/dynapse.c: spike events coming from a Dynap-SE's chip ID 0 (U0) do
now have a chip ID of 0, the same as the chip ID used to configure the
system, removing this small inconsistency. All usages of
'DYNAPSE_CONFIG_DYNAPSE_U0+1' must now remove the '+1', chip U0 is not
to be treated differently anymore in regards to its USB output chip ID.
- events/spike.h: caerSpikeEventGetX() and caerSpikeEventGetY() were
inverting the meaning of column/row, resulting in inconsistencies
when using those two functions in comparison to system configuration.
This has now been corrected, and the functions moved to devices/dynapse.h
with the new names of caerDynapseSpikeEventGetX/Y(), due to them being
specific to the architecture of the Dynap-SE neuromorphic processor.
Now both chips, cores and neurons, as interpreted through these functions,
are set out in row-major order (similar to computer vision).
- devices/dynapse.h: the caerDynapseWriteSram() function is being deprecated
in favour of its newer variant caerDynapseWriteSramN().
- devices/dynapse.h: removed define DYNAPSE_CONFIG_SRAMROW.
Use DYNAPSE_CONFIG_NUMNEURONS and DYNAPSE_CONFIG_NUMSRAM_NEU.
- devices/dynapse.h: removed defines DYNAPSE_MAX_USER_USB_PACKET_SIZE,
DYNAPSE_CONFIG_MAX_USB_TRANSFER and DYNAPSE_CONFIG_MAX_PARAM_SIZE.
Those are internal implementation details, and caerDynapseSendDataToUSB()
now accepts arbitrarily sized data to send, the user does not have to
divide it in chunks of a particular size anymore.
- devices/dynapse.h: improved and changed 'struct caer_bias_dynapse' to
reflect actual biasing of device correctly.
- devices/device.h: CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE's
default value has been changed to zero, disabling the size division of
packets by default. Packet size is now dictated, by default, only by
the time interval, with a value of 10 milliseconds.
NEW FEATURES
- Packaging: packages for Fedora, Debian and Gentoo Linux, as well as
MacOS X via Homebrew are now available for each new libcaer release.
For more information please visit:
https://inivation.com/support/software/libcaer/#automated-installation
- Python bindings: added bindings for Python 2/3 using SWIG. See
bindings/python_swig/ and bindings/python_swig/examples/ for examples.
NOTE: this needs a patched Swig, see 'https://github.com/swig/swig/pull/1166'.
- CMake: added support for generating RPM/DEB files via CPack, to
easily be able to package one's own build.
- DAVIS/Dynap-SE: added support for AER and Multiplexer statistics, to
examine number of events received, filtered and dropped.
- DAVIS: added support for hardware DVS Refractory Period filter on
newer FX3 based devices.
- DAVIS: added support for DVS ROI filtering.
- DAVIS: added support for APS Quad-ROI (up to four independent
regions of interest can be configured and enabled). The number of
supported ROI regions is defined with DAVIS_APS_ROI_REGIONS_MAX.
- devices/davis.h: added 'caerDavisROIConfigure()' function to atomically
and efficiently configure and enable ROI regions.
- devices/davis.h: expanded 'struct caer_davis_info' to account for the
above new features: 'dvsHasROIFilter', 'dvsHasStatistics' and 'muxHasStatistics'.
- devices/dynapse.h: expanded 'struct caer_dynapse_info' to account for
the above new features: 'aerHasStatistics' and 'muxHasStatistics'.
- devices/device.h: added 'caerDeviceConfigGet64()' to read 64-bit
configuration parameters, needed for statistics support.
- src/dynapse.c: the Dynap-SE caerDeviceSendDefaultConfig() function now
performs full initialization of the device and its chips. To reliably
work with the device, make sure to always call this before setting
your own custom configuration afterwards.
- devices/dynapse.h: added caerDynapseWriteSramN() function, uses global
neuron ID [0,1023] instead of core ID/neuron ID syntax. Arguments are
also directly compatible with caerDynapseGenerateSramBits().
- devices/dynapse.h: renamed define DYNAPSE_CONFIG_NUMCAM to
DYNAPSE_CONFIG_NUMCAM_NEU to better explain what it is.
- devices/dynapse.h: added caerBiasDynapseGenerate() and caerBiasDynapseParse()
functions to handle the improved 'struct caer_bias_dynapse' and
transform it to/from the bit-wise bias configuration representation.
- devices/dynapse.h: added caerDynapseGenerateSramBits() function to
generate SRAM configuration bits based on input arguments.
- devices/dynapse.h: added caerDynapseCoreXYToNeuronId() and
caerDynapseCoreAddrToNeuronId() functions to calculate chip global
neuron addresses (range [0,1023]).
- devices/dynapse.h: added caerDynapseSpikeEventFromXY() function to
have a reverse transformation to caerDynapseSpikeEventGetX/Y().
- devices/dynapse.h: added DYNAPSE_CONFIG_TAU2_SET, DYNAPSE_CONFIG_TAU1_RESET
and DYNAPSE_CONFIG_TAU2_RESET defines for caerDeviceConfigSet()
usage, to allow configuration of which neuron leakage bias to use.
- events/common.h: added caerGenericEventCopy() function to copy
events from one place in memory to another.
- events/*.h: added two new functions 'caerXXXEventPacketFromPacketHeader()'
and 'caerXXXEventPacketFromPacketHeaderConst()' to transform a packet
header pointer to the proper event packet pointer. This checks the
type, and is needed for proper bindings support.
- ringbuffer.h/hpp: the ring-buffer functions for producer-consumer
high-performance communication between two threads are now exposed
as part of the API, to allow re-use in other projects such as cAER.
- examples/dynapse_simple.c: added simple example for Dynap-SE access.
- examples/davis_cvgui.cpp: added example for converting frames to OpenCV
Mat and visualizing them using OpenCV's GUI.
- src/timestamps.h: added timestamp debugging code, to measure drift
between host and device. Only enabled in debug builds.
- src/davis.h: improved APS_DEBUG_FRAME support, now splits signal and
reset read for debugging over all ROI regions.
- New device: support for upcoming DAVIS128 Raspberry-Pi integration.
- events/matrix4x4.h: new event type for 4x4 Matrices.
- C++ support: added toString() for devices.
BUG FIXES
- devices/dynapse.h: major API documentation cleanup.
- devices/dynapse.h: several function parameters of integer type were
sized more correctly to reflect the range of their arguments.
- src/dynapse.c: DYNAPSE_CONFIG_CLEAR_CAM now clears all 64 CAMs for
each neuron in a chip, resulting in all CAMs being fully cleared.
- Dynap-SE: default low-power biases are now the same across all cores.
- DAVIS: improved default timings for APS, providing better image quality,
especially on new chips with internal ADC support.
- DAVIS/AutoExposure: fixed auto-exposure on FX3 devices, sometimes didn't
run due to rounding errors when correcting for clock skew between
parameters sent to the devices and parameters received back.
- events/frame.h: added documentation that using the assignment operator
to copy Frame events is not possible, caerGenericEventCopy() should
be used instead. The C++ variant deletes the assignment operator to
enforce this. This fixes issue #26.
- src/usb_utils.c: fixed shutdown callback not being called on MacOS X.
Also fixed possible dead-lock on USB transfer re-submit on Windows.
This fixes issue #32.
- src/date_exchange.h: prevent possible dead-lock inside dataExchangeGet(),
if signals are delivered always while not sleeping.
- portable_endian.h, portable_time.h: fixed stand-alone compilation.
- Fixed many code quality warnings by Sonarcloud.
- Travis-CI: fixed automatic test build issues on MacOS X.
Release 2.3.0 - 30.06.2017
INCOMPATIBLE CHANGES
- device.hpp: removed C++ dataStart() method with no arguments. As with
the C interface, only the variant with all notification arguments
remains. This is to ensure users think about the possible arguments,
especially with regards to the shutdown notification, which usually
should be defined and used.
- Dynap-SE: requires new logic version 4. Adds new features related
to DAVIS integration and spike generation/playback.
NEW FEATURES
- CI: test builds are now done by Travis-CI and results sent off to
Sonarcloud for code quality analysis.
- Examples: added example to show how to bias a DAVIS camera and
configure it for external AER control (davis_enable_aer.cpp).
- Examples: added shutdown notification handler to all examples.
BUG FIXES
- CMake: fix CMake 3.X support on MacOS X.
- caerDeviceDataGet(): now properly returns NULL in blocking mode when
the device goes away or stops sending any data, thus preventing a
dead-lock when using blocking mode with this function.
Release 2.2.0 - 13.06.2017
INCOMPATIBLE CHANGES
- frame_utils.h: the frame utilities API was simplified. Now only one
function for demosaic support respective contrast enhancement support
exists, with the type (standard or OpenCV) as an enumeration argument.
NEW FEATURES
- Added support for the eDVS4337 serial port device. Serial port devices
require the libserialport library (version 0.1.1 or newer), and as such
are optional; enable them by passing -DENABLE_SERIALDEV=1 to cmake.
The presence of this support can be verified with the libcaer.h define
LIBCAER_HAVE_SERIALDEV. When disabled, the API for serial devices is
still available, but will simply return false/NULL on any operation to
indicate missing support. For usage details, see 'examples/edvs_simple.c'.
To open the device, use the new caerDeviceOpenSerial() function with
'deviceType' set to 'CAER_DEVICE_EDVS'. The usual caerDeviceOpen()
will only work for supported USB devices. All other functions, such
as caerDeviceDataGet(), remain the same and work for all device types.
- DAVIS Examples: added example for frame parsing. Thanks to Jonathan Müller.
BUG FIXES
- DVS128/DAVIS/Dynap-se: fix log messages on failure to open device and
on successful shutdown.
- Dynap-se: calculate rate in caerDynapseWritePoissonSpikeRate() as float.
- IMU and PointXD Events: fix conversion of floating-point data to/from
little-endian in-memory format. On MacOS X, this resulted in a function
call with integer arguments and thus conversion to an integer value,
destroying the original floating-point value.
Release 2.1.5 - 03.06.2017
NEW FEATURES
- Dynap-se: added support for experimental DYNAPSE_CONFIG_POISSONSPIKEGEN
control (thanks to Carsten Nielsen).
BUG FIXES
- DAVIS FX3: require new logic revision 9910 for FX3 devices.
This fixes a bug in timestamp synchronization between multiple
cameras, and improves precision of some time related parameters,
namely APS_EXPOSURE, APS_FRAME_DELAY and USB_EARLY_PACKET_DELAY.
- DAVIS: fix incorrect extra log message when opening FX3 devices.
Release 2.1.4 - 30.05.2017
BUG FIXES
- C++: functions defined in C++ header files, such as happens in log or
utils, need the inline keyword to allow the linker to resolve symbols
properly. Fixes #14.
Release 2.1.3 - 28.05.2017
NEW FEATURES
- DAVIS: new device type CAER_DEVICE_DAVIS is now available, handles both
FX2 and FX3 board-based devices transparently.
BUG FIXES
- C++ devices/usb.hpp: add missing std::string include.
- Devices: log failure to put new event packet containers on ring-buffer for
consumption by clients with higher log-level of CAER_LOG_NOTICE.
Release 2.1.2 - 24.05.2017
BUG FIXES
- FrameUtils/C++ FrameEvent: fix detection of OpenCV presence.
- CMake: add dependency on libm for math.h functions.
Release 2.1.1 - 23.05.2017
BUG FIXES
- AutoExposure: disable debug logging.
- AutoExposure: get out of highly over/under-exposed situations much faster.
Release 2.1.0 - 22.05.2017
INCOMPATIBLE CHANGES
- usb.h: the 'dataShutdownNotify' callback of caerDeviceDataStart() will only
be called on exceptional shutdowns now. Normal shutdowns, such as those from
calling caerDeviceDataStop(), will not execute the callback anymore.
The documentation for caerDeviceDataStart() and caerDeviceDataStop() has been
updated accordingly.
- DAVIS: requires new logic revision 9880.
NEW FEATURES
- davis.h: added automatic exposure control, can be turned on/off with
the DAVIS_CONFIG_APS_AUTOEXPOSURE configuration parameter, defaults to off.
- EventPackets (C/C++): added caerEventPacketGetDataSize() and
caerEventPacketGetSize() functions to easily get packet size in bytes.
- C++ FrameEvent: added new function getOpenCVMat() to frame event, if
OpenCV is enabled. Returns a cv::Mat representing the frame's pixels, with
support for deep-const by cloning (can be disabled for efficiency).
- C++ Utils: enhanced makeUniqueFromCStruct() and makeSharedFromCStruct() to
also allow a 'takeMemoryOwnership' parameter that is forwarded to the event
packet constructors; it defaults to true like the constructors themselves.
- Devices (C/C++): added new CAER_HOST_CONFIG_LOG config module with parameter
CAER_HOST_CONFIG_LOG_LEVEL to set per-device log-level; by default the
log-level is equal to the current global one at device opening.
BUG FIXES
- libcaer.hpp: undefine log-level names to avoid name clashes.
- DAVIS: removed variable APS ADC Shift, is not used by any camera currently
offered, all have 10 bits precision.
- DAVIS: fix black APS pixels on very high illumination.
- DAVIS240: fix low range of APS pixels due to reduced ADC dynamic range.
- USB: libusb-based USB communication completely rewritten, now there is one
thread responsible for USB event handling only, while transfers are sent,
started/stopped etc. from other threads. This avoids possible dead-locks,
or other threads stealing the USB event handling, or new settings not being
sent to the device under certain load conditions. This required a small
change in the API, please see "INCOMPATIBLE CHANGES" above for more details.
Release 2.0.2 - 27.04.2017
NEW FEATURES
- Logging: added caerLogFileDescriptorsGetFirst(), caerLogFileDescriptorsGetSecond()
functions to get the two file descriptors where log messages go to.
- Logging: added caerLogVAFull() function to allow full control over all
parameters involved in logging, especially the log-level.
- Dynap-se: added support for experimental DYNAPSE_CONFIG_SPIKEGEN
control and improved DYNAPSE_CONFIG_SRAM control (thanks to Carsten Nielsen).
- Updated C++ examples to use C++ logging functions.
- Updated C++ interface to reflect above changes.
Release 2.0.1 - 16.03.2017
NOTE: this release is numbered 2.0.1 and not 2.0.0, because 2.0.0 was the
development version. To ensure people can depend on the now actually released
version, the version number was increased to 2.0.1 for the official release.
INCOMPATIBLE CHANGES
- The Frame Event format changed to have the origin (0, 0) in the upper left
corner of the image, following standard computer graphics conventions now.
Before it was in the lower left corner, following the OpenGL convention.
This was changed to more easily be able to benefit from the wealth of
computer graphics libraries available, such as OpenCV.
caerFrameEventGetPixelArrayCGFormat() has been removed as a consequence.
- The Polarity Event format has also changed its origin to the upper left corner.
- Device INFO structures have additional data members now, be sure to
recompile anything depending on those!
- CAER_HOST_CONFIG_PACKETS_MAX_*_SIZE and MAX_*_INTERVAL options have been
removed, the whole data packeting system is now much simpler with only
two configuration options to control it:
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_INTERVAL
These act at the event packet container level. See packetContainer.h
documentation on more information for how this works.
- Removed LIBCAER_LOG_NONE define from headers, it is now not possible
to completely suppress log output anymore.
- caerGenericEventGetEvent() has had its bounds restricted to [0,eventNumber[
instead of [0,eventCapacity[.
- Event packet copy functions have been renamed to:
- caerEventPacketCopy()
- caerEventPacketCopyOnlyEvents()
- caerEventPacketCopyOnlyValidEvents()
NEW FEATURES
- Support for the aiCTX DYNAP-SE neuromorphic chip was added.
- Added new event type Spike Event for spiking neurons.
- Added new event types Point1D, Point2D, Point3D and Point4D to
hold floating point data in multiple dimensions.
- New event packet functions were added:
- caerEventPacketEquals()
- caerEventPacketClear()
- caerEventPacketClean()
- caerEventPacketResize()
- caerEventPacketGrow()
- caerEventPacketAppend()
- Full native support for C++11 through header library (libcaercpp).
- Improved const-qualification of functions, to allow better compile
time checks for read-only data. A GetEventConst() function was added
to each event type as part of this, to get read-only events.
- Const, reverse and const-reverse iterators were added to all event types.
- davis.h: added support for stereo microphones on DAVIS346mini.
- davis.h: added support for extra signal detectors.
- network.h: added header with functions to help parse AEDAT 3.X
network stream headers.
- frame.h: added support for more color filter configurations.
- packetContainer.h: better documentation, now tracks lowest and highest
timestamps contained, as well as number of total and valid events.
- packetContainer.h: added caerEventPacketContainerUpdateStatistics() to
update above statistics. Automatically called on each addition or
removal of an event packet from the container.
- packetContainer.h: added caerEventPacketContainerFindEventPacketByType*(),
caerEventPacketContainerCopyAllEvents() and caerEventPacketContainerCopyValidEvents()
functions to search for event packets by type and to make deep-copies of them.
- special.h: added new Special Event types, to support extra signal detection
schemes and add Frame Event related timing information.
- special.h: added caerSpecialEventPacketFindEventByType*() and
caerSpecialEventPacketFindValidEventByType*() functions to search for
a specified type of special event.
- libcaer.h: added LIBCAER_VERSION, LIBCAER_NAME_STRING,
LIBCAER_VERSION_STRING and LIBCAER_HAVE_OPENCV defines.
- log.h: added caerLogVA() function to pass va_list arguments directly.
Release 1.0.3 - 28.03.2016
INCOMPATIBLE CHANGES
- davis_fx2.c: removed specific FX2 code, now uses same backend as FX3
for sending all configuration values, due to new firmware version 3
for FX2 DAVIS small-board cameras. A firmware update is required,
please follow the instructions at https://inivation.com/support/software/reflashing/.
NEW FEATURES
- frame.h: add function caerFrameEventGetPixelArrayCGFormat() to
Frame Event, allows to get a copy of the pixels array in the
standard computer graphics format (pixel (0, 0) in upper left
corner) efficently.
- davis.h: add DAVIS_CONFIG_APS_ADC_TEST_MODE parameter to APS module.
Release 1.0.2 - 08.01.2016
IMCOMPATIBLE CHANGES
- frame.h: rename channel number to color channels and add color
filter information, to better specify the information needed
to reconstruct color frames. The 'enum caer_frame_event_color_channels'
and 'enum caer_frame_event_color_filter' hold the possible values.
This change is backwards-compatible with older frame format!
- davis.h, dvs128.h: changed info data structure's integers to be
signed for better cross-language compatibility. Also 'deviceID'
can now be compared directly with 'sourceID' from event packets.
- davis.h: changed type of 'apsColorFilter' in info data structure
to take advantage of new 'enum caer_frame_event_color_filter'.
NEW FEATURES
- common.h: add generic functions for event packet copying, with
support for packet size reductions (copy only valid).
- libcaer.h: add generic clear, get and set functions for bitfields,
and use them in all the event functions to avoid errors.
- config.h: add device configuration event type, for tracking
of device configuration changes in the event stream.
- log.c: add timezone information to log message time information.
- dvs128_simple.cpp, davis_simple.cpp: add C++11 example variants.
- Enable more Clang compiler warnings.
BUG FIXES
- davis_common.c: only update the ROI size information if ROI
updates actually came in from the device.
- Fix and improve documentation, especially for the frame event.
- Fix off-by-one in event's GetEvent() function's warning log message.
- device.c: mark global function pointer arrays static.
- common.h, frame.h: fix compilation of inline functions in
strict C++11 mode.
Release 1.0.1 - 06.11.2015
INCOMPATIBLE CHANGES
- Requires firmware version 2 and logic revision 7449.
- usb.h: improved caerDeviceDataStart() API to also allow for
notification of data acquisition shutdown, to be able to react
to abnormal shutdown cases, like when a device is unplugged.
- frame.h: changed in-memory format for easier handling and compatibility
with the other event formats (all-in-one memory block).
- davis.h: rename DAVIS240 APSOVERFLOWLEVEL to APSOVERFLOWLEVELBN.
NEW FEATURES
- Headers are C++ compatible and stand-alone now.
- MacOS X support.
- Added pkg-config file for library.
- Full API documentation (see docs/ for PDF).
- Various cmake/build improvements. Support out-of-tree builds.
- Add iterator macros for EventPackets.
- frame.h: added ROI region ID tracking, as well as ROI position.
Added caerFrameEventGetExposureLength() and caerFrameEventGetTimestamp(),
which is defined as the median of the exposure times.
Added caerFrameEventPacketGetPixelsSize() and caerFrameEventPacketGetPixelsMaxIndex()
for EventPacket-level size information.
Added caerFrameEventGetPixelsSize() and caerFrameEventGetPixelsMaxIndex()
for Event-level size information.
- log.h: added caerLogFileDescriptorsSet() to allow logging to
up to two different file descriptors (defaults to STDERR only).
- davis.h: added chipID check macros.
- davis.h: added DAVIS_CONFIG_APS_SNAPSHOT to take one frame snapshots.
- dvs128.h: added DVS128_CONFIG_DVS_TS_MASTER to select timestamp
master or slave behavior (timestamp synchronization).
- davis_common.c: added support for outputting only reset read or
signal read frames, for debugging purposes.
- c11threads_posix.h: C11-compatible thread abstraction, for
both Linux and MacOS X, based on POSIX Threads.
BUG FIXES
- Relaxed atomic operations memory constraints for better
performance on weakly-ordered architectures (like ARM).
- log.c: call tzset() before localtime_r(), as per standard.
- davis_common.c: improved Region of Interest support (APS).
- davis_fx2.c: keep GlobalShutter flag correctly in-sync.
- davis_fx3.c: fixed support for new FX3 devices.
- packetContainer.h: handle container being NULL by returning NULL.
Release 1.0.0 - 02.10.2015
- Initial release.
Wiki Tutorials
This package does not provide any links to tutorials in it's rosindex metadata.
You can check on the ROS Wiki Tutorials page for the package.
Package Dependencies
No dependencies on ROS packages.
System Dependencies
Dependant Packages
No known dependants.
Launch files
No launch files found
Messages
No message files found.
Services
No service files found
Plugins
No plugins found.
Recent questions tagged libcaer at Robotics Stack Exchange
No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | BSD-2 |
Build type | CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros-event-camera/libcaer.git |
VCS Type | git |
VCS Version | ros_event_camera |
Last Updated | 2024-01-08 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
library for event based sensors
Additional Links
No additional links.
Maintainers
- Bernd Pfrommer
Authors
No additional authors.
WINDOWS BUILD INSTRUCTIONS
==========================
We support building libcaer on the Windows platform by using the MinGW32/64 compilers
and the MSYS2 environment. The result is a static and a dynamic DLL, as well as the
appropriate header files, so that libcaer can be used in MinGW itself.
Visual Studio and the MSVC compiler are not supported out-of-the-box right now, to use
a DLL compiled by MinGW additional steps are necessary: http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
Following are detailed step-by-step instructions to install the required
components and get everything building, we use MinGW64 here for the
64-bit Windows platform, if you want to build for 32-bit Windows, just replace all
mentions of 'x86_64' with 'i686'. Whenever you want to install a package, use
the MSYS2 shell, while to build code, use the MinGW32/64 shells!
1) Get MSYS2 from https://msys2.github.io/ and download the appropriate installer.
Follow the instructions to install the system and update its packages. During the
system package upgrade, ignore any heap mismatch errors, and follow what the last
warning tells you to do (close the shell). The base system upgrade seems to break
the Start Menu shortcuts, so from now on start MSYS2 by going to its directory
'C:\msys64\' and double-clicking on 'msys2_shell.cmd'.
2) Install MinGW GCC: pacman -S mingw-w64-x86_64-gcc
3) Install Make/CMake: pacman -S make mingw-w64-x86_64-cmake
4) Install pkg-config: pacman -S mingw-w64-x86_64-pkg-config
5) Install libusb: pacman -S mingw-w64-x86_64-libusb
6) Place the libcaer source in a location easily accessible to MSYS2. We usually
put the source code into 'C:\msys64\home\libcaer\' and use TortoiseGit
(https://tortoisegit.org/) or git from the MSYS2 shell (pacman -S git) to get it.
7) Switch to the MinGW build shell, double-click on 'mingw64.exe' in 'C:\msys64\'.
8) Switch to the libcaer checkout directory: cd /home/libcaer/
9) Configure, run CMake: cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX=/mingw64 .
10) Build, run Make: make
11) Install: make install
Congratulations, you now have a working libcaer on Windows! The output from that
last 'make install' will have told you exactly where all the DLLs and header
files are located on the file-system. You can now try building one of the
examples in the examples/ directory to verify functionality.
CHANGELOG
Release 3.3.15 - 07.03.2023
BUG FIXES
- eDVS: fix device discovery. Thanks to Benjamin Ward-Cherrier.
- Windows: control MSVC build with BUILD_CONFIG_VCPKG flag.
- Devices: fix compiler warnings.
- Removed obsolete DAVIS_RPI device.
Release 3.3.14 - 25.03.2022
NEW FEATURES
- Full native MSVC/Windows build support.
BUG FIXES
- davis_cvgui example: fix incorrect biasing and APS frame settings.
- USB: fix firmware version check for DVXplorer Mini.
Release 3.3.13 - 25.02.2022
NEW FEATURES
- DVXplorer (Mini): add control of readout timing parameters, readout restart.
Release 3.3.12 - 12.11.2021
BUG FIXES
- DVXplorer Mini: fix inverted polarity.
- dvx_bw_test example: fix length of time interval for
bandwidth estimation.
- Fedora/Ubuntu: fix packaging, use at least GCC-10 to compile.
Release 3.3.11 - 16.07.2021
NEW FEATURES
- Native MacOS ARM (M1) builds, Big Sur compatibility.
- Ubuntu 21.04 Hirsute support.
- Fedora 34 support.
- Ubuntu 16.04 Xenial is no longer supported!
- Cameras: added support for new DVXplorer Mini camera model.
Release 3.3.10 - 16.04.2021
BUG FIXES
- USB: when serial number cannot be determined, use all bits from
USB bus-number/dev-address to construct the fake name (issue #123).
- Examples Device Discovery: add support for DVXplorer and EVK.
Serial Number in Device Discovery can only be used if the
device could be opened correctly (deviceErrorOpen == false).
Release 3.3.9 - 21.12.2020
BUG FIXES
- DVXplorer: fix mapping of events when dual-binning is
enabled (issue #119).
Release 3.3.8 - 15.09.2020
NEW FEATURES
- Linux Udev: simplify udev rules into one file (issue #114).
BUG FIXES
- Samsung EVK: allow multiple EVKs to be selected by a temporary
serial number generated from USB bus addresses (issue #113).
- Samsung EVK: more robust parser for 231Y chip data (issue #115).
Release 3.3.7 - 07.05.2020
BUG FIXES
- Samsung EVK: implement full 64bit timestamps (issue #99).
Release 3.3.6 - 18.04.2020
NEW FEATURES
- MacOS X: set default CMake destination to /usr/local on Apple systems.
- Ubuntu: support for release 20.04 LTS 'Focal Fossa'.
BUG FIXES
- USB: do not claim device interface on discovery, not needed for
simple info requests on control ep0 (issue dv-gui#291).
- Samsung EVK: enable USB transfer timeout (set to 500us), so that
even on low event rates, data keeps coming in with low latency.
Release 3.3.5 - 12.03.2020
INCOMPATIBLE CHANGES
- DVXplorer (Lite): firmware update to version 8.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
BUG FIXES
- USB: improve detection of device serial number.
- USB: optimize setting number/size of USB transfers.
Release 3.3.4 - 04.03.2020
INCOMPATIBLE CHANGES
- DVXplorer: firmware update to version 7.
Use Flashy to update as per documentation:
https://inivation.gitlab.io/dv/dv-docs/docs/update-firmware/
NEW FEATURES
- Cameras: added support for DVXplorer Lite camera.
- USB: added support for libusb logging.
Release 3.3.3 - 01.02.2020
BUG FIXES
- Samsung EVK: fix possible non-monotonic timestamp at startup.
- DVXplorer: fix crop start/end address inversion.
Release 3.3.2 - 24.01.2020
BUG FIXES
- DVXplorer/DVS132S: fix IMU accel/gyro scale detection.
- Samsung EVK: fix non-monotonic timestamps when a reference timestamp
event is lost due to high USB traffic.
Release 3.3.1 - 17.01.2020
NEW FEATURES
- Support for new DVXplorer and Samsung EVK devices added.
Release 3.3.0 - 24.12.2019
NEW FEATURES
- Support for mini-eDVS serial device added to eDVS code.
BUG FIXES
- eDVS: fix inverted event polarity.
Release 3.2.2 - 15.07.2019
BUG FIXES
- CMake: fix compatibility with older pre-6.0 GCCs (issue #93).
- CMake: drop required version to 3.10 (Ubuntu Bionic).
- USB devices: better error messages on failure to open a device,
better distinction of generic 'any-camera' case and specific
USB ports or serial numbers.
- eDVS: fix strncpy() compiler warning, ensure serial number is
always NULL terminated.
- DAVIS: fix APS frame color interpolation for color cameras
when ROI is enabled (issue #94).
Release 3.2.0 - 20.05.2019
INCOMPATIBLE CHANGES
- DAVIS firmware and logic update: DAVIS FX3 firmware v6 and logic v18.1.
Fixes a possible USB data corruption bug in some rare cases, especially
on MacOS X systems. Improves quality of APS frames.
- All devices: dataStart() stops all producers and resets all buffers,
ensuring no stale data remains. Producers must be enabled only after
having called dataStart(), it not using the START_PRODUCERS feature.
- CMake: version 3.12.0 or newer of CMake is now required.
- Ubuntu: dropped support for Trusty 14.04.
- DVS128: renamed logicVersion to firmwareVersion in dvs128_info struct.
- Python bindings: removed experimental Python SWIG bindings.
Please use https://github.com/duguyue100/pyaer/ instead (issue #65).
- CMake: installed caer-base.cmake dropped its argument. Use standard
CMake facilities to select the needed C/C++ standard version.
- CMake: caer-base.cmake does not provide the following variables anymore:
- CM_BUILD_DIR (not useful)
- CM_SHARE_DIR (already known when accessing the file)
- CAER_C_THREAD_LIBS (renamed to SYSTEM_THREAD_LIBS)
- CAER_MODULES_DIR (not part of libcaer)
- CMake: renamed CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
to USER_LOCAL_INCDIRS/USER_LOCAL_LIBDIRS/USER_LOCAL_PREFIX.
- Events: removed unused event types: Config, Ear, Matrix4x4,
Point1D, Point2D, Point3D, Point4D and Sample (issue #85).
NEW FEATURES
- Devices: added support for the DVS132S test chip in the C/C++ API.
- CMake: added UDEV_INSTALL switch to disable udev rules installation (issue #82).
- CMake: search for and support OpenCV 4 (issues #83, #90).
- GCC/CMake: add more compiler warnings.
- C++ ringbuffer.hpp: add comparison operators.
- Examples: compile and install examples with -DEXAMPLES_INSTALL=1.
- frame_utils.h: added caerFrameUtilsPixelColor() function (issue #89).
- Device discovery: firmwareVersion is always defined for USB devices
during device discovery. SerialPortName and SerialBaudRate are always
defined for eDVS devices (issue #88).
BUG FIXES
- CMake: ensure LIBCAER_HAVE_SERIALDEV and LIBCAER_HAVE_OPENCV defines
in libcaer.h are always properly defined to be 0 or 1.
- device_discovery.c example: fix compilation with new struct davis_info.
- Examples: fix incorrect defines.
Release 3.1.0 - 27.11.2018
INCOMPATIBLE CHANGES
- DAVIS: require firmware version 5 and logic version 18. Fixes issues with
IMU Run Controls, fixes corrupt data in DAVIS BLUE 346, enables IMU on
DAVIS RED 346.
- Logging: caerLogVAFull() API has been simplified, the two file descriptor
arguments have been removed, use the proper caerLogFileDescriptorsSet()
API to set them when needed.
NEW FEATURES
- Logging: added caerLogCallbackSet() and caerLogCallbackGet() functions
to set/get a global callback function to be executed on every caerLog()
logging call, the log message and its size are passed to the callback.
BUG FIXES
- C++ API frame.hpp: fix demosaic(), set number of (valid) events in
resulting packet correctly. Don't log errors if operation cannot
be performed, just copy over unchanged pixel data.
Also only operate on valid events for demosaic() and contrast().
- DAVIS IMU: temperature readings on InvenSense 6050 were off by +1.53°C.
- CMake: fix linking on Windows.
- Ubuntu Packaging: build with correct GCC version on Ubuntu 14.04 Trusty.
- Logging: performance improvements; move expensive check (TLS) to
last position, ensure log-level is checked first in custom loggers.
- Fix various compiler warnings.
Release 3.0.0 - 23.10.2018
INCOMPATIBLE CHANGES
- frame_utils.h: caerFrameUtilsDemosaic() and caerFrameUtilsContrast()
functions have different signatures to allow for more flexibility in
where frames to be modified are sourced and stored. Also the type
enums changed to add Bayer->Gray conversion options.
- davis.h: support for new logic version 16:
- changed, slightly more efficient data encoding (IMU, APS).
- cleaned up device configuration, removed lots of unused debug options.
- changed APS FrameDelay to FrameInterval, to allow for setting time
between frames and thus control the frame rate directly.
- new hardware filter options for DVS: Background Activity, Refractory
Period, Skip Events, Polarity Suppress/Flatten, Region of Interest (ROI)
and single Pixel Filtering.
- full support for new iniVation devices: DAVIS346 Blue, DAVIS346 Red
and DAVIS346 Red Color.
This represents a new major release version, as it breaks the API
for DAVIS devices: the available configuration options (#defines in
davis.h) heavily change; the struct caer_davis_info and the
caerDavisROIConfigure() function also change incompatibly.
Please ensure all applications targeting DAVIS are recompiled!
NEW FEATURES
- C++ EventPackets: new function getHeaderPointerForCOutput() to get
the underlying C EventPacket pointer and ensure that memory ownership
is transferred to it, and not left with the C++ EventPacket.
- FrameEventPackets: new caerFrameEventPacketAllocateNumPixels() function
to allocate based on total number of pixels instead of X/Y lengths.
- davis.h: added new DAVIS_CONFIG_APS_FRAME_MODE configuration option.
- davis.h: added enums for easier IMU option handling (caer_davis_imu_types,
caer_davis_imu_invensense_accel_scale, caer_davis_imu_invensense_gyro_scale).
- CMake: automatically set CMAKE_INSTALL_PREFIX to /usr if nothing
was specified by user on Unix/Linux, this avoids installs to /usr/local
that often lead to the libraries not being found correctly.
- CMake: support for the ccache compiler cache added.
- CMake: install udev rules on Unix/Linux, to allow access to iniVation
devices. Default rules chmod 0666 the devices, using -DUDEV_SELINUX=1
installs a SELinux-enabled version for systems using TAG 'uaccess'.
- Ubuntu Packaging: libcaer is now split in two packages: libcaer and
libcaer-dev. It is now built using debhelper, and the static library
version is now also installed by libcaer-dev.
- Fedora Packaging: libcaer is now split in three packages: libacer,
libcaer-devel and libcaer-static. The static version is in the latter.
- examples/davis_text.cpp: added new example for writing data to a text file.
BUG FIXES
- Packaging: cmake dependency bumped to 2.8.12 in Ubuntu/Fedora packages.
- src/usb_utils.c: fixed firmware/logic update message to be clearer.
- src/container_generation.h: clearer message on dropped event packets.
Release 2.5.2 - 25.09.2018
INCOMPATIBLE CHANGES
- CMake: raised minimum CMake dependency to version 2.8.12, some
variables we use are only defined starting with this version.
It also corresponds to the version present in the oldest distribution we
support: Ubuntu 14.04 Trusty.
NEW FEATURES
- CMake: added CAER_LOCAL_INCDIRS/CAER_LOCAL_LIBDIRS/CAER_LOCAL_PREFIX
variables to enable easier cross-compilation setups.
- CMake: added CMake configuration files, so that CMake may find the library
using its own package detection system, in addition to the existing pkg-config
based detection. Thanks to Felix Schwitzer (see issue #72 for more details).
- devices/davis.h: added caerBiasCoarseFineFromCurrent() and caerBiasCoarseFineToCurrent()
functions to convert between coarse-fine bias values and the current they
represent (in picoAmpere). Also available in the C++ interface (issue #40).
- filters/dvs_noise.h: added statistics on number of filtered events separated
by ON/OFF polarity. Added caerFilterDVSNoiseStatsApply() function to only
gather statistics and not modify the given polarity event packet (read-only
mode). Also available in the C++ interface.
BUG FIXES
- src/usb_utils.c: check for exact firmware and logic versions.
- events/packetContainer.h: fix sizes used in caerEventPacketContainerCopyAllEvents()
and caerEventPacketContainerCopyValidEvents() to allocate new containers.
Release 2.5.0 - 17.07.2018
INCOMPATIBLE CHANGES
- davis.h: removed support for stereo microphones, this was never used in any
released devices, only for internal experiments on a limited prototype run.
- Events: event packet allocation functions are now in the various headers,
making it possible to create, use and destroy event packets and events by
just including the headers, without having to link to the full library.
CAER_EVENTS_HEADER_ONLY needs to be set before inclusion for this to fully
work, else there is a dependency on caerLog(), which is still in the library.
This is very useful for tools or network receivers. A re-compile of any
programs using these functions is required to avoid runtime linking errors.
- CMake: cleanup linked libraries, libm and librt are not part of the
default dependencies anymore, they need to be added manually to programs
that actually use them. Same goes for thread support, which is now only
exported as the 'CAER_C_THREAD_LIBS' CMake variable but not automatically
included anywhere.
NEW FEATURES
- Device Discovery: added capability of finding any accessible supported
devices on a system, getting information on them, and then opening them.
New header 'devices/device_discover.h' with functions caerDeviceDiscover()
and caerDeviceDiscoverOpen(), example provided in 'examples/device_discovery.c'.
C++ interface available in 'devices/device_discover.hpp', namespace is
'libcaer::devices::discover'.
- Error reporting: both caerDeviceOpen() and caerDeviceOpenSerial() now
set 'errno' on failure to provide more precise reasons for the failure,
error codes are available in the enum 'caer_error_codes'.
- log.h: new functions caerLogDisable(true/false) to turn off all logging
for a region of code (per-thread), and caerLogDisabled() to check current
status of logging. C++ interface available in 'libcaer::log'.
- C++ packetContainer.hpp: support construction of a new packet container
based on a C-style caerEventPacketContainer, with optional memory
ownership take-over for the contained packets.
- C++ utils.hpp: libcaer::events::utils::makeShared/Unique now support the
Matrix 4x4 event type too.
- C++ frame.hpp: new define LIBCAER_FRAMECPP_OPENCV_INSTALLED to enable
special getOpenCVMat() support independently of libcaer itself having
support for OpenCV.
- events/common.h: add new functions caerEventPacketGetDataSizeEvents()
and caerEventPacketGetSizeEvents() to get size of data part of an
event packet, disregarding capacity.
- Examples: added 'davis_simple_2cam.c' example for a two camera setup.
- device.h: CAER_SUPPORTED_DEVICES_NUMBER define is now public.
- eDVS: added 'serialPortName' and 'serialBaudRate' members to its info
structure, contents are OS-specific.
- eDVS: analyze startup message to confirm the presence of an eDVS device.
- eDSV: flush buffers on open to avoid possible garbage data from previous
open attempts to interfere with eDVS detection.
- USB: check both firmware and logic version always and notify users of
needed upgrades for both at the same time; this avoids multiple notify
and upgrade cycles if both change quickly or the user hasn't upgraded
in a long time.
- filters/dvs_noise.h: new filter module to reduce noise from the DVS
output, integrates a hot pixel filter (with learning), a background-
activity filter and a refractory period filter. C++ interface available.
New example 'davis_cvgui_filters.cpp' shows usage.
- devices/davis.h: new define DAVIS_CONFIG_DVS_FILTER_PIXEL_AUTO_TRAIN to
automatically discover abnormally active pixels (hot-pixels) in the camera
output and then filter them at the hardware level (FPGA/CPLD). This only
works on newer camera that support the hardware pixel filtering, it does
nothing on older systems and just returns 'false' on get/set.
- devices/davis.h: support new DAVIS346 with InvenSense MPU 9250, new IMU
options via defines DAVIS_CONFIG_IMU_GYRO_DLPF and DAVIS_CONFIG_IMU_ACCEL_DLPF.
- CMake: new flag ENABLE_STATIC available to enable static compilation
of libcaer in addition to shared library.
- Code is now formatted using clang-format.
BUG FIXES
- C++: add header inclusions for possibly missing types.
- C++ devices/serial.hpp: fix warning about shadowed variable, improve
error message on failure to open by adding serial baud-rate to message.
- C++ packetContainer.hpp: fix construction of event packets, resulting
size was incorrect due to wrong vector sizing at initialization.
- C++ events/common.hpp: shrink_to_fit() fails on empty packets, since
resize to zero is not allowed. Now correctly detects this case.
- Devices: documentation updates, fix typos and precise usage of
'deviceString' member in device info structures; it is only valid
during the life-time of the device!
- eDVS: name case changed to 'EDVS-4337' to follow firmware.
- eDVS: faster startup due to shorter delays.
- eDVS: request exclusive access to serial device on Unix (Linux/MacOSX),
this was already the default on Windows.
- Dynap-SE: delay after initial configuration extended from 1s to 4s,
some devices seem to need longer delays to start up properly.
- USB: better log messages on failure, reduce event handling timeout to
10ms from 1s for quicker response to shutdown requests.
- AutoExposure: debug log messages from the auto-exposure module now
respect the per-device log-level settings.
Release 2.4.2 - 23.03.2018
NEW FEATURES
- Install shared CMake file 'caer-base.cmake' to simplify common build
steps and checks used in libcaer, cAER and its modules.
- examples/davis_cvgui.cpp: improved example, checks for libcaer compiled
with proper OpenCV support (issue #55), shows events in a separate
window, compilation documented in README (PR #53).
BUG FIXES
- Improve Python examples, use numpby for better performance.
- C++ Devices: let users derive from device classes (PR #56).
- C++ EventPackets: fix iteration over empty packet, due to back()
incorrectly throwing an exception when size is zero because of the
usage of the -1 backwards lookup notation.
Release 2.4.0 - 05.12.2017
INCOMPATIBLE CHANGES
- DAVIS: require new firmware version 4 and logic version 9912.
- Dynap-SE: require new logic version 5.
- devices/dynapse.h: the chip IDs are now mapped to be 0,1,2,3 for
U0,U1,U2,U3 respectively, making them as easy to use and loop over
as the core IDs. The defines have been updated, so if you've been
properly using them, no change is needed other than a recompile.
- src/dynapse.c: spike events coming from a Dynap-SE's chip ID 0 (U0) do
now have a chip ID of 0, the same as the chip ID used to configure the
system, removing this small inconsistency. All usages of
'DYNAPSE_CONFIG_DYNAPSE_U0+1' must now remove the '+1', chip U0 is not
to be treated differently anymore in regards to its USB output chip ID.
- events/spike.h: caerSpikeEventGetX() and caerSpikeEventGetY() were
inverting the meaning of column/row, resulting in inconsistencies
when using those two functions in comparison to system configuration.
This has now been corrected, and the functions moved to devices/dynapse.h
with the new names of caerDynapseSpikeEventGetX/Y(), due to them being
specific to the architecture of the Dynap-SE neuromorphic processor.
Now both chips, cores and neurons, as interpreted through these functions,
are set out in row-major order (similar to computer vision).
- devices/dynapse.h: the caerDynapseWriteSram() function is being deprecated
in favour of its newer variant caerDynapseWriteSramN().
- devices/dynapse.h: removed define DYNAPSE_CONFIG_SRAMROW.
Use DYNAPSE_CONFIG_NUMNEURONS and DYNAPSE_CONFIG_NUMSRAM_NEU.
- devices/dynapse.h: removed defines DYNAPSE_MAX_USER_USB_PACKET_SIZE,
DYNAPSE_CONFIG_MAX_USB_TRANSFER and DYNAPSE_CONFIG_MAX_PARAM_SIZE.
Those are internal implementation details, and caerDynapseSendDataToUSB()
now accepts arbitrarily sized data to send, the user does not have to
divide it in chunks of a particular size anymore.
- devices/dynapse.h: improved and changed 'struct caer_bias_dynapse' to
reflect actual biasing of device correctly.
- devices/device.h: CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE's
default value has been changed to zero, disabling the size division of
packets by default. Packet size is now dictated, by default, only by
the time interval, with a value of 10 milliseconds.
NEW FEATURES
- Packaging: packages for Fedora, Debian and Gentoo Linux, as well as
MacOS X via Homebrew are now available for each new libcaer release.
For more information please visit:
https://inivation.com/support/software/libcaer/#automated-installation
- Python bindings: added bindings for Python 2/3 using SWIG. See
bindings/python_swig/ and bindings/python_swig/examples/ for examples.
NOTE: this needs a patched Swig, see 'https://github.com/swig/swig/pull/1166'.
- CMake: added support for generating RPM/DEB files via CPack, to
easily be able to package one's own build.
- DAVIS/Dynap-SE: added support for AER and Multiplexer statistics, to
examine number of events received, filtered and dropped.
- DAVIS: added support for hardware DVS Refractory Period filter on
newer FX3 based devices.
- DAVIS: added support for DVS ROI filtering.
- DAVIS: added support for APS Quad-ROI (up to four independent
regions of interest can be configured and enabled). The number of
supported ROI regions is defined with DAVIS_APS_ROI_REGIONS_MAX.
- devices/davis.h: added 'caerDavisROIConfigure()' function to atomically
and efficiently configure and enable ROI regions.
- devices/davis.h: expanded 'struct caer_davis_info' to account for the
above new features: 'dvsHasROIFilter', 'dvsHasStatistics' and 'muxHasStatistics'.
- devices/dynapse.h: expanded 'struct caer_dynapse_info' to account for
the above new features: 'aerHasStatistics' and 'muxHasStatistics'.
- devices/device.h: added 'caerDeviceConfigGet64()' to read 64-bit
configuration parameters, needed for statistics support.
- src/dynapse.c: the Dynap-SE caerDeviceSendDefaultConfig() function now
performs full initialization of the device and its chips. To reliably
work with the device, make sure to always call this before setting
your own custom configuration afterwards.
- devices/dynapse.h: added caerDynapseWriteSramN() function, uses global
neuron ID [0,1023] instead of core ID/neuron ID syntax. Arguments are
also directly compatible with caerDynapseGenerateSramBits().
- devices/dynapse.h: renamed define DYNAPSE_CONFIG_NUMCAM to
DYNAPSE_CONFIG_NUMCAM_NEU to better explain what it is.
- devices/dynapse.h: added caerBiasDynapseGenerate() and caerBiasDynapseParse()
functions to handle the improved 'struct caer_bias_dynapse' and
transform it to/from the bit-wise bias configuration representation.
- devices/dynapse.h: added caerDynapseGenerateSramBits() function to
generate SRAM configuration bits based on input arguments.
- devices/dynapse.h: added caerDynapseCoreXYToNeuronId() and
caerDynapseCoreAddrToNeuronId() functions to calculate chip global
neuron addresses (range [0,1023]).
- devices/dynapse.h: added caerDynapseSpikeEventFromXY() function to
have a reverse transformation to caerDynapseSpikeEventGetX/Y().
- devices/dynapse.h: added DYNAPSE_CONFIG_TAU2_SET, DYNAPSE_CONFIG_TAU1_RESET
and DYNAPSE_CONFIG_TAU2_RESET defines for caerDeviceConfigSet()
usage, to allow configuration of which neuron leakage bias to use.
- events/common.h: added caerGenericEventCopy() function to copy
events from one place in memory to another.
- events/*.h: added two new functions 'caerXXXEventPacketFromPacketHeader()'
and 'caerXXXEventPacketFromPacketHeaderConst()' to transform a packet
header pointer to the proper event packet pointer. This checks the
type, and is needed for proper bindings support.
- ringbuffer.h/hpp: the ring-buffer functions for producer-consumer
high-performance communication between two threads are now exposed
as part of the API, to allow re-use in other projects such as cAER.
- examples/dynapse_simple.c: added simple example for Dynap-SE access.
- examples/davis_cvgui.cpp: added example for converting frames to OpenCV
Mat and visualizing them using OpenCV's GUI.
- src/timestamps.h: added timestamp debugging code, to measure drift
between host and device. Only enabled in debug builds.
- src/davis.h: improved APS_DEBUG_FRAME support, now splits signal and
reset read for debugging over all ROI regions.
- New device: support for upcoming DAVIS128 Raspberry-Pi integration.
- events/matrix4x4.h: new event type for 4x4 Matrices.
- C++ support: added toString() for devices.
BUG FIXES
- devices/dynapse.h: major API documentation cleanup.
- devices/dynapse.h: several function parameters of integer type were
sized more correctly to reflect the range of their arguments.
- src/dynapse.c: DYNAPSE_CONFIG_CLEAR_CAM now clears all 64 CAMs for
each neuron in a chip, resulting in all CAMs being fully cleared.
- Dynap-SE: default low-power biases are now the same across all cores.
- DAVIS: improved default timings for APS, providing better image quality,
especially on new chips with internal ADC support.
- DAVIS/AutoExposure: fixed auto-exposure on FX3 devices, sometimes didn't
run due to rounding errors when correcting for clock skew between
parameters sent to the devices and parameters received back.
- events/frame.h: added documentation that using the assignment operator
to copy Frame events is not possible, caerGenericEventCopy() should
be used instead. The C++ variant deletes the assignment operator to
enforce this. This fixes issue #26.
- src/usb_utils.c: fixed shutdown callback not being called on MacOS X.
Also fixed possible dead-lock on USB transfer re-submit on Windows.
This fixes issue #32.
- src/date_exchange.h: prevent possible dead-lock inside dataExchangeGet(),
if signals are delivered always while not sleeping.
- portable_endian.h, portable_time.h: fixed stand-alone compilation.
- Fixed many code quality warnings by Sonarcloud.
- Travis-CI: fixed automatic test build issues on MacOS X.
Release 2.3.0 - 30.06.2017
INCOMPATIBLE CHANGES
- device.hpp: removed C++ dataStart() method with no arguments. As with
the C interface, only the variant with all notification arguments
remains. This is to ensure users think about the possible arguments,
especially with regards to the shutdown notification, which usually
should be defined and used.
- Dynap-SE: requires new logic version 4. Adds new features related
to DAVIS integration and spike generation/playback.
NEW FEATURES
- CI: test builds are now done by Travis-CI and results sent off to
Sonarcloud for code quality analysis.
- Examples: added example to show how to bias a DAVIS camera and
configure it for external AER control (davis_enable_aer.cpp).
- Examples: added shutdown notification handler to all examples.
BUG FIXES
- CMake: fix CMake 3.X support on MacOS X.
- caerDeviceDataGet(): now properly returns NULL in blocking mode when
the device goes away or stops sending any data, thus preventing a
dead-lock when using blocking mode with this function.
Release 2.2.0 - 13.06.2017
INCOMPATIBLE CHANGES
- frame_utils.h: the frame utilities API was simplified. Now only one
function for demosaic support respective contrast enhancement support
exists, with the type (standard or OpenCV) as an enumeration argument.
NEW FEATURES
- Added support for the eDVS4337 serial port device. Serial port devices
require the libserialport library (version 0.1.1 or newer), and as such
are optional; enable them by passing -DENABLE_SERIALDEV=1 to cmake.
The presence of this support can be verified with the libcaer.h define
LIBCAER_HAVE_SERIALDEV. When disabled, the API for serial devices is
still available, but will simply return false/NULL on any operation to
indicate missing support. For usage details, see 'examples/edvs_simple.c'.
To open the device, use the new caerDeviceOpenSerial() function with
'deviceType' set to 'CAER_DEVICE_EDVS'. The usual caerDeviceOpen()
will only work for supported USB devices. All other functions, such
as caerDeviceDataGet(), remain the same and work for all device types.
- DAVIS Examples: added example for frame parsing. Thanks to Jonathan Müller.
BUG FIXES
- DVS128/DAVIS/Dynap-se: fix log messages on failure to open device and
on successful shutdown.
- Dynap-se: calculate rate in caerDynapseWritePoissonSpikeRate() as float.
- IMU and PointXD Events: fix conversion of floating-point data to/from
little-endian in-memory format. On MacOS X, this resulted in a function
call with integer arguments and thus conversion to an integer value,
destroying the original floating-point value.
Release 2.1.5 - 03.06.2017
NEW FEATURES
- Dynap-se: added support for experimental DYNAPSE_CONFIG_POISSONSPIKEGEN
control (thanks to Carsten Nielsen).
BUG FIXES
- DAVIS FX3: require new logic revision 9910 for FX3 devices.
This fixes a bug in timestamp synchronization between multiple
cameras, and improves precision of some time related parameters,
namely APS_EXPOSURE, APS_FRAME_DELAY and USB_EARLY_PACKET_DELAY.
- DAVIS: fix incorrect extra log message when opening FX3 devices.
Release 2.1.4 - 30.05.2017
BUG FIXES
- C++: functions defined in C++ header files, such as happens in log or
utils, need the inline keyword to allow the linker to resolve symbols
properly. Fixes #14.
Release 2.1.3 - 28.05.2017
NEW FEATURES
- DAVIS: new device type CAER_DEVICE_DAVIS is now available, handles both
FX2 and FX3 board-based devices transparently.
BUG FIXES
- C++ devices/usb.hpp: add missing std::string include.
- Devices: log failure to put new event packet containers on ring-buffer for
consumption by clients with higher log-level of CAER_LOG_NOTICE.
Release 2.1.2 - 24.05.2017
BUG FIXES
- FrameUtils/C++ FrameEvent: fix detection of OpenCV presence.
- CMake: add dependency on libm for math.h functions.
Release 2.1.1 - 23.05.2017
BUG FIXES
- AutoExposure: disable debug logging.
- AutoExposure: get out of highly over/under-exposed situations much faster.
Release 2.1.0 - 22.05.2017
INCOMPATIBLE CHANGES
- usb.h: the 'dataShutdownNotify' callback of caerDeviceDataStart() will only
be called on exceptional shutdowns now. Normal shutdowns, such as those from
calling caerDeviceDataStop(), will not execute the callback anymore.
The documentation for caerDeviceDataStart() and caerDeviceDataStop() has been
updated accordingly.
- DAVIS: requires new logic revision 9880.
NEW FEATURES
- davis.h: added automatic exposure control, can be turned on/off with
the DAVIS_CONFIG_APS_AUTOEXPOSURE configuration parameter, defaults to off.
- EventPackets (C/C++): added caerEventPacketGetDataSize() and
caerEventPacketGetSize() functions to easily get packet size in bytes.
- C++ FrameEvent: added new function getOpenCVMat() to frame event, if
OpenCV is enabled. Returns a cv::Mat representing the frame's pixels, with
support for deep-const by cloning (can be disabled for efficiency).
- C++ Utils: enhanced makeUniqueFromCStruct() and makeSharedFromCStruct() to
also allow a 'takeMemoryOwnership' parameter that is forwarded to the event
packet constructors; it defaults to true like the constructors themselves.
- Devices (C/C++): added new CAER_HOST_CONFIG_LOG config module with parameter
CAER_HOST_CONFIG_LOG_LEVEL to set per-device log-level; by default the
log-level is equal to the current global one at device opening.
BUG FIXES
- libcaer.hpp: undefine log-level names to avoid name clashes.
- DAVIS: removed variable APS ADC Shift, is not used by any camera currently
offered, all have 10 bits precision.
- DAVIS: fix black APS pixels on very high illumination.
- DAVIS240: fix low range of APS pixels due to reduced ADC dynamic range.
- USB: libusb-based USB communication completely rewritten, now there is one
thread responsible for USB event handling only, while transfers are sent,
started/stopped etc. from other threads. This avoids possible dead-locks,
or other threads stealing the USB event handling, or new settings not being
sent to the device under certain load conditions. This required a small
change in the API, please see "INCOMPATIBLE CHANGES" above for more details.
Release 2.0.2 - 27.04.2017
NEW FEATURES
- Logging: added caerLogFileDescriptorsGetFirst(), caerLogFileDescriptorsGetSecond()
functions to get the two file descriptors where log messages go to.
- Logging: added caerLogVAFull() function to allow full control over all
parameters involved in logging, especially the log-level.
- Dynap-se: added support for experimental DYNAPSE_CONFIG_SPIKEGEN
control and improved DYNAPSE_CONFIG_SRAM control (thanks to Carsten Nielsen).
- Updated C++ examples to use C++ logging functions.
- Updated C++ interface to reflect above changes.
Release 2.0.1 - 16.03.2017
NOTE: this release is numbered 2.0.1 and not 2.0.0, because 2.0.0 was the
development version. To ensure people can depend on the now actually released
version, the version number was increased to 2.0.1 for the official release.
INCOMPATIBLE CHANGES
- The Frame Event format changed to have the origin (0, 0) in the upper left
corner of the image, following standard computer graphics conventions now.
Before it was in the lower left corner, following the OpenGL convention.
This was changed to more easily be able to benefit from the wealth of
computer graphics libraries available, such as OpenCV.
caerFrameEventGetPixelArrayCGFormat() has been removed as a consequence.
- The Polarity Event format has also changed its origin to the upper left corner.
- Device INFO structures have additional data members now, be sure to
recompile anything depending on those!
- CAER_HOST_CONFIG_PACKETS_MAX_*_SIZE and MAX_*_INTERVAL options have been
removed, the whole data packeting system is now much simpler with only
two configuration options to control it:
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_INTERVAL
These act at the event packet container level. See packetContainer.h
documentation on more information for how this works.
- Removed LIBCAER_LOG_NONE define from headers, it is now not possible
to completely suppress log output anymore.
- caerGenericEventGetEvent() has had its bounds restricted to [0,eventNumber[
instead of [0,eventCapacity[.
- Event packet copy functions have been renamed to:
- caerEventPacketCopy()
- caerEventPacketCopyOnlyEvents()
- caerEventPacketCopyOnlyValidEvents()
NEW FEATURES
- Support for the aiCTX DYNAP-SE neuromorphic chip was added.
- Added new event type Spike Event for spiking neurons.
- Added new event types Point1D, Point2D, Point3D and Point4D to
hold floating point data in multiple dimensions.
- New event packet functions were added:
- caerEventPacketEquals()
- caerEventPacketClear()
- caerEventPacketClean()
- caerEventPacketResize()
- caerEventPacketGrow()
- caerEventPacketAppend()
- Full native support for C++11 through header library (libcaercpp).
- Improved const-qualification of functions, to allow better compile
time checks for read-only data. A GetEventConst() function was added
to each event type as part of this, to get read-only events.
- Const, reverse and const-reverse iterators were added to all event types.
- davis.h: added support for stereo microphones on DAVIS346mini.
- davis.h: added support for extra signal detectors.
- network.h: added header with functions to help parse AEDAT 3.X
network stream headers.
- frame.h: added support for more color filter configurations.
- packetContainer.h: better documentation, now tracks lowest and highest
timestamps contained, as well as number of total and valid events.
- packetContainer.h: added caerEventPacketContainerUpdateStatistics() to
update above statistics. Automatically called on each addition or
removal of an event packet from the container.
- packetContainer.h: added caerEventPacketContainerFindEventPacketByType*(),
caerEventPacketContainerCopyAllEvents() and caerEventPacketContainerCopyValidEvents()
functions to search for event packets by type and to make deep-copies of them.
- special.h: added new Special Event types, to support extra signal detection
schemes and add Frame Event related timing information.
- special.h: added caerSpecialEventPacketFindEventByType*() and
caerSpecialEventPacketFindValidEventByType*() functions to search for
a specified type of special event.
- libcaer.h: added LIBCAER_VERSION, LIBCAER_NAME_STRING,
LIBCAER_VERSION_STRING and LIBCAER_HAVE_OPENCV defines.
- log.h: added caerLogVA() function to pass va_list arguments directly.
Release 1.0.3 - 28.03.2016
INCOMPATIBLE CHANGES
- davis_fx2.c: removed specific FX2 code, now uses same backend as FX3
for sending all configuration values, due to new firmware version 3
for FX2 DAVIS small-board cameras. A firmware update is required,
please follow the instructions at https://inivation.com/support/software/reflashing/.
NEW FEATURES
- frame.h: add function caerFrameEventGetPixelArrayCGFormat() to
Frame Event, allows to get a copy of the pixels array in the
standard computer graphics format (pixel (0, 0) in upper left
corner) efficently.
- davis.h: add DAVIS_CONFIG_APS_ADC_TEST_MODE parameter to APS module.
Release 1.0.2 - 08.01.2016
IMCOMPATIBLE CHANGES
- frame.h: rename channel number to color channels and add color
filter information, to better specify the information needed
to reconstruct color frames. The 'enum caer_frame_event_color_channels'
and 'enum caer_frame_event_color_filter' hold the possible values.
This change is backwards-compatible with older frame format!
- davis.h, dvs128.h: changed info data structure's integers to be
signed for better cross-language compatibility. Also 'deviceID'
can now be compared directly with 'sourceID' from event packets.
- davis.h: changed type of 'apsColorFilter' in info data structure
to take advantage of new 'enum caer_frame_event_color_filter'.
NEW FEATURES
- common.h: add generic functions for event packet copying, with
support for packet size reductions (copy only valid).
- libcaer.h: add generic clear, get and set functions for bitfields,
and use them in all the event functions to avoid errors.
- config.h: add device configuration event type, for tracking
of device configuration changes in the event stream.
- log.c: add timezone information to log message time information.
- dvs128_simple.cpp, davis_simple.cpp: add C++11 example variants.
- Enable more Clang compiler warnings.
BUG FIXES
- davis_common.c: only update the ROI size information if ROI
updates actually came in from the device.
- Fix and improve documentation, especially for the frame event.
- Fix off-by-one in event's GetEvent() function's warning log message.
- device.c: mark global function pointer arrays static.
- common.h, frame.h: fix compilation of inline functions in
strict C++11 mode.
Release 1.0.1 - 06.11.2015
INCOMPATIBLE CHANGES
- Requires firmware version 2 and logic revision 7449.
- usb.h: improved caerDeviceDataStart() API to also allow for
notification of data acquisition shutdown, to be able to react
to abnormal shutdown cases, like when a device is unplugged.
- frame.h: changed in-memory format for easier handling and compatibility
with the other event formats (all-in-one memory block).
- davis.h: rename DAVIS240 APSOVERFLOWLEVEL to APSOVERFLOWLEVELBN.
NEW FEATURES
- Headers are C++ compatible and stand-alone now.
- MacOS X support.
- Added pkg-config file for library.
- Full API documentation (see docs/ for PDF).
- Various cmake/build improvements. Support out-of-tree builds.
- Add iterator macros for EventPackets.
- frame.h: added ROI region ID tracking, as well as ROI position.
Added caerFrameEventGetExposureLength() and caerFrameEventGetTimestamp(),
which is defined as the median of the exposure times.
Added caerFrameEventPacketGetPixelsSize() and caerFrameEventPacketGetPixelsMaxIndex()
for EventPacket-level size information.
Added caerFrameEventGetPixelsSize() and caerFrameEventGetPixelsMaxIndex()
for Event-level size information.
- log.h: added caerLogFileDescriptorsSet() to allow logging to
up to two different file descriptors (defaults to STDERR only).
- davis.h: added chipID check macros.
- davis.h: added DAVIS_CONFIG_APS_SNAPSHOT to take one frame snapshots.
- dvs128.h: added DVS128_CONFIG_DVS_TS_MASTER to select timestamp
master or slave behavior (timestamp synchronization).
- davis_common.c: added support for outputting only reset read or
signal read frames, for debugging purposes.
- c11threads_posix.h: C11-compatible thread abstraction, for
both Linux and MacOS X, based on POSIX Threads.
BUG FIXES
- Relaxed atomic operations memory constraints for better
performance on weakly-ordered architectures (like ARM).
- log.c: call tzset() before localtime_r(), as per standard.
- davis_common.c: improved Region of Interest support (APS).
- davis_fx2.c: keep GlobalShutter flag correctly in-sync.
- davis_fx3.c: fixed support for new FX3 devices.
- packetContainer.h: handle container being NULL by returning NULL.
Release 1.0.0 - 02.10.2015
- Initial release.
Wiki Tutorials
This package does not provide any links to tutorials in it's rosindex metadata.
You can check on the ROS Wiki Tutorials page for the package.
Package Dependencies
No dependencies on ROS packages.
System Dependencies
Dependant Packages
No known dependants.
Launch files
No launch files found
Messages
No message files found.
Services
No service files found
Plugins
No plugins found.
Recent questions tagged libcaer at Robotics Stack Exchange
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.