Skip to content

broccoli primo v1.2.0

Ghost User requested to merge develop into primo

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 the Logger 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 to PlatformHelpers 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 uses PlatformHelper::waitFor() internally
  • [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() and Time::evaluateClockResolution() now always use CLOCK_REALTIME (no parameter for clock source anymore)

Merge request reports