broccoli primo v1.2.0
Release of Broccoli primo v1.2.0
New Features
- [control]: A completely new module on control theory and kinematics
- filters: Added various digital filter implementations
- operators: Added signal operator implementations
- sources: Adds signal sources, e.g. a multi-sine implementation
- kinematics: Adds basic kinematics modules for serial robots
- types: Contains generic signal types
- [core]:
- VectorSpaceMapper: Adds a class to map vector spaces
- type_traits: Added type traits file, e.g. to check if a type is an Eigen vector/matrix
- [doxygen]:
- Added tree structure in doxygen with a new menu point for tutorials of every single module.
- Added a first tutorial for the network socket class with example programs for UDP and TCP communication.
- Now uses \ingroup to automatically group objects in modules.
Bug Fixes
- [io]:
LogFileBase::writeCurrentLogStreamToFile()
-> now does not raise an error when only parts (or none) of the requested bytes in the stream could be written. Instead these bytes remain in the buffer, thus theLogger
tries to write them at its next execution cycle. - [core]: Fixed possible integer overflow in high-precision time measurement on QNX based on ClockCycles()
Non-Breaking Changes
- [core]:
- Evaluation of current system time is now shifted from
Time
toPlatformHelpers
to allow OS-dependent code. For QNX now the (synchronized)ClockCycles()
is used for high-precision timing. Through a combination with the (lower-resolution) CLOCK_REALTIME it is now possible to obtain a high-precision absolute system time (Unix Epoch). -
Time::sleep
now usesPlatformHelper::waitFor()
internally
- Evaluation of current system time is now shifted from
- [cmake]:
- Added QNX 7.0 toolchain file (default now)
- [ci/tests]:
- test Release and Debug builds
- Removed timing-related restrictions from unit tests
Breaking Changes
- core module:
-
Time::currentTime()
andTime::evaluateClockResolution()
now always useCLOCK_REALTIME
(no parameter for clock source anymore)
-