- bash tools: added an explicit 'miraindex' command to facilitate reindexing of installed mira packages.
- added new package CameraParameters to install script
- fixed minimum cmake version requirements for some policies

- fixed covariance propagation for 3D RigidTransform composition and 2D/3D RigidTransform inversion
- added HumanReadableEnum macros for generating enums that can be translated to string values and vice versa
- slightly improved syntax check/error message for JSON multidim array element access

- <process>-tag: fix bug preventing the creation of new processed when the config string exceeds the maximum argument list size of the OS
- <process>-tag: usings defined in the scope of a <process>-tag are now visible to the parent and sibling processes
- <process>-tag: added sshport - attribute
- TapePlayer: fix potential delay of isPlaying() state after starting playback

- PolygonObject can draw filled polygon
- DynamicRenderable can update (reduce) the actual vertex count
- fix potential div by 0 in toQImage(const Img&, ...)
- PropertyEditor 'Open' dialog for file properties will start at the path of the current
property value, if non-empty (otherwise, working directory as before)
- added wrapper method to force usage of non-native file dialog static methods for load and save filename getters

- initial version: separated pure camera description parameters from CameraGeometry toolbox

- Ensure min/max parameter in ImgVisualization are not equal
- Polygon(Vector)Visualization supports drawing of filled polygons

- fixed tolerance display radius for Position-/DockingTask

- fixed template of CMakeLists.txt to not include the directories toolboxes and domains for MIRA_GEN_MANIFESTS_ONLY build



- removed camera parameter descriptions and visualization (moved to toolbox CameraParameters in MIRA base)

- PointCloud visualization ignores NaN data to prevent OGRE assertion

- visualization: added ColorMode 'Row'
- visualization skips points with NaN coords (prevents failed OGRE assertion)
- added PCLLoader unit for loading (sequence of) PCD files

- Event: Fixed uninitialized members in default constructor
- Event: Renamed member "enabled" to "canceled" and added reflection for it

- Initial version

- moved header things to separate header file

- Fix excessive uncertainty estimation

- DynamcRiskMapper only resets error state after a successful update
(not after an update skipped because update interval not expired yet)

- Added properties 'DistanceForNoOneWayCostsNearStart' and 'DistanceForNoOneWayCostsNearGoal',
which allows to disable the one-way costs near starting position and goal.
- Fixed crash when goal position is located out of the map.

- Pilot will not cancel task with "NoData" when cost map is outdated, instead stop, signal "WaitForData"
and continue when an updated costmap is available
- SpeedObjective also observes the vphi limit from VelocityTask
- PathObjective uses PositionTask's minTolerance for planner goal radius (ensure the path reaches minTolerance if goal is valid)

- Adapted to changes in Pilot-0.38.0: Since the Pilot now also observes the vphi
of the VelocityTask we can't use zero anymore.

- MotorControllerHG4: Don't initialize the Mileage channel with current total
mileage of the firmware to avoid precision problems.
- MotorControllerHG4: Added channel 'Acceleration' (for firmware >= 1.3.0)
- RPC to re initiate communication with ACS Controller (will abort charging while communicating)

- adapted to split CameraParameters/CameraGeometry

- adapted to split CameraParameters/CameraGeometry

- adapted to split CameraParameters/CameraGeometry

- adapted to split CameraParameters/CameraGeometry

- adapted to split CameraParameters/CameraGeometry

- Updated to JSON Spirit 4.08

- restore filePath variable in XMLDomPreprocessor on backtracking
- json::write has parameter to control precision for floating point number output
  (default precision changed from 17 to 3 [and removing trailing zeros])
- ExtensibleEnum optionally can define a string id with each value
- Added compilation and linking support for examples with OpenCV version >= 3

- precision for EigenMatrix XML serialization increased to 17 digits
- Reworked StripedStorage, now offers StripedStorageXML and StripedStorageBinary (using different serialization backends).
  Limited the scope of the data template type to the store/retrieve methods, this way StripedStorage objects can easily
  be stored in containers despite storing different data types.
