Release Notes 2021-07-28

  • Pending RPC calls will automatically return with an error when the corresponding service is removed (e.g. the connection to a remote framework is lost), without having to wait for a timeout (or, even worse, wait infinitely).

  • The CRSplineInterpolator has been completed to be usable as an alternative to e.g. LinearInterpolator.

  • Authority constructor was ignoring the flag INDEPENDENT_SUBSCRIBER_THREAD, and Authority::subscribeInterval() was ignoring the independentThread parameter. Both issues have been fixed. (Authority::subscribe() was properly respecting its independentThread parameter though.)

  • Specifying explicit transformation types FIXED/MOVING (introduced 2021-12-23) has been simplified: the type can be specified in config <link> tags (read by LinkLoader), and also in Authority::addTransformLink(). The documentation of the transformation framework has been updated to explain the meaning of fixed and moving transformations.

  • Numerous improvements to tape handling:
    • Trying to open a tape that is not a file will throw with a meaningful error message (instead of reading garbage).
    • TapePlayer::stepTo(channel) could add some unnecessary waiting time, which was fixed. Also added stepToAnyOf() to use multiple channels.
    • TapeRecorder could mess up message order when used with avoidDataLoss=true, fixed. Instead of waiting for the recording queue to be processed in the background thread, TapeRecorder::stop() can return immediately and rely on the caller to clean up the queue. This is used by the TapeRecorderWidget to show a progress bar while waiting for the queue to finish. That widget now also allows to set a time limit when starting a recording.

  • Writing/posting to channels with an invalid timestamp (Time::invalid()) could easily terminate the entire program. This could happen e.g. when unknowingly creating an unitialized Stamped<> while trying to post a channel-type object to be initialized with an empty initializer-list. A number of fixes have been added to remove the risk of termination (ensuring an exception is thrown, or, if that is unsafe, an error message displayed) and prevent accidental wrong usage of Channel::post().

  • A possible deadlock was fixed between channel writers and interval readers when using up the channel's maximum slot number (when writing faster than reading).

  • Toolbox Navigation: documentation has been updated for complete description of all task types provided by the toolbox.

  • Toolbox RobotDataTypes: added IPTU (generic interface for Pan-Tilt-Unit driver).

  • Tool mirapackage supports git repositories whose default branch is not 'master'.

  • Tool miratape: simplified selection of a common time interval for play/merge with multiple tapes.

Additional information