Release Notes 2024-04-16:

  • If multiple occurences of a library are found during manifest generation (e.g. same package installed in multiple project directories), ManifestGen lists them in the error message.

  • The generic stream operator>> for JSONValue was not correctly implementing input of arbitrary JSON from string based streams, this has been fixed by adding a specific operator overload for std::basic_stringstream. Another issue was fixed which was preventing compilation of JSONValue stream operators with gcc12 and newer (and clang).

  • OpenSSL integration has been updated, removing calls to deprecated functions when using OpenSSL v3.

  • In analogy to writeJSON(), a writeXML() method has been added to Channel, ChannelBuffer etc., allowing to directly post data encoded in XML, e.g. within an XML configuration file.

  • Authority::unsubscribe() does not require the channel type anymore. For compatibility, the template method unsubscribe<Type>() remains valid, but the type is ignored. In particular, a wrong type (different from subscription) does not cause a crash from a null pointer dereference anymore.

  • In DispatcherThread, several issues have been fixed related to stop() interrupting scheduled functions, which could lead to incomplete initialization or timers not starting again on next start(). MicroUnits already enter 'Bootup' state before they are checked in (instead of when they start to initialize), allowing to reliably query if their bootup has finished and their initialization is complete.

    • Note: it is possible now that a MicroUnit's initialize() function is called repeatedly if the MicroUnit (Authority) is stopped during execution of initialize(). Although stopping+restarting during
      initialization can and should be avoided in normal operation, implementation of initialize() may need to be aware of this. E.g. subscribing a channel callback again will lead to the callback function being called twice for each channel update!

  • In the AuthorityManager, locking against concurrent access has been improved to avoid deadlocks from recursive calls such as when an Authority's start() or stop() implementation creates/destroys another Authority.

 

Release Notes 2023-12-15:

  • The MIRA environment enables C++17 standard for compilation, compilers not supporting C++17 are not supported anymore.
  • Added a serialization adapter for std::variant.
  • Added RigidTransform::isWellDefined() to check against NaN elements and invalid covariance matrices.
  • The variadic function implementation for the RPC framework has been reworked, resulting in unlimited number of parameters for RPC functions, and better compile time error diagnostics.
  • Authority has a new startWithParent() method, to control whether child authorities are started when their parent authority starts (required for dynamical switching of submodule activity when the parent authority can be stopped and restarted within an application).
  • A ServiceCall class was added, which acts as a proxy for RPC service methods, with the possibility to check the existence of the service and method (name + signature) at initialization.
  • miracenter AthorityView: the autority status that is displayed is queried by Authority::isStarted() (not Authority::isRunning()), giving more granular status for child authorities

Release Notes 2023-03-17:

  • During build, when there is a discrepancy between a class' abstractness declaration from MIRA_[ABSTRACT_]OBJECT and its actual abstractness, the manifest generator will not just output an error message, but make the build fail by returning an exit code.

  • Serialization: added support for boost::variant.

  • The type name string created by typeName() includes the type's const/volatile qualifiers by default (can be disabled by an optional parameter).

  • Toolbox CameraParameters: added DepthCameraIntrinsic, depth camera visualization.

  • Toolbox RigidModel (Markers): added a new MeshMarker class, allowing to dynamically create objects of arbitrary shape, based on a mesh file (which can be created with 3D editing software like Blender).

  • Toolbox RobotDataTypes: added wrench transformation operators and 3D visualization.

  • miracenter: fullscreen view is restored correctly when loading a respective workspace.

Release Notes 2023-10-13:

  • Build system: New wequired versions for cmake (>= 3.10) and gcc (>= 7.0)

  • XMLDomPreprocessor: variable 'filePath' resolves correctly in files included from xml with no URI.

  • Parameter names for RPC signatures are explicitly stripped of const/reference qualifiers.

  • The performance of the JSONSerializers was improved by avoiding unnecessary copys.

  • Framework: restructured all commandline parameters for clearer presentation.

  • Fixed potential crash when closing a remote connection.

  • mirapackage: Added a lot of new command line options and the most functions can now be used from the command line.

Release Notes 2023-02-01:

  • Geometry: MIRABase provides a new rasterPolygon() method. This provides a generally more exact shape rendering compared to CollisionTest from RigidModel toolbox, while relative performance
    heavily depends on the actual shape. CollisionTest performance has also been improved by storing a bounding box for the active cells from the calculation of lookup tables (best speedup for shapes with high length:width ratio).

  • Toolbox Navigation: Added new task RestrictAreaTask

  • miracenter: with the Ctrl-P command, the view is now captured immediately before displaying the 'Save as' dialogue, improving the possibility to capture dynamic view content.

  • mirapackage: fixed some errors related to handling upper/lower case in URLs.

 

 

Additional information