- findFiles can no longer return multiple entries for the same path, all returned paths are unique (as determined by operator== of boost::path).
- Made compatible with OpenCV 3.3

- TapeRecorder: Fixed handling of flag avoidDataLoss

- Added control for precision of floating point number display in Text/Text Trace visualizations
- Added control for precision of floating point number display in Text View/Text Trace View
- STLMeshLoader: Fixed exception when converting a STL file to Ogre mesh by using toolbox Assimp.
- Visualizations set the new source channel ID as their name when it is changed
- Visualization3DView: Using correct width and height to determine camera aspect ratio (shouldn't include the RCP title or toolbar heights).
- VisualizationView provides a virtual interface saveContentToFile(Path) to save the content to a file, which is registered to keyboard shortcut CTRL+P.
- Implemented saveContentToFile(Path) for Visualiation3DView and Visualization2DView.
- Added workaround for OGRE bug: Ogre::SimpleRenderable ignores a set render queue priority
- enumeration property combobox (using PropertyHints::enumeration) now working for string property again
- PropertyEditor spinbox smartscroll observes minimum/maximum from property hints
- PropertyEditor::Delegates can provide a name for their property, which is displayed in the
  PropertyEditor instead of the PropertyNode's name
- VisualizationPropertyDelegate registers as a name delegate returning the current visualization name

- TapeRecorderWidget: Store avoidDataLoss flag in recorder configuration.
- TapeRecorderWidget: Update stats once more after stopping the record to show
  the right number of recorded messages.
- enable controlling order of visualizations in Text, Text Trace, 2D, 3D views
- VisualizationView: saveContent via CTRL+P now uses PNG as default if no image file extension is given.
- enable controlling order of visualizations in Text, Text Trace, 2D, 3D views
- Implemented messy vertical flip of coordinate system in Visualization2DView and Visualization2DContainer in a cleaner way.
- enable controlling order of properties in PropertyEditor

- Pose text visualization now also respects the view's Precision property
- Added 3D visualization for vectors and lists of rectangles (Rect2i, Rect2f, Rect2d).
- FramePublisherView checks channel existence instead of just subscribing (thus creating) the input

- Added 2D visualization for vectors of double based 2D RigidTransforms.
- Adapted 2D visualizations after change to coordinate system in GUIVisualization 0.37.
- Adapted visualizations to GUIVisualization 0.37.

- Adapted visualizations to GUIVisualization 0.37

- KeepDistanceTask extended by a separate criticalDistance
- fixes TaskVisualization: avoid showing unintialized objects for empty
  task, draw correctly (continuously update) with dynamic camera frame

- PlotView grid is represented by an own visualization (user editable)
- Added properties LineStyle and LineWidth to curve visualizations
- JSON-based visualization names follow the curve title when the
  displayed member is changed

- Adapted views/visualizations to GUIViews/GUIVisualization 0.37

- Adapted visualizations to GUIVisualization 0.37.
- Adapted 2D visualizations after change to coordinate system in GUIVisualization 0.37.

- Adapted 2D visualizations after change to coordinate system in GUIVisualization 0.37.

- improved Transform Tree View: (selectively) show covariance, searchable, persistence, better layout

- TransformTreeView: better layout for covariance display

- added operator== for DistortionParameters, PinholeCameraIntrinsicNormalized and PinholeCameraIntrinsic

- Made name of the temporary directory more human readable.
- Fixed for use with OpenCV3
- Added new tool OccupancyGridToMCF to easily create a suitable MCF file for a sole occupancy grid file (.xml + .png).
- Extended interface
- Fixed output of the mapping process to the logfiles. Redirecting did not work before.

- Adapted OccupancyGrid visualization to GUIVisualization 0.37.
- Adapted 2D visualizations after change to coordinate system in GUIVisualization 0.37.

- Exposed std::vector<Point2f>, std::vector<Point3f>, Pose2Vector, Pose3Vector, PoseCov2, PoseCov3, PoseCov2Vector, PoseCov3Vector
- Exposed Eigen::Matrix3f, Eigen::Matrix<float,6,6>, Eigen::Matrix<float,7,7> needed for PoseCov2 and PoseCov3
- Fixed for use with OpenCV3
- Exposed std::vector<> for primitive types bool, int, int64, float, std::string

- adpated to changes in StripedStorage

- Adapted PersistentPose plugin to StripedStorage change in MIRABase 0.42.0

- Adapted to changes in MapBuilderBase, implementing the max range parameter.

- added loader property whether to ensure valid occupancy (set to false to keep original data unchanged)

- Adapted to changes in MapBuilderBase, implementing the max range parameter.

- Include trajectories marked as unreachable in debug channel output and ensure their correct drawing
- Adapted DynamicWindowVisualization to change in 2D view.
- PathObjective publishes the task pose as transformation frame ("TargetFrame")
- EstarPlanner+PathObjective: if the goal position is not free when the task is set,
  ensure to keep planning to it when it becomes free afterwards (before timeout)

- Added property 'ExtendPathLength' to specify the length by which the path
  will be extended when 'ExtendPathByTolerance' is activated.
- Time of a transition (mTau) is no longer a fixed value and will be estimated
  by the distance and maximum allowed velocity.

- Fixed some typos in debug messages
- fixed for use with OpenCV3
- Adapted to StripedStorage changes in MIRABase 0.42.0

- Added Marker class
- Adapted 2D visualizations after change to coordinate system in GUIVisualization 0.37.

- automatically start a new log.sqlite each day
- reduced variance in initStationPose from 0.1 to 0.01
- added variable wrongDirectionCost (default 0.5)
- added minOnTime that ensures the robot stays online at least this amount of time until it powers off automatically when there is no active operating slot

- Fixed adding of the one-way costs into the current stage of the CostMapper

- DepthImageAcquisition: Replaced property BorderPixelSkip by four properties
  to specify the size of border (left, right, top, bottom) independently
- DepthImageAcquisition: Added additional DepthCorrectionFactor

- Using ITemplateLocalization instead of ILocalization to ensure, that the
  right service is found.
- StationDialog: display positions and tolerances with more digits

- bugfix: footprint collision check was invalidated by trying
          to set an invalid named footprint (using setFootprintFilter())

- Adapted to latest changes in DockingProcess

- Simulator implements ILocalization: Simulator pose can be set using the Localize tool
- Adapted to StripedStorage changes in MIRABase 0.41.1.
- Notifying via WARNING log entry of failure to restore persistent simulator pose.
- Added persistence to odometry and mileage as well.
- Persistence files are stored in a subfolder '.scitos_simulator' by default now. Can be changed via serialization member.
- Adapted to latest changes in DockingProcess

  PACKAGE_VERSION in library and binary targets
- Qt5 will now also include private headers by default.

- Fixed source location (uri) tracking in XMLDom
- Added annotation field to the framework variables list (for tracking the variable's source),
  which is filled in by XMLDOMPreprocessor

- ChannelLoader: fix <channel> tag having no effect without any of the optional attributes
- Name registry: added annotation field (for tracking the source of aliases),
  which is filled in by Framework::initialize (CLI params) and UsingLoader

- TapePlayerWidget will now indicate which file is opened.
- added EditorPartArea::scrollToSubWindow(), made some Workbench
  methods/slots protected instead of private (allow use in subclasses)
- fixed a crash in ChannelProperty::update (occuring very rarely, for interval subscribers only)
- Mitigated mouse scroll and camera pose discontinuities in CameraOrbitTool for the 3D view, leading to less singularities in the camera representation.
- added missing members initialization for SceneQueryTool
- fixed ogre assertion caused by textObject with empty string
- fixed missing initialization of camera orientation in Visualization2D
- CameraOrbitTool(2D): added camera rotation (hold right mouse button + move), fixed panning a rotated camera
- fixed killing an invalid Qt timer (console error message) on tree view filter change
- Added double specializations for toOgreVector.

- Added 3D visualization for vectors of polygons (Polygon2f, Polygon2d, Polygon3f, Polygon3d).
- Added PoseVector specialization for double RigidTransform types.
- Fixed AxesVisualization2D width when using Qt5.

- bugfix GoalTool: task is now actually sent to selected service
- TaskVisualization: added property 'Show Orientation Tolerance'

- Fixed killing non-existant QTimer which resulted in console output from Qt.
- Added 'DefinitionsListView' which lists all the variables and aliases known
  to the framework and their source (config file/cli/...).
- Added 'initial-workspace' option to MIRACenter, which loads a workspace file but will not
  overwrite it with any changes (changes are written to the configured or default workspace config file).
- Improved editor window management.

- Command line tool now outputs local install directory for packages when called with 'details'.

- added 'copy --drop_same_timestamp' option: do not copy messages causing
  'Dropping data ... since slot with same timestamp already exists' during playback

- tool no longer requires X-Server if command line options are executed

- bugfix PinholeCameraModel::backprojectPixel(): y coord of the ray was never calculated

- handle symlinks when comparing device names

- added functions to read from channel at specified timestamp
- added optional comment to RPC method declaration
- FrameWorkWrapper: added several functions to list/get info on channels/services
- fixed FrameworkWrapper::queryServicesForInterface return type
- added PyUnit::isSubscribedOn

- minor improvement in documentation

- Allow multiple active sensors plugins.
- Revised interface for enabling/disabling sensor plugins.

- Adapted to changes in Poseidon

- Added support for robots which using velocity components in y direction

- Adapted to changes in Poseidon

- compare map region and cellsize instead of just size() when
  checking for (static) map changes requiring reinitialization
- DynamicRiskMapper: now assigning different costs around obstacles for the DilateRadius region
  (existing 'RiskForDilated', default 1.0) and the MinObstacleDistance region (new 'RiskBelowMinDist', default 0.9)
- StaticRiskMapper: ensured consistency with DynamicRiskMapper (properties, cost calculation)

- EstarPlanner: compare map region and cellsize instead of just size() when
  checking for costmap changes requiring reinitialization
- DirectionObjective bugfix: strictly forbidden (by task) backward motion is observed
  when 'AvoidTurnNearGoal' = true, affects whether to turn front or back towards goal
- DirectionObjective: made path direction estimate more robust by using a longer segment
- DistanceObjective: new property 'RotationIgnoresCollision' allows rotation even if the map contains
  obstacles within the footprint
- DynamicWindowVisualization now can display detailed cost info for each cell

- fixed path simulation (only used for visualization)

- Support for new firmware versions of HG4
- Added configuration files for SCITOS-X3-2017 (new version with HG4)

- Allow completely omitting localization (by setting localization='none')
- Fixed setting Poseidon parameters when not using Poseidon

- Added read-only properties for serial number and firmware version
- Fixed crash in USB event handler when using more than one PrimeSense device

- TiM55x: increased valid readings' upper reflectance limit for

- Defining MIRA_SEVERITY_MAX_LEVEL via the build system, allowing us to differentiate between release and relwithdebinfo
when deciding which maximum severity level to allow for logging. Relwithdebinfo now also allows DEBUG and TRACE logging.
- Fixed install target for installing subtargets
- Updated SVN repository path for boost::geometry

- RigidTransform(Cov) stream output now handles const& and rvalues
- Added optional image format tag which is passed to the dot command while generating profiler reports
- enabled reflection of STL collections with non-copyable value types

- Fixed a bug inadvertently altering tape message frameIDs
- Changed channel slot reuse behaviour: now it always keeps at least one slot older than the
configured storage duration (ensure storage duration coverage, rather too much than too little)
- Added missing getters to ChannelBuffer and augmented Channel to also offer these getters as a convenience to the user.
- Fixed missing copy of minSlot parameter in ChannelBuffer::cloneParameters.
- Added 'getUptime' RPC to the Framework

- Forcing Qt-Layout in TapeFileDialog. Otherwise the layout of the file dialog
might be unpredictable and the preview widget is not working.
- Text Trace View: user can control whether changing one row's height affects other rows
- Text Trace View: added options to maintain a max history duration and to freeze (stop updating)
- QConsole now supports reverse lookup via CTRL+R (emulating bash functionality).

- made to compile with Qt5

- Clearing plot no longer makes "l"/"r" markers in legend disappear
- Added a "Freeze" option to stop updating (via context menu)

- TransformTreeView shows absolute distance between frames in tooltip

- made to compile with Qt5

- QuaZip: Replaced UPDATE_COMMAND with PATCH_COMMAND, avoiding failed patches every time MIRAPackage is rebuilt.

- added missing 'copy --drop_same_timestamp' option to usage message


- Forcing Qt-Layout in MCFDialog. Otherwise the layout of the file dialog
might be unpredictable and the preview widget is not working.

- Added 3D visualizations for predefined point cloud types PointCloud2 and PointCloud3.
- PointCloudVisualization (3D): allow changing the (pixel) point size in 'Points' drawstyle

- made CANToolsView an EditorPart in miracenter, i.e. it can be detached and maximized properly

- Modernized Curve API and implementation.

- Made MiraPy's XMLVariablesMap work with the recent changes to this data type in MIRA.
- Added wrappers for some more Pilot tasks
- Python Editor View is an Editor View now (can be properly detached + maximized),
and allows more user layout control through splitter

- Added unique IDs for all plugins, which can be specified in the configuration file.
If now ID is given, the class identifier is used.
- Added new member EnableOnStart to sensor plugin, to enable/disable the
plugins on start. If no sensor module is enabled, the first sensor will be
enabled to preserve the current behaviour.

- Made sensor plugin more robust and more modern.
- Sensor plugins wait for subscribed laser channels at bootup

- Added (missing) resolvePath to be able to use the syntax 'PackageName:path/to/map.mcf' in member MCF

- if merger has only one input, it will just alias it to 'MergedMap' instead of copying (unless 'MergedMap' already exists)

- publishing the docking target as TargetFrame
- base point now used as loaded from xml, not recalculated from docking distance

- Added support for MotorControllerHG4 firmware > 1.4.0
- Added support for EBC HG3

- Head movement is now really simulated
- added support for ACSIdentifier in charger
- added example map
- added very rudimentary support for simulating a charging station (at this point just
a certain pose+tolerance in the environment that sets the charging flag to 'true').

- SickTiM55x: Fixed crash while reading data, if the data package was not fully received

- Added support for Qwt on Windows
- Made 'relwithdebinfo' target compile with Qt5
- Made i18n work with Qt5

- Made to compile on Windows
- Fixed/optimized GeneralBresenhamLineIterator and RasterTransform (and added basic test)

- Made to compile on Windows

- QtUnit can be given a custom dispatcher thread interval
- fixed FrameMoveTool for frames indirectly linked to camera frame etc.
- getIntersection() for all 3d view tools moved to new base class SceneQueryTool,
  tools can also use clicks on view background (configurable)
- made to compile on Windows
- Made to compile on Windows
- enumeration property combobox now orders its entries correctly even with values >=10

- LineVectorVisualization3D: Fix added elements becoming visible even when currently disabled

- adapted PathGoalTool to change in package GUIVisualization
- added target reached check methods in PathFollowTask (convenience)

- Made to compile on Windows

- Made to compile on Windows

- When loading workspace fails, a backup is made before creating default layout

- Fixed trying to backup non-existent workspace file, closing splash screen for message

- fixed "class list" command (display each class once at its class tree position)
- added "rpc listhidden" command

- Improved error handling when parsing package files

- PointCloudVisualization immediately redraws on changed settings
- added GenericPointCloud::setFormat to specify a generic format (no point type -> no convertTo())

- TrajectoryFamilyVisualization also works for container of pointers to trajectories

Additional information