MRPT  2.0.4
changeLog_doc.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 // clang-format off
11 
12 /** \page changelog Change Log
13  *
14 
15 # Version 2.0.4: Released Jun 20, 2020
16 - Changes in applications:
17  - rawlog-edit, rawlog-grabber: Now allows loading external "plugin" modules (.so) with user-defined types.
18  - RawLogViewer, navlog-viewer, ptg-configurator allows more than one "plugin" modules to be loaded.
19 - Changes in libraries:
20  - \ref mrpt_math_grp
21  - New semantically-rich named static methods:
22  - mrpt::math::TLine3D::FromPointAndDirector()
23  - mrpt::math::TLine3D::FromTwoPoints()
24  - mrpt::math::TLine2D::FromCoefficientsABC()
25  - mrpt::math::TLine2D::FromTwoPoints()
26  - \ref mrpt_obs_grp
27  - CObservation3DRangeScan::points3D_convertToExternalStorage() stores point clouds with points as rows (vs as columns as it did before).
28  - \ref mrpt_opengl_grp
29  - Emit warnings to std::cerr whenever opengl memory is leaked due to OpenGL buffers being created and destroyed in different threads.
30  - Overlaid text messages are now also (de)serialized in mrpt::opengl::COpenGLViewport, and hence in 3D scenes in general.
31  - All opengl shader base classes now expose their internal buffers as const ref. See children of mrpt::opengl::CRenderizable
32  - \ref mrpt_system_grp
33  - New class: mrpt::system::CControlledRateTimer (+ associated example)
34  - New functions: mrpt::system::loadPluginModule(), mrpt::system::loadPluginModules()
35  - mrpt::system::CRateTimer: enforce use of high-resolution monothonic clock.
36  - mrpt::system::CTicTac: enforce use of nanosecond monothonic clock.
37  - Misplaced functions moved to their proper namespace: mrpt::io::vectorToTextFile()
38  - New functions: mrpt::system::thread_name() to get and set thread names for debuggers.
39  - mrpt::system::setConsoleColor(): Do not change color if stdout/stderr are not real terminals.
40  - \ref mrpt_nav_grp
41  - mrpt::nav::PlannerSimple2D does not throw an exception if goal/source is out of map bounds.
42 - BUG FIXES:
43  - mrpt::obs::CObservation3DRangeScan would try to (incorrectly) "autofix" camera resolution if loading an externally-stored observation.
44  - mrpt::maps::CPointsMap::determineMatching2D(): avoid potential multi-thread problems with a vector::swap()
45  - Fix build against opencv <3.4.4
46  - Fix potential pointer to local returned in CParticleFilterData
47  - Fix: mrpt::maps::CPointsMapXYZI::setFromPCLPointCloudXYZI() was using a non-existing method.
48  - Fix: mrpt::nav::PlannerSimple2D did not honored maximum path length correctly.
49  - Fix race condition in CGenericCamera_AVI unit test.
50 - Deprecations:
51  - mrpt::system::TParameters is now deprecated.
52 - BUG FIXES:
53  - Avoid crash in camera-calib app when clicking "Close" while capturing a live video.
54 
55 ------
56 # Version 2.0.3: Released May 13, 2020
57 - Changes in applications:
58  - navlog-viewer: Can now navigate with keyboard arrows too.
59  - RawLogViewer: better 3D pointcloud coloring in observation view and in "scan animation" view.
60 - Changes in libraries:
61  - \ref mrpt_maps_grp
62  - Point cloud classes mrpt::maps::CPointsMap: New methods:
63  - load2D_from_text_stream()
64  - load3D_from_text_stream()
65  - save2D_to_text_stream()
66  - save3D_to_text_stream()
67  - \ref mrpt_poses_grp
68  - More accurate analytical Jacobians for CPose3DQuatPDFGaussian::inverse() (Closes #1053)
69  - BUG FIXES:
70  - Incorrect number of points loaded when trying to load point clouds from incorrectly-formatted text files.
71  - Fix build error in riscv64 (gcc doesn't know mtune=native for that arch)
72  - Fix spurious unit test failures in mrpt::apps::RawlogGrabberApp due to system load.
73 
74 ------
75 # Version 2.0.2: Released May 4th, 2020
76 - Changes in applications:
77  - navlog-viewer: Ported to the new nanogui UI system (fixes random OpenGL context errors in former version).
78 - Changes in libraries:
79  - mrpt_containers_grp
80  - mrpt::containers::vector_with_small_size_optimization: Get rid of potential uninitialized usage GCC warnings.
81  - mrtp_hwdrivers_grp
82  - Remove support for obsolete XSens MTi 3rd generation devices. Removed class mrpt::hwdrivers::CIMUXSens. 4th+ generation still supported.
83  - mrpt_gui_grp
84  - Fix mouse-motion rotation glitches if clicking inside a nanogui control.
85  - Fix cmake errors building user programs in Windows (missing glfw dependency).
86  - mrpt_math_grp
87  - mrpt::math::RANSAC_Template made more generic to support custom dataset and model types.
88  - mrpt_opengl_grp
89  - Fix displaying of uninitialized textured in mrpt::opengl::CTexturedPlane. It now uses the default solid color of the object.
90  - mrpt_ros1bridge_grp
91  - Narrower build and run time dependencies: rosbag -> rosbag_storage
92 
93 ------
94 # Version 2.0.1: Released April 3rd, 2020
95 - Changes in applications:
96  - RawLogViewer: new "-l xxx.so" flag to load datasets with types defined in external projects.
97 - Changes in libraries:
98  - mrpt_obs_grp
99  - mrpt::obs::CObservationRobotPose: Fixed missing serialization of sensorPose
100 
101 ------
102 # Version 2.0.0: Released March 29th, 2020
103 - **Most important changes:**
104  - MRPT now requires **C++17** to build and use. See this page for a guide to port existing code to MRPT 2.0: \ref porting_mrpt2
105  - Support for old namespaces `mrpt-scanmatching`, `mrpt-reactivenav` is over.
106  - Backwards compatible headers for "maps" and "observations" in mrpt::slam are removed. They moved to their own namespaces in MRPT v1.3.0 (Jan 2015).
107  - All pointer typedefs are now in their respective classes: FooPtr -> Foo::Ptr
108  - Add support for serialization with std::variant
109  - PbMap has been factored out into [its own repository](https://github.com/MRPT/pbmap)
110  - XML-based database C++ classes have been removed from MRPT.
111 - Changes in applications:
112  - RawLogViewer:
113  - The ICP module now supports Velodyne 3D scans.
114  - rawlog-edit:
115  - New operation: `--de-externalize`
116  - pf-localization:
117  - Odometry is now used also for observation-only rawlogs.
118 - Changes in libraries:
119  - All `otherlibs` subdirectories have been renamed to `3rdparty` since it is a widespread name used in most projects.
120  - \ref mrpt_base_grp => Refactored into several smaller libraries, one per namespace.
121  - Removed class std::vector<std::string>. Replace by STL containers of `std::string` and functions mrpt::system::stringListAsString() in \ref string_manage.
122  - \ref mrpt_core_grp [NEW IN MRPT 2.0.0]
123  - Memory alignment of aligned_allocator_cpp11<> is set to 16,32 or 64 depending on whether AVX optimizations are enabled, to be compatible with Eigen.
124  - mrpt::cpu::supports(): a new cross-OS CPU feature detection function.
125  - mrpt::Clock allows users to select between Realtime or Monotonic sources.
126  - Removed custom macro MRPT_UNUSED_PARAM (replaced by c++17 attribute).
127  - Add syntactic suggar mrpt::lockHelper()
128  - \ref mrpt_math_grp [NEW IN MRPT 2.0.0]
129  - Removed functions (replaced by C++11/14 standard library):
130  - mrpt::math::erf, mrpt::math::erfc, std::isfinite, mrpt::math::std::isnan
131  - `mrpt::math::make_vector<>` => `std::vector<>{...}` braced initializator
132  - Removed the include file: `<mrpt/math/jacobians.h>`. Replace by `<mrpt/math/num_jacobian.h>` or individual methods in \ref mrpt_poses_grp classes.
133  - \ref mrpt_config_grp [NEW IN MRPT 2.0.0]
134  - mrpt::config::CConfigFileBase::write() now supports enum types.
135  - \ref mrpt_gui_grp
136  - New class mrpt::gui::CDisplayWindowGUI exposing powerful GUI possibilities via the nanogui project.
137  - \ref mrpt_img_grp [NEW IN MRPT 2.0.0]
138  - mrpt::img::TCamera distortion parameters now also supports the extra K4,K5,K6 distortion parameters.
139  - \ref mrpt_serialization_grp [NEW IN MRPT 2.0.0]
140  - New method mrpt::serialization::CArchive::ReadPOD() and macro `MRPT_READ_POD()` for reading unaligned POD variables.-
141  - Add support for `$env{}` syntax to evaluate environment variables.
142  - \ref mrpt_slam_grp
143  - rbpf-slam: Add support for simplemap continuation.
144  - CICP: parameter `onlyClosestCorrespondences` deleted (always true now).
145  - mrpt::slam::CICP API: Simplified and modernized to use only one output parameter, using std::optional.
146  - \ref mrpt_system_grp
147  - functions to get timestamp as *local* time were removed, since they don't make sense. All timestamps in MRPT are UTC, and they can be formated as dates in either UTC or local time frames.
148  - Added: mrpt::system::WorkerThreadsPool
149  - \ref mrpt_rtti_grp [NEW IN MRPT 2.0.0]
150  - All classes are now registered (and de/serialized) with their full name including namespaces. A backwards-compatible flag has been added to mrpt::rtti::findRegisteredClass().
151  - CLASS_INIT() macro for automatic registration of classes has been removed, since it is not well-defined in which order global objects will be initialized.
152  Therefore, manual registration (as already done in registerAllClasses.cpp files) is left as the unique registration system.
153  This fixes warning messages "[mrpt::rtti::registerClass] Warning: Invoked with a nullptr".
154  - \ref mrpt_nav_grp
155  - Removed deprecated mrpt::nav::THolonomicMethod.
156  - mrpt::nav::CAbstractNavigator: callbacks in mrpt::nav::CRobot2NavInterface are now invoked *after* `navigationStep()` to avoid problems if user code invokes the navigator API to change its state.
157  - Added methods to load/save mrpt::nav::TWaypointSequence to configuration files.
158  - Waypoints now have a field `speed_ratio` which is directly forwarded to the low-level reactive navigator.
159  - \ref mrpt_comms_grp [NEW IN MRPT 2.0.0]
160  - This new module has been created to hold all serial devices & networking classes, with minimal dependencies.
161  - \ref mrpt_maps_grp
162  - mrpt::maps::CMultiMetricMap has been greatly simplified and now it is actually defined in the mrpt-maps library.
163  - New map type: mrpt::maps::CPointsMapXYZI for pointclouds with an intensity channel.
164  - New observation class: mrpt::obs::CObservationPointCloud
165  - Added optional "channel" attribute to CReflectivityGridMap2D and CObservationReflectivity to support different colors of light.
166  - \ref mrpt_hwdrivers_grp
167  - COpenNI2Generic: is safer in multithreading apps.
168  - CHokuyoURG:
169  - Rewrite driver to be safer and reduce mem allocs.
170  - New parameter `scan_interval` to decimate scans.
171  - VelodyneCalibration: Can now load YAML files, in addition to XML.
172  - New sensor state enum value: mrpt::hwdrivers::CGenericSensor::ssUninitialized
173  - NMEA GPS parser: now also recognizes all existing talker IDs (GP, GN, GA, etc.)
174  - \ref mrpt_opengl_grp
175  - Update Assimp lib version 4.0.1 -> 4.1.0 (when built as ExternalProject)
176  - Rendering engine rewritten to work using OpenGL Core (GLSL 3.3) instead of Legacy fixed functions.
177  - \ref mrpt_obs_grp
178  - mrpt::obs::CObservation2DRangeScan: Deprecated access to scan data via proxy objects `obs->scan[i]`, `obs->validRange[i]`, `obs->intensity[i]` has been deleted. Please use the alternative getters/setters: `obs->getScanRange(i)`, etc.
179  - mrpt::obs::T3DPointsProjectionParams and mrpt::obs::CObservation3DRangeScan::unprojectInto now together support organized PCL point clouds.
180  - New method: mrpt::obs::CObservation3DRangeScan::rangeImage_getAsImage()
181  - Support for multiple-return sensors in mrpt::obs::CObservation3DRangeScan.
182  - New NMEA frame class: Message_NMEA_GSA
183  - \ref mrpt_poses_grp [NEW IN MRPT 2.0.0]
184  - Reorganized all Lie Algebra methods into \ref mrpt_poses_lie_grp
185  - Removed CPose3DRotVec, since its conceptual design is identical to Lie tangent space vectors.
186  - \ref mrpt_vision_grp
187  - Removed FASTER methods, and the libCVD 3rd party dependency.
188 
189 - BUG FIXES:
190  - Fix reactive navigator inconsistent state if navigation API is called from within rnav callbacks.
191  - Fix incorrect evaluation of "ASSERT" formulas in mrpt::nav::CMultiObjectiveMotionOptimizerBase
192  - Fix aborting reading from LMS111 scanner on first error.
193  - Fix == operator on CPose3D: it now uses an epsilon for comparing the rotation matrices.
194  - Fix accessing unaligned POD variables deserializing CObservationGPS (via the new `MRPT_READ_POD()` macro).
195  - Fix segfault in CMetricMap::loadFromSimpleMap() if the provided CMetricMap has empty smart pointers.
196  - Fix crash in CGPSInterface when not setting an external mutex.
197  - Fix potential crashes in RawLogViewer while editing list of observations.
198  - Fix incorrect conversion from quaternion to CPose3D.
199 
200 <a name="1.5.7">
201 <h2>Version 1.5.7: Released 24/APR/2019 </h2></a>
202 - <b>Detailed list of changes:</b>
203  - \ref mrpt_base_grp
204  - The following features have been finally ported to C++11. User code now requires, at least, C++11 enabled:
205  - stlplus-based smart pointers replaced by std::shared_ptr. Backwards compatibility API is maintained.
206  - mrpt::system::TThreadHandle now is a wrapper around std::thread.
207  - Atomic counters now based on std::atomic. Custom implementation has been removed.
208  - stlplus source code has been removed.
209  - mrpt::utils::COutputLogger: change log str format from "[name|type|time]" to "[time|type|name]".
210  - \ref mrpt_graphslam_grp
211  - levenberg-Marquardt graphslam modified to use more stable SE(2) Jacobians.
212  - CNetworkOfPoses: read/write format made compatible with G2O EDGE_SE2 types.
213  - \ref mrpt_nav_grp
214  - Add virtual method CAbstractPTGBasedReactive::getHoloMethod()
215  - New method CAbstractPTGBasedReactive::enableRethrowNavExceptions() to rethrow exceptions during navigation.
216  - Waypoints now have a field `speed_ratio` which is directly forwarded to the low-level reactive navigator.
217  - BUG FIXES:
218  - Fix missing "-ldl" linker flag.
219  - Fix building against wxWidgets 3.1.1 in Windows (zlib link error).
220  - Fix potential segfault in 3D reactive navigator.
221 
222 <hr>
223 <a name="1.5.6">
224 <h2>Version 1.5.6: Released 24/APR/2018 </h2></a>
225  - Applications:
226  - pf-localization:
227  - Odometry is now used also for observation-only rawlogs.
228  - \ref mrpt_hwdrivers_grp
229  - mrpt::hwdrivers::COpenNI2Generic: added mutexes for safer
230 multi-threading operation.
231  - mrpt::hwdrivers::CHokuyoURG: Added a new parameter to skip scans.
232 Driver clean up to be safer and perform less memory allocs.
233  - \ref mrpt_maps_grp
234  - COccupancyGridMap2D: New LIDAR insertion parameters:
235 maxFreenessUpdateCertainty, maxFreenessInvalidRanges.
236  - \ref mrpt_reactivenav_grp
237  - CAbstractPTGBasedReactive: Added new score `holo_stage_eval`.
238  - BUG FIXES:
239  - circular_buffer: exception made state preserving
240 
241 <hr>
242 <a name="1.5.5">
243 <h2>Version 1.5.5: (Under development) </h2></a>
244 - <b>Detailed list of changes:</b>
245  - \ref mrpt_nav_grp
246  - mrpt::nav::CHolonomicFullEval now uses an internal sin/cos LUT cache
247 for improved performance.
248  - \ref mrpt_hwdrivers_grp
249  - A new class for SICK TIM561(TIM55x/TIM56x) lidar:
250  - A new source file named CSICKTim561Eth_2050101.cpp, which supports
251 SICK TIM series lidar including Tim55x, Tim56x
252  - mrpt::hwdrivers::CSICKTim561Eth
253  - A new test sample for SICK TIM561(TIM55x/TIM56x) lidar:
254  - sample/SICK_tim561eth_test/test.cpp
255  - BUG FIXES:
256  - Fix likelihood computation in mrpt::maps::CReflectivityGridMap2D
257 (which led to crash)
258  - Fixed regression in particle resampling affecting RBPF-SLAM methods.
259 Introduced in Dec. 2016 with [this
260 commit](https://github.com/MRPT/mrpt/commit/691973813bdc53d3faa7088b092eb041aa80d0ce).
261 
262 <hr>
263 <a name="1.5.4">
264 <h2>Version 1.5.4: Released 31/OCT/2017 </h2></a>
265 - <b>Detailed list of changes:</b>
266  - \ref mrpt_base_grp
267  - Fix potential uninitialized value in
268 CRobot2DPoseEstimator::getLatestRobotPose()
269  - MRPT_getCompilationDate() returns time as well
270  - \ref mrpt_gui_grp
271  - mrpt::gui::mrptEventMouseMove: Added new mrpt::gui windows event
272 type.
273  - Build system:
274  - Fix MRPTConfig.cmake for system octomap libraries.
275  - Fix package-contains-vcs-control-file (.gitingore) Lintian error.
276  - Fix compiling without liboctomap-dev in Ubuntu PPA.
277  - BUG FIXES:
278  - Fix waypoint reactive navigator edge case in which "end event" won't
279 be issued.
280  - Fix waypoint reactive navigator error while doing final aligning
281 (missing and dupplicated nav-end events).
282  - Fix aborting reading from LMS111 scanner on first error.
283  - Fix waypoint reactive navigator edge case in which "end event" won't
284 be issued.
285  - Fix corrupted pointers in CNetworkOfPoses after copy or move
286 operations.
287  - Fix invalid TP-targets generated during reactive navigation.
288  - Fix memory leak in reactivenav engine.
289  - Fix potential out-of-range access in
290 CObservation3DRangeScan::convertTo2DScan()
291 
292 <hr>
293 <a name="1.5.3">
294 <h2>Version 1.5.3: Released 13/AUG/2017 </h2></a>
295 - <b>Detailed list of changes:</b>
296  - CMake >=3.1 is now required for use of ExternalProjects.
297  - Scripts `scripts/prepare_{debian,release}.sh` have been refactored and
298 simplified.
299  - Removed embedded source code versions of Eigen, assimp and octomap.
300 Downloaded and built as ExternalProjects if not present in the system.
301  - Releases will be signed with PGP from now on and posted as binary
302 attachments to GitHub releases.
303 
304 <hr>
305 <a name="1.5.2">
306 <h2>Version 1.5.2: Released 6/AUG/2017 </h2></a>
307 - <b>Detailed list of changes:</b>
308  - Changes in libraries:
309  - \ref mrpt_base_grp
310  - Added methods:
311  - mrpt::synch::CCriticalSection::try_enter()
312  - mrpt::synch::CCriticalSectionRecursive::try_enter()
313  - \ref mrpt_nav_grp
314  - mrpt::nav::CAbstractNavigator: callbacks in
315 mrpt::nav::CRobot2NavInterface are now invoked *after* `navigationStep()` to
316 avoid problems if user code invokes the navigator API to change its state.
317  - Added methods to load/save mrpt::nav::TWaypointSequence to
318 configuration files.
319  - \ref mrpt_slam_grp
320  - rbpf-slam: Add support for simplemap continuation.
321  - BUG FIXES:
322  - Fix reactive navigator inconsistent state if navigation API is called
323 from within rnav callbacks.
324  - Fix incorrect evaluation of "ASSERT" formulas in
325 mrpt::nav::CMultiObjectiveMotionOptimizerBase
326 
327 <hr>
328 <a name="1.5.1">
329 <h2>Version 1.5.1: Released 21/JUN/2017 </h2></a>
330 - <b>Detailed list of changes:</b>
331  - Changes in libraries:
332  - \ref mrpt_nav_grp
333  - fix const-correctness:
334 [commit](https://github.com/MRPT/mrpt/commit/7e79003d2adeb7b170fa04e0bc34d42707e07306)
335  - More flexible callback behavior:
336 [commit](https://github.com/MRPT/mrpt/commit/5b054336a1ac75f6e4f8741e5049971917a2980a)
337 
338 
339 <hr>
340 <a name="1.5.0">
341 <h2>Version 1.5.0: Released 10-JUN-2018</h2></a>
342  - Changes in apps:
343  - New app
344 [PTG-configurator](http://www.mrpt.org/list-of-mrpt-apps/application-ptg-configurator/)
345  -
346 [ReactiveNavigationDemo](http://www.mrpt.org/list-of-mrpt-apps/application-reactivenavigationdemo/)
347 has been totally rebuilt as a 3D visualizer capable of testing different
348 navigation algorithms and robot kinematics.
349  - [RawLogViewer](http://www.mrpt.org/list-of-mrpt-apps/rawlogviewer/):
350  - Now displays a textual and graphical representation of all
351 observation timestamps, useful to quickly detect sensor "shortages" or temporary
352 failures.
353  - New menu operation: "Edit" -> "Rename selected observation"
354  - mrpt::obs::CObservation3DRangeScan pointclouds are now shown in
355 local coordinates wrt to the vehicle/robot, not to the sensor.
356  -
357 [rawlog-edit](http://www.mrpt.org/list-of-mrpt-apps/application-rawlog-edit/):
358 New flag: `--txt-externals`
359  - Changes in libraries:
360  - \ref mrpt_base_grp
361  - New API to interface ZeroMQ: \ref noncstream_serialization_zmq
362  - Deprecated function (since 1.3.0) deleted:
363 mrpt::system::registerFatalExceptionHandlers()
364  - New method mrpt::poses::CPosePDFParticles::resetAroundSetOfPoses()
365  - Class mrpt::utils::CRobotSimulator renamed ==>
366 mrpt::kinematics::CVehicleSimul_DiffDriven
367  - New twist (linear + angular velocity state) classes:
368 mrpt::math::TTwist2D, mrpt::math::TTwist3D
369  - New template method: mrpt::utils::CStream::ReadAsAndCastTo
370  - Added missing method mrpt::poses::CPose2D::inverseComposePoint()
371 for consistency with CPose3D
372  - New class std::recursive_mutex
373  - New class mrpt::system::COutputLogger replaces the classes
374 mrpt::utils::CDebugOutputCapable (deprecated) and mrpt::utils::CLog (removed).
375  - New macros for much more versatily logging:
376  - MRPT_LOG_DEBUG(), MRPT_LOG_INFO(), MRPT_LOG_WARN(),
377 MRPT_LOG_ERROR()
378  - MRPT_LOG_DEBUG_STREAM, MRPT_LOG_INFO_STREAM,
379 MRPT_LOG_WARN_STREAM, MRPT_LOG_ERROR_STREAM
380  - New functions for polynomial roots: see \ref polynomial_roots
381  - New functions for signal filtering: see \ref filtering_grp
382  - New functions for Fresnel integrals: see \fresnel_integrals_grp
383  - New classes mrpt::math::CAtan2LookUpTable,
384 mrpt::math::CAtan2LookUpTableMultiRes
385  - [API change] The following functions are no longer static methods:
386 (since their classes are now derived from the state-aware
387 mrpt::system::COutputLogger)
388  - mrpt::math::RANSAC_Template::execute()
389  - mrpt::math::CLevenbergMarquardtTempl::execute()
390  - Deleted methods in Eigen-extensions: leftDivideSquare(),
391 rightDivideSquare()
392  - Removed support for **named** semaphores in
393 mrpt::synch::CSemaphore
394  - new method mrpt::system::CTimeLogger::getLastTime()
395  - Removed mrpt::utils::CStartUpClassesRegister, replaced by the new
396 macro MRPT_INITIALIZER()
397  - New class mrpt::utils::CRateTimer
398  - mrpt::poses::CRobot2DPoseEstimator now uses a more generic
399 odometry-based velocity model (vx,vy,omega).
400  - New template mrpt::utils::ts_hash_map<> for thread-safe,
401 std::map-like containers based on hash functions.
402  - Included exprtk header-only library to runtime compile &
403 evaluation of mathematical expressions, under `<mrpt/3rdparty/exprtk.hpp>`
404  - New smart pointer templates: `mrpt::utils::copy_ptr<>`,
405 `mrpt::utils::poly_ptr<>`.
406  - New colormap: mrpt::utils::hot2rgb()
407  - New function mrpt::system::find_mrpt_shared_dir()
408  - New class mrpt::containers::CDynamicGrid3D<>
409  - New function mrpt::comms::net::http_request()
410  - New function mrpt::system::now_double()
411  - New function mrpt::rtti::getAllRegisteredClassesChildrenOf()
412  - Safer CClassRegistry: detect and warn on attempts to duplicated
413 class registration.
414  - New class mrpt::expr::CRuntimeCompiledExpression
415  - mrpt::config::CConfigFile and mrpt::config::CConfigFileMemory now
416 can parse config files with end-of-line backslash to split long strings into
417 several lines.
418  - New class mrpt::poses::FrameTransformer
419  - mrpt::poses classes now have all their constructors from
420 mrpt::math types marked as explicit, to avoid potential ambiguities and
421 unnoticed conversions.
422  - [Sophus](https://github.com/strasdat/Sophus/) is now used
423 internally for some Lie Algebra methods, and also exposed to the user as
424 `#include <mrpt/3rdparty/sophus/so3.hpp>`, etc. as part of mrpt-base
425  - \ref mrpt_bayes_grp
426  - [API change] `verbose` is no longer a field of
427 mrpt::bayes::CParticleFilter::TParticleFilterOptions. Use the
428 setVerbosityLevel() method of the CParticleFilter class itself.
429  - [API change] mrpt::bayes::CProbabilityParticle (which affects all
430 PF-based classes in MRPT) has been greatly simplified via usage of the new
431 mrpt::utils::copy_ptr<> pointee-copy-semantics smart pointer.
432  - \ref mrpt_graphs_grp
433  - New class mrpt::graphs::ScalarFactorGraph, a simple but extensible
434 linear GMRF solver. Refactored from mrpt::maps::CGasConcentrationGridMap2D, etc.
435  - \ref mrpt_gui_grp
436  - mrpt::gui::CWxGLCanvasBase is now derived from
437 mrpt::opengl::CTextMessageCapable so they can draw text labels
438  - New class mrpt::gui::CDisplayWindow3DLocker for exception-safe 3D
439 scene lock in 3D windows.
440  - \ref mrpt_hwdrivers_grp
441  - Using rplidar newest SDK 1.5.6 instead of 1.4.3, which support
442 rplidar A1 and rplidar A2
443  - mrpt::hwdrivers::CNTRIPEmitter can now also dump raw NTRIP data to
444 a file
445  - \ref mrpt_kinematics_grp
446  - New classes for 2D robot simulation:
447  - mrpt::kinematics::CVehicleSimul_DiffDriven
448  - mrpt::kinematics::CVehicleSimul_Holo
449  - New classes for 2D robot kinematic motion commands. See children
450 of mrpt::kinematics::CVehicleVelCmd
451  - \ref mrpt_maps_grp
452  - mrpt::maps::COccupancyGridMap2D::loadFromBitmapFile() correct
453 description of `yCentralPixel` parameter.
454  - mrpt::maps::CPointsMap `liblas` import/export methods are now in a
455 separate header. See \ref mrpt_maps_liblas_grp and \ref dep-liblas
456  - New class mrpt::maps::CRandomFieldGridMap3D
457  - New class mrpt::maps::CPointCloudFilterByDistance
458  - \ref mrpt_obs_grp
459  - [ABI change] mrpt::obs::CObservation2DRangeScan
460  - range scan vectors are now protected for safety.
461  - New getter/setter methods.
462  - backwards-compatible proxies added for read-only from range
463 scan members.
464  - [ABI change] mrpt::obs::CObservation3DRangeScan:
465  - Now uses more SSE2 optimized code
466  - Depth filters are now available for
467 mrpt::obs::CObservation3DRangeScan::unprojectInto() and
468 mrpt::obs::CObservation3DRangeScan::convertTo2DScan()
469  - New switch
470 mrpt::obs::CObservation3DRangeScan::EXTERNALS_AS_TEXT for runtime selection of
471 externals format.
472  - mrpt::obs::CObservation2DRangeScan now has an optional field for
473 intensity.
474  - mrpt::obs::CRawLog can now holds objects of arbitrary type, not
475 only actions/observations. This may be useful for richer logs aimed at
476 debugging.
477  - mrpt::obs::CObservationVelodyneScan::generatePointCloud() can now
478 generate the microseconds-precise timestamp for each individual point (new param
479 `generatePerPointTimestamp`).
480  - \ref mrpt_opengl_grp
481  - [ABI change] mrpt::opengl::CAxis now has many new options exposed
482 to configure its look.
483  - mrpt::opengl::CSetOfLines can now optionally show vertices as
484 dots.
485  - lib3DS is no longer shipped as an embedded version. A system
486 library in Linux is required to use mrpt::opengl::C3DSScene. Use
487 mrpt::opengl::CAssimpModel as a more powerful alternative.
488  - \ref mrpt_slam_grp
489  - [API change] mrpt::slam::CMetricMapBuilder::TOptions does not have
490 a `verbose` field anymore. It's supersedded now by the verbosity level of the
491 CMetricMapBuilder class itself.
492  - [API change] getCurrentMetricMapEstimation() renamed
493 mrpt::slam::CMultiMetricMapPDF::getAveragedMetricMapEstimation() to avoid
494 confusions.
495  - \ref mrpt_hwdrivers_grp
496  - mrpt::hwdrivers::CGenericSensor: external image format is now
497 `png` by default instead of `jpg` to avoid losses.
498  - [ABI change] mrpt::hwdrivers::COpenNI2Generic:
499  - refactored to expose more methods and allow changing
500 parameters via its constructor.
501  - Now supports reading from an IR, RGB and Depth channels
502 independenty.
503  - mrpt::hwdrivers::CHokuyoURG now can optionally return intensity
504 values.
505  - Deleted old, unused classes:
506  - mrpt::hwdrivers::CBoardIR
507  - mrpt::hwdrivers::CBoardDLMS
508  - mrpt::hwdrivers::CPtuHokuyo
509  - mrpt::hwdrivers::CHokuyoURG no longer as a "verbose" field. It's
510 superseded now by the COutputLogger interface.
511  - mrpt::hwdrivers::CActivMediaRobotBase and the embedded ARIA
512 library have been removed. Nowadays, one can access to ARIA robots via ROS
513 packages more easily than via MRPT.
514  - \ref mrpt_maps_grp
515  - mrpt::maps::CMultiMetricMapPDF added method
516 CMultiMetricMapPDF::prediction_and_update_pfAuxiliaryPFStandard().
517  - \ref mrpt_nav_grp
518  - New mrpt::nav::CWaypointsNavigator interface for waypoint
519 list-based navigation.
520  - [ABI & API change] PTG classes refactored (see new virtual base
521 class mrpt::nav::CParameterizedTrajectoryGenerator and its derived classes):
522  - Old classes `CPTG%d` have been renamed to describe each path
523 type. Old PTGs #6 and #7 have been removed for lack of practical use.
524  - New separate classes for PTGs based on numerically-integrated
525 paths and on closed-form formulations.
526  - Old deprecated method of PTGs `lambdaFunction()` removed.
527  - Parameters are no longer passed via a
528 mrpt::system::TParameters class, but via a mrpt::config::CConfigFileBase which
529 makes parameter passing to PTGs much more maintainable and consistent.
530  - PTGs now have a score_priority field to manually set hints
531 about preferences for path planning.
532  - PTGs are now mrpt::config::CLoadableOptions classes
533  - New classes:
534  - mrpt::nav::CMultiObjectiveMotionOptimizerBase
535  - \ref mrpt_graphslam_grp
536  - Extend mrpt-graphslam lib to execute simulated/real-time
537 graphSLAM. mrpt-graphslam supports 2D/3D execution of graphSLAM, utilizing
538  LaserScans, odometry information.
539  - Develop application `graphslam-engine` that executes graphSLAM via
540  the mrpt-graphslam lib
541  - mrpt::grpahslam::CGraphSlamEngine as the generic object that
542  manages graphSLAM, Node/Edge registration decider
543  classes under the mrpt::graphslam::deciders namesapce, optimizer
544  wrapper classes under mrpt::graphslam::optimizers
545  - Changes in build system:
546  - [Windows only] `DLL`s/`LIB`s now have the signature
547 `lib-${name}${2-digits-version}${compiler-name}_{x32|x64}.{dll/lib}`, allowing
548 several MRPT versions to coexist in the system PATH.
549  - [Visual Studio only] There are no longer `pragma comment(lib...)` in
550 any MRPT header, so it is the user responsibility to correctly tell user
551 projects to link against MRPT libraries. Normally, this is done with the
552 standard command `TARGET_LINK_LIBRARIES(MYTARGET ${MRPT_LIBS})`.
553  - Debian package: depends on libopenni-dev
554  - Optional dependency `liblas`: minimum required version is now 1.6.0
555 (Ubuntu Trusty or above).
556  - Update of embedded copy of nanoflann to version 1.2.0.
557  - New script for automated dumping stack traces on unit tests failures
558 (`tests/run_all_tests_gdb.sh`)
559  - Fix build against wxWidgets 3.1.*
560  - Embedded version of gtest upgraded to 1.8.0
561  - BUG FIXES:
562  - Fix inconsistent state after calling
563 mrpt::obs::CObservation3DRangeScan::swap()
564  - Fix SEGFAULT in mrpt::obs::CObservation3DRangeScan if trying to build
565 a pointcloud in an external container (mrpt::opengl, mrpt::maps)
566  - Fix mrpt::hwdrivers::CHokuyoURG can return invalid ray returns as
567 valid ranges.
568  - Fix PTG look-up-tables will always fail to load from cache files and
569 will re-generate (Closes [GitHub #243](https://github.com/MRPT/mrpt/issues/243))
570  - Fix mrpt::maps::COccupancyGridMap2D::simulateScanRay() fails to mark
571 out-of-range ranges as "invalid".
572  - Fix mrpt::io::CMemoryStream::Clear() after assigning read-only
573 memory blocks.
574  - Fix point into polygon checking not working for concave polygons. Now,
575 mrpt::math::TPolygon2D::contains() uses the winding number test which works for
576 any geometry.
577  - Fix inconsistent internal state after externalizing
578 mrpt::obs::CObservation3DRangeScan
579  - Fix a long outstanding bug regarding losing of keystroke events in
580 CDisplayWindow3D windows (Closes #13 again)
581  - Fix wrong units for negative numbers in mrpt::system::unitsFormat()
582  - Fix potential thread-unsafe conditions while inserting a
583 mrpt::obs::CObservation2DRangeScan into a pointmap with SSE2 optimizations
584 enabled.
585  - CStream: Fix memory leak if an exception (e.g. EOF) is found during
586 object deserialization.
587  - Fix a bug in the `onlyUniqueRobust` option for point cloud matching
588 (affecting CICP, etc.). Thanks [Shuo](https://github.com/ygzhangsoya)!
589 
590 <hr>
591 <a name="1.4.0">
592  <h2>Version 1.4.0: Released 22-APR-2016 </h2></a>
593  - <b>Most important changes:</b>
594  - Support for Velodyne LIDAR sensors.
595  - New minor version number due to changes in the API of these classes
596 (read details below): mrpt::obs::CObservationGPS, mrpt::hwdrivers::CGPSInterface
597  - [Python bindings](https://github.com/MRPT/mrpt/wiki/PythonBindings)
598 added for a subset of MRPT functionality (Thanks Peter Rudolph and Nikolaus
599 Demmel!)
600  - <b>Detailed list of changes:</b>
601  - New apps:
602  -
603 [gps2rawlog](http://www.mrpt.org/list-of-mrpt-apps/application-gps2rawlog/):
604 Application to parse raw dumps of a GPS (GNSS) receiver output.
605  -
606 [image2gridmap](http://www.mrpt.org/list-of-mrpt-apps/application-image2gridmap/):
607 Small tool to import any image as an MRPT gridmap object file (*.gridmap).
608  -
609 [velodyne-view](http://www.mrpt.org/list-of-mrpt-apps/application-velodyne-view/):
610 Application to test, visualize and grab data from a live Velodyne sensor or from
611 a PCAP record.
612  - Changes in apps:
613  -
614 [rawlog-grabber](http://www.mrpt.org/list-of-mrpt-apps/application-rawlog-grabber/):
615 Now does not show GPS and IMU debug data in console, unless
616 `MRPT_HWDRIVERS_VERBOSE` environment variable is set.
617  -
618 [rawlog-edit](http://www.mrpt.org/list-of-mrpt-apps/application-rawlog-edit/):
619 New operation: `--export-gps-all`
620  - Changes in libraries:
621  - \ref mrpt_base_grp
622  - [ABI change] mrpt::system::tokenize() new parameter
623 `skipBlankTokens`
624  - mrpt::utils::circular_buffer now has peek() methods
625  - Eigen::MatrixBase<Derived>::loadFromTextFile() now also
626 accepts `,` as column separator.
627  - New functions:
628  - mrpt::system::timestampAdd()
629  - mrpt::utils::compute_CRC32()
630  - mrpt::utils::saturate<>()
631  - mrpt::containers::CDynamicGrid<> now uses `double` instead of
632 `float` for all dimensions and coordinate computations.
633  - Priority with these functions now work properly in GNU/Linux;
634 though, see the notes in their documentation for required permissions:
635  - mrpt::system::changeCurrentProcessPriority()
636  - mrpt::system::changeThreadPriority()
637  - New classes/structures:
638  - mrpt::math::TPointXYZIu8, mrpt::math::TPointXYZRGBu8,
639 mrpt::math::TPointXYZfIu8, mrpt::math::TPointXYZfRGBu8
640  - \ref mrpt_hwdrivers_grp
641  - New class mrpt::hwdrivers::CVelodyneScanner
642  - mrpt::hwdrivers::CNTRIPEmitter now has a parameter to
643 enable/disable sending back the data from the serial port to the NTRIP caster.
644  - <b>[API changed]</b> mrpt::hwdrivers::CGPSInterface API
645 clean-up and made more generic so any stream can be used to parse GNSS messages,
646 not only serial ports.
647  - New class mrpt::hwdrivers::CStereoGrabber_Bumblebee_libdc1394
648 for capturing without PGR Flycapture but directly through libdc1394.
649  - Removed class mrpt::hwdrivers::CStereoGrabber_Bumblebee ,
650 superseded by mrpt::hwdrivers::CImageGrabber_FlyCapture2 which is capable of
651 both monocular and stereo grabbing.
652  - \ref mrpt_maps_grp
653  - New class mrpt::maps::CHeightGridMap2D_MRF
654  - New base class mrpt::maps::CHeightGridMap2D_Base
655  - mrpt::maps::COccupancyGridMap2D:
656  - New method
657 mrpt::maps::COccupancyGridMap2D::copyMapContentFrom()
658  - New likelihood parameter `LF_useSquareDist`
659  - New parameter
660 mrpt::maps::COccupancyGridMap2D::RAYTRACE_STEP_SIZE_IN_CELL_UNITS
661  - mrpt::maps::COccupancyGridMap2D::simulateScanRay() is now
662 ~40% (GCC) to ~250% (MSVC) faster by default.
663  - New method
664 mrpt::maps::COccupancyGridMap2D::laserScanSimulatorWithUncertainty()
665  - New method
666 mrpt::maps::CHeightGridMap2D::insertIndividualPoint()
667  - mrpt::maps::CMetricMap::compute3DMatchingRatio() has a
668 simplified API now
669  - \ref mrpt_obs_grp
670  - New class mrpt::obs::CObservationVelodyneScan
671  - mrpt::obs::CSinCosLookUpTableFor2DScans now can build a table
672 from a mrpt::obs::T2DScanProperties structure, which now also has its separate
673 header file for better modularity.
674  - <b>[API changed]</b> mrpt::obs::CObservationGPS now stores
675 only one message per objects. API clean-up and extended so the number of GNSS
676 message types is larger and more scalable.
677  - mrpt::obs::gnss: A new namespace with many new data structures
678 for GPS-related messages
679  - mrpt::obs::CObservation3DRangeScan: projection of RGBD images
680 to 3D points now correctly filters out invalid points, which were in previous
681 versions mapped as (0,0,0) points (relative to the sensor). In turn, this leads
682 to point clouds of a dynamic number of points. In case of needing the (u,v)
683 pixel coordinates of projected points, checkout the new fields `points3D_idxs_x`
684 & `points3D_idxs_y`.
685  - New class mrpt::obs::CObservation2DRangeScanWithUncertainty
686  - \ref mrpt_opengl_grp
687  - New class mrpt::opengl::CMesh3D to render 3D models/meshes
688  - New method
689 mrpt::opengl::CPointCloudColoured::recolorizeByCoordinate()
690  - \ref mrpt_slam_grp
691  - Small clean up of mrpt::slam::CICP API, add separate variable
692 to select covariance estimation method.
693  - \ref mrpt_topography_grp
694  - New function mrpt::topography::geocentricToENU_WGS84()
695  - \ref mrpt_vision_grp
696  - Removed the old GPL-licensed Hess SIFT implementation.
697  - mrpt::vision::CDifOdo has been refactored and now does faster
698 image pyramid computation (By Mariano Jaimez)
699  - mrpt::maps::CLandmarksMap changes:
700  - `beaconMaxRange` & `alphaRatio` parameters have been
701 removed since they were not used.
702  - New likelihood parameter `beaconRangesUseObservationStd`
703 to allow using different uncertainty values with each observation.
704  - Changes in build system:
705  - [Python
706 bindings](https://github.com/MRPT/mrpt/wiki/PythonBindings) added for a subset
707 of MRPT functionality (Thanks Peter Rudolph!)
708  - Code ported to support the new libftdi1-dev (Fixes Debian bug
709 #810368, GitHub issue #176)
710  - Fix building with gcc 6.0 (Closes Debian bug #811812)
711  - CMake new option: `DISABLE_MRPT_AUTO_CLASS_REGISTRATION` to reduce
712 the footprint of MRPT statically-linked programs.
713  - Fix building against wxWidgets 3.1
714  - BUG FIXES:
715  - mrpt::math::CQuaternion<> did not check for unit norm in Release
716 builds.
717  - Fix build errors against OpenCV 3.0.0+ without opencv_contrib
718 modules.
719  - mrpt::hwdrivers::CHokuyoURG now correctly handles opening both USB
720 and Ethernet Hokuyo devices (Closes Github issue #180)
721  - Fixed mrpt::comms::net::DNS_resolve_async() may SIGSEGV in slow
722 networks.
723  - mrpt::opengl::CMesh::updateColorsMatrix() did not ignore cells
724 masked out.
725  - Wrong weights used in mrpt::poses::CPosePDFSOG::getMean()
726  - Removed ad-hoc bias addition in range-only predictions in
727 landmarks maps.
728  - Error loading height map count in
729 mrpt::maps::TSetOfMetricMapInitializers (Closes GitHub issue <a
730 href="https://github.com/MRPT/mrpt/issues/205" >#205</a>.
731  - Fix "gray images" grabbed in Windows when capturing the render
732 output of 3D windows (Thanks Mariano J.T. & Christian Kerl from TUM!)
733  - Fix typos and wxWidgets align errors in RawLogViewer GUI (Closes
734 #219)
735  - mrpt::nav::CHolonomicND & mrpt::nav::CHolonomicVFF didn't use the
736 full range of output velocities.
737  - mrpt::img::CImage::loadFromFile() now does not leave the image in
738 undefined state if the load operation fails.
739  - mrpt::hwdrivers::CLMS100Eth failed to load "pose_yaw" parameter
740 from config file.
741  -
742 mrpt::obs::CObservation3DRangeScan::doDepthAndIntensityCamerasCoincide() did not
743 correctly return `false` for negative offsets between the camera poses.
744 
745 <hr>
746 <a name="1.3.2">
747  <h2>Version 1.3.2: Released 3-NOV-2015 </h2></a>
748  - Changes in Apps:
749  -
750 [rawlog-edit](http://www.mrpt.org/list-of-mrpt-apps/application-rawlog-edit/):
751  - New operation: `--list-poses`
752  - `--list-images` now also works with 3D range scans
753  - Changes in libraries:
754  - The library mrpt-srba has been moved out of MRPT and now is an
755 independent project: https://github.com/MRPT/srba
756  - \ref mrpt_base_grp
757  - mrpt::math::KDTreeCapable::TKDTreeSearchParams: Removed parameter
758 nChecks, which was ignored by nanoflann anyway.
759  - \ref mrpt_hwdrivers_grp
760  - mrpt::hwdrivers::CCameraSensor: Implemented OpenNI2 support for
761 CCameraSensor
762  - \ref mrpt_nav_grp
763  - mrpt::nav::CAbstractPTGBasedReactive: Maximum acceleration filter
764 (SPEEDFILTER_TAU) now follows paths better (Thanks to Steven Butner, UCSB/ECE)
765  - Changes in build system:
766  - `FIND_PACKAGE(MRPT)` will return libraries in the var
767 `MRPT_LIBRARIES`, following the CMake convention. The old variable name
768 `MRPT_LIBS` will be also returned for backward compatibility.
769  - BUG FIXES:
770  - Fix excessive width of paths drawn by
771 CMetricMapBuilderRBPF::drawCurrentEstimationToImage()
772  - Fix image distortion: k3 may be ignored. (Thanks to CBaiz)
773  - Fix Debian bugs.
774 
775 <hr>
776 <a name="1.3.1">
777  <h2>Version 1.3.1: Released 18-JUL-2015 </h2></a>
778  - Changes in apps:
779  -
780 [navlog-viewer](http://www.mrpt.org/list-of-mrpt-apps/application-navlog-viewer/):
781 Now shows more information on navigation logs.
782  - New app
783 [icp-slam-live](http://www.mrpt.org/list-of-mrpt-apps/application-icp-slam-live/):
784 Real-time ICP-SLAM with a LIDAR sensor.
785  - Changes in libraries:
786  - \ref mrpt_base_grp
787  - New helper templates: mrpt::utils::int_select_by_bytecount<>,
788 mrpt::uint_select_by_bytecount<>
789  - New methods to evaluate SO(2), SO(3), SE(2) and SE(3) averages and
790 weighted averages. See:
791  - Header <mrpt/poses/SO_SE_average.h>
792  - mrpt::poses::SO_average<2>, mrpt::poses::SO_average<3>
793  - mrpt::poses::SE_average<2>, mrpt::poses::SE_average<3>
794  - \ref mrpt_hwdrivers_grp
795  - New sensors supported:
796  - mrpt::hwdrivers::CIMUIntersense
797  - mrpt::hwdrivers::CSkeletonTracker
798  - New parameter
799 mrpt::hwdrivers::CHokuyoURG::m_disable_firmware_timestamp to override faulty
800 Hokuyo timestamps with PC time.
801  - mrpt::hwdrivers::CRoboPeakLidar::turnOn() and turnOff() now really
802 implement turning on/off the RPLidar motor.
803  - \ref mrpt_maps_grp
804  - New method mrpt::maps::COccupancyGridMap2D::getAsPointCloud()
805  - \ref mrpt_nav_grp
806  - Removed old base class CPathPlanningMethod
807  - CPathPlanningCircularRobot => mrpt::nav::PlannerSimple2D: Class
808 renamed (and better described) for consistency with other planners
809  - mrpt::nav::CReactiveNavigationSystem:
810  - Documentation has been added about all existing parameters,
811 and template config files provided as starting points.
812  - The loadConfigFile() method with 2 config files has been
813 deprecated favoring the newer, simpler single config file.
814  - The "ROBOT_NAME" parameter is no longer employed. A minor side
815 effect (probably affecting no one) is that PTG cache files are no longer named
816 differently for different robots.
817  - mrpt::nav::CParameterizedTrajectoryGenerator: New methods to save
818 and load trajectories to binary streams. Used to debug in navlog-viewer.
819  - \ref mrpt_obs_grp
820  - mrpt::obs::CObservation3DRangeScan now supports pixel labels
821 (semantic mapping, etc.)
822  - New class mrpt::obs::CObservationSkeleton to hold body tracking
823 information (by Francisco Angel Moreno)
824  - mrpt::obs::CObservationIMU has new data fields and fields are
825 better documented to reflect whether they refer to local/global coordinate
826 frames
827  - \ref mrpt_vision_grp
828  - mrpt::vision::CImageGrabber_dc1394: Changed default Bayer filter
829 from NEAREST to HQLINEAR
830  - BUG FIXES:
831  - Fix ocasional (false) failure of RANSAC unit tests due to their
832 non-deterministic nature.
833  - Fix build error with MSVC 2010 in mrpt-hmtslam (Closes #127).
834  - Fixed potential wrong bounding box results in
835 mrpt::maps::CPointsMap::boundingBox() when SSE2 optimization is enabled.
836  - mrpt::obs::CObservation6DFeatures: Fixed random crashes related to
837 non-aligned memory in 32bit builds (Fixes #141)
838  - Fix Debian bug
839 [#786349](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786349) on Eigen2
840 support.
841  - mrpt::hwdrivers::CIMUXSens_MT4: Fix crash in destructor of objects
842 not attached to a physical device.
843  - Fix wrong quaternion cross product when target variable is one of
844 the operands. Also affected the += operator of mrpt::poses::CPose3DQuat (Fixes
845 #148)
846  - mrpt::hwdrivers::CKinect with libfreenect driver: Fix potential
847 memory corruption.
848  - Fix a bug in mrpt::tfest::se3_l2_robust() that led to it returning
849 without trying to find a good consensus solution. It affected the demo app
850 kinect-3d-slam (Fixes #156)
851  - Fix wrong feature points in
852 CFeatureExtraction::extractFeaturesKLT() (Fixes #138)
853 
854 <hr>
855 <a name="1.3.0">
856  <h2>Version 1.3.0: Released 12-JAN-2015 </h2></a>
857  - <b>Most important changes:</b>
858  - Classes in libraries \ref mrpt_obs_grp and \ref mrpt_maps_grp now
859 belong to new namespaces (mrpt::obs, mrpt::maps) instead of the old mrpt::slam
860  - No more `using namespace`s polute MRPT headers. <b>Errors in user
861 projects</b> missing `using namespace XXX` that might be formerly masked will
862 now reveal. <b>This is a good thing</b>, though admitedly annoying...
863  - New library \ref mrpt_nav_grp, subsumming the old \ref
864 mrpt_reactivenav_grp.
865  - New library \ref mrpt_tfest_grp, a refactor of the old \ref
866 mrpt_scanmatching_grp.
867  - <b>Backwards compatible headers</b> have been provided to ease the
868 transition of user code for all those library changes. Warning messages will be
869 shown recommending deprecated replacements.
870  - <b>Detailed list of changes:</b>
871  - Lib changes:
872  - Clean up of the bad practice of `using namespace` in public scopes
873 of headers. May lead to user code failing for missing `using namespace`s which
874 were previously masked.
875  - Namespace "slam" deprecated in libraries mrpt-obs and mrpt-maps
876 (used for historical reasons):
877  - New namespaces \ref mrpt_obs_grp and \ref mrpt_maps_grp.
878  - #include files moved from old paths <mrpt/slam/...> =>
879 <mrpt/{obs,maps}/...>
880  - Backward compatible headers added in <mrpt/slam/...> until
881 mrpt 2.0.0
882  - New library \ref mrpt_nav_grp, subsumming the old mrpt-reactivenav
883 (\ref mrpt_reactivenav_grp).
884  - \ref mrpt_reactivenav_grp is now a meta-library, depending on \ref
885 mrpt_nav_grp.
886  - \ref mrpt_tfest_grp : Old library mrpt-scanmatching (\ref
887 mrpt_scanmatching_grp) has been refactored, its API clean-up, and renamed \ref
888 mrpt_tfest_grp
889  - \ref mrpt_scanmatching_grp is now a meta-library, depending on
890 \ref mrpt_tfest_grp.
891  - These classes have been moved between libs for a more sensible
892 organization:
893  - mrpt::slam::CDetectorDoorCrossing ==>
894 mrpt::detectors::CDetectorDoorCrossing
895  - mrpt::slam::CPathPlanningMethod & CPathPlanningCircularRobot:
896 \ref mrpt_slam_grp ==> \ref mrpt_nav_grp
897  - Build System / General changes:
898  - Many optimizations in function arguments (value vs ref). Forces
899 ABI incompatibility with previous versions, hence the change to a new minor
900 version number.
901  - Updated embedded version of Eigen to 3.2.3
902  - Kinect: Dropped support for the CL NUI API, which seems
903 discontinued. Alternatives in use are libfreenect and OpenNI2.
904  - libfreenect is now detected in the system and used instead of
905 compiling the embedded copy of it.
906  - Embedded copy of libfreenect has been updated to (23/oct/2014). It
907 now supports "Kinect for Windows".
908  - More selective linking of .so files to avoid useless dependencies
909 (Fixes #52).
910  - (Windows only) MRPT can now be safely built with libusb support
911 (Freenect, Kinect,...) and it will run on systems without libusb installed, by
912 means of /DELAYLOAD linking flags.
913  - More unit tests.
914  - Changes in classes:
915  - [mrpt-base]
916  - New function mrpt::math::angDistance()
917  - [mrpt-hwdrivers]
918  - mrpt::hwdrivers::CIMUXSens_MT4: (by Joe Burmeister for Suave
919 Aerial Software)
920  - Upgrade to latest XSens SDK 4.2.1. Requires libudev-dev in
921 Linux
922  - Add GPS observations to CIMUXSens_MT4 for Xsens devices
923 like GTi-G-700 which have GPS
924  - mrpt::hwdrivers::CImageGrabber_dc1394: Length of ring buffer
925 is now configurable via TCaptureOptions_dc1394::ring_buffer_size
926  - [mrpt-maps]
927  - Important refactor of internal code related to
928 mrpt::maps::CMultiMetricMap:
929  - All maps (derived from mrpt::maps::CMetricMap) now have a
930 more uniform interface.
931  - Each map now has a `MapDefinition` structure with all its
932 parameters. See docs for mrpt::maps::TMetricMapInitializer
933  - Introduced mrpt::maps::TMapGenericParams to hold
934 parameters shared in all maps.
935  - [mrpt-obs]
936  - CObservation::getDescriptionAsText(): New virtual method to
937 obstain a textual description of observations. Refactoring of messy code
938 previously in the RawLogViewer app.
939  - [mrpt-vision]
940  - mrpt::vision::CFeatureExtraction: Removed (unused) optional
941 ROI parameter in detectors.
942  - BUG FIXES:
943  - mrpt::poses::CRobot2DPoseEstimator could estimate wrong angular
944 velocities for orientations near +-180deg.
945  - mrpt::system::CDirectoryExplorer::sortByName() didn't sort in
946 descending order
947  - Fixed crashes from MATLAB .mex files:
948 mrpt::system::registerFatalExceptionHandlers() has no longer effect, and will be
949 removed in future releases. (Thanks to Jesús Briales García for all the
950 testing!)
951  - Fixed potential crash for Eigen unaligned memory access in 32bit
952 builds in mrpt::slam::CGridMapAligner and other places ([Closes
953 #94](https://github.com/MRPT/mrpt/issues/94))
954 
955 <hr>
956 <a name="1.2.2">
957  <h2>Version 1.2.2: Released 12-SEP-2014 </h2></a>
958  - Changes in apps:
959  - <a
960 href="http://www.mrpt.org/list-of-mrpt-apps/application-sceneviewer3d/"
961 >SceneViewer3D</a>:
962  - New menu "File" -> "Import" -> "3D model" which supports many
963 standard formats (via mrpt::opengl::CAssimpModel)
964  - New classes:
965  - [mrpt-hwdrivers]
966  - mrpt::hwdrivers::CRoboPeakLidar to interface Robo Peak LIDAR
967 scanners.
968  - [mrpt-opengl]
969  - mrpt::opengl::CAssimpModel for rendering complex 3D models (many
970 supported formats) in OpenGL scenes.
971  - Changes in classes:
972  - Consistency in all "laser scan" classes: angular increments between
973 rays are now FOV/(N-1) instead of FOV/N.
974  - [mrpt-base]
975  - New method mrpt::img::CImage::loadTGA()
976  - *IMPORTANT*: Changed behavior of CSerializable/CObject macros (see
977 bugfix below), introducing the new macros DEFINE_SERIALIZABLE_POST_*. May
978 require changes in user code if serializable classes are defined:
979  - Previous version:
980  \code
981  DEFINE_SERIALIZABLE_PRE_*(...)
982  class XXX {
983  DEFINE_SERIALIZABLE(XXX)
984  };
985  \endcode
986  - Must be changed in this version to:
987  \code
988  DEFINE_SERIALIZABLE_PRE_*(...)
989  class XXX {
990  DEFINE_SERIALIZABLE(XXX)
991  };
992  DEFINE_SERIALIZABLE_POST_*(...)
993  \endcode
994  - [mrpt-hwdrivers]
995  - Bumblebee2 Linux support in
996 mrpt::hwdrivers::CImageGrabber_FlyCapture2 via Triclops (by Jesus Briales)
997  - [mrpt-maps]
998  - New method mrpt::maps::COccupancyGridMap2D::getRawMap()
999  - New method
1000 mrpt::maps::CColouredPointsMap::getPCLPointCloudXYZRGB()
1001  - [mrpt-opengl]
1002  - mrpt::opengl::CWxGLCanvasBase (affects all 3D rendering classes):
1003 better handling of internal timers for smoother updates while rendering in
1004 multithreading apps.
1005  - [mrpt-srba]
1006  - New method to recover the global coordinates graph-slam problem
1007 for a RBA map: mrpt::srba::RbaEngine::get_global_graphslam_problem() (see
1008 example
1009 [MRPT]\samples\srba-examples\srba-tutorials\tutorial-srba-how-to-recover-global-map.cpp)
1010  - BUG FIXES:
1011  - mrpt::img::CImage constructor from a matrix crashed.
1012  - Unit tests: Named semaphores are not tested anymore if it's detected
1013 that the kernel version doesn't support them (Fix Debian 758725).
1014  - mrpt::synch::CSemaphore [Linux]: didn't call sem_unlink().
1015  - mrpt::gui::CDisplayWindow3D didn't implement get/set FOV.
1016  - Valgrind: Fixed potential unaligned memory access warning in point
1017 clouds.
1018  - Fix build error with AppleClang 5.1 (Closes #71).
1019  - mrpt::utils::CClientTCPSocket: Use a connection success check that
1020 works on all platforms
1021  - Important bug fixed regarding a missing dynamic_cast<> in smart
1022 pointers casting. See above possible implications in user code. properly (Patch
1023 by Joe Burmeister).
1024 
1025 <hr>
1026 <a name="1.2.1">
1027  <h2>Version 1.2.1: Released 10-JUL-2014 </h2></a>
1028  - Changes in classes:
1029  - [mrpt-base]
1030  - All points and poses now have a method setToNaN(), e.g.
1031 mrpt::poses::CPose3D::setToNaN()
1032  - [mrpt-hwdrivers]
1033  - mrpt::hwdrivers::COpenNI2Sensor now has better support for opening
1034 several RGBD cameras (by Kenzaburo Miyawaki & Eduardo Fernandez)
1035  - Build system:
1036  - Fix compilation of SRBA with DEBUG_GARBAGE_FILL_ALL_NUMS=1
1037  - Fix de-serialization error in mrpt::reactivenav::CLogFileRecord (and
1038 new unit tests added to avoid regressions).
1039  - Several Debian bugs closed (see packaging/debian/changelog), including
1040 build errors in uncommon platforms (MIPS, kFreeBSD, etc.)
1041 
1042 <hr>
1043 <a name="1.2.0">
1044  <h2>Version 1.2.0: Released 25-JUN-2014 </h2></a>
1045  - <b>Most important changes:</b>
1046  - Public header files (.h) have undergone a serious refactoring to
1047 minimize unnecesary dependencies and reduce compile time and memory as much as
1048 possible. As a side effect, user code might need to add new #include<> lines.
1049 This change justifies the new minor version series 1.2.X.
1050  - MRPT now cleanly builds in clang and OSX.
1051  - Support for new camera drivers (OpenNI2, DUO3D).
1052  - Many bug fixes.
1053  - <b>Detailed list of changes:</b>
1054  - Changes in apps:
1055  - [rawlog-edit](http://www.mrpt.org/Application%3Arawlog-edit):
1056  - New operations: --export-odometry-txt, --recalc-odometry
1057  - New flag: --rectify-centers-coincide
1058  - New examples:
1059  - kitti_dataset2rawlog
1060  - New classes:
1061  - [mrpt-base]
1062  - mrpt::math::ContainerType<CONTAINER>::element_t to allow
1063 handling either Eigen or STL containers seamlessly.
1064  - mrpt::config::CConfigFilePrefixer
1065  - [mrpt-hwdrivers]
1066  - mrpt::hwdrivers::COpenNI2Sensor: Interface to OpenNI2 cameras,
1067 capable of reading from an array of OpenNI2 RGBD cameras (By Eduardo Fernandez)
1068  - mrpt::hwdrivers::CDUO3DCamera: Interface to DUO3D cameras (By
1069 Francisco Angel Moreno)
1070  - mrpt::hwdrivers::CGPS_NTRIP: A combination of GPS receiver +
1071 NTRIP receiver capable of submitting GGA frames to enable RTCM 3.0
1072  - [mrpt-obs]
1073  - mrpt::obs::CObservation6DFeatures
1074  - Changes in classes:
1075  - [mrpt-base]
1076  - Robust kernel templates moved from mrpt::vision to mrpt::math.
1077 See mrpt::math::RobustKernel<>. Added unit tests for robust kernels.
1078  - mrpt::poses::CPose3D has new SE(3) methods:
1079 mrpt::poses::CPose3D::jacob_dexpeD_de(),
1080 mrpt::poses::CPose3D::jacob_dAexpeD_de()
1081  - More efficient mrpt::utils::OctetVectorToObject() (avoid
1082 memory copy).
1083  - Fixed const-correctness of mrpt::img::CImage::forceLoad() and
1084 mrpt::img::CImage::unload()
1085  - [mrpt-hwdrivers]
1086  - mrpt::hwdrivers::CCameraSensor: Added a hook for user code to
1087 run before saving external image files:
1088 mrpt::hwdrivers::CCameraSensor::addPreSaveHook()
1089  - mrpt::hwdrivers::CNationalInstrumentsDAQ now supports analog
1090 and digital outputs.
1091  - New method mrpt::hwdrivers::CNTRIPClient::sendBackToServer()
1092  - [mrpt-srba]
1093  - Now also implements SE(3) relative graph-slam.
1094  - [mrpt-vision]
1095  - mrpt::vision::checkerBoardStereoCalibration: More robust
1096 handling of stereo calibration patterns. OpenCV sometimes detects corners in the
1097 wrong order between (left/right) images, so we detect the situation and fix it.
1098  - mrpt::vision::findMultipleChessboardsCorners():
1099  - Now enforces a consistent counterclockwise XYZ coordinate
1100 frame at each detected chessboard.
1101  - Much more robust in distingishing quads of different
1102 sizes.
1103  - Build system / public API:
1104  - Fixes to build in OS X -
1105 [Patch](https://gist.github.com/randvoorhies/9283072) by Randolph Voorhies.
1106  - Removed most "using namespace" from public headers, as good
1107 practice.
1108  - Refactoring of MRPT headers.
1109  - <mrpt/utils/stl_extensions.h> has been split into:
1110  - <mrpt/serialization/stl_serialization.h>
1111  - <mrpt/containers/circular_buffer.h>
1112  - <mrpt/utils/list_searchable.h>
1113  - <mrpt/containers/bimap.h>
1114  - <mrpt/utils/map_as_vector.h>
1115  - <mrpt/containers/traits_map.h>
1116  - <mrpt/serialization/stl_serialization.h>
1117  - <mrpt/containers/printf_vector.h>
1118  - <mrpt/containers/stl_containers_utils.h>
1119  - <mrpt/utils/ci_less.h>
1120  - Deleted methods and functions:
1121  - mrpt::system::breakpoint()
1122  - mrpt::vector_float is now mrpt::math::CVectorFloat,
1123 mrpt::vector_double is mrpt::math::CVectorDouble, for name consistency. Also,
1124 using Eigen::VectorXf is preferred for new code.
1125  - mrpt::CImage::rectifyImage() with parameters as separate
1126 vectors.
1127  - mrpt::maps::CPointsMap::getPoint() with mrpt::poses::CPoint3D
1128 arguments.
1129  - mrpt::vision::correctDistortion() -> use CImage method instead
1130  - All previous deprecated functions.
1131  - Embedded Eigen updated to version 3.2.1
1132 [(commit)](https://github.com/MRPT/mrpt/commit/47913da94a27e98a9115f85b2a530b6c14a10b8f)
1133 [(commit)](https://github.com/MRPT/mrpt/commit/33258761d3b75bf133d38aecb257c64e4d76b21e)
1134  - BUG FIXES:
1135  - RawlogViewer app: Fixed abort while converting SF->obs.only
1136 datasets when there is no odometry.
1137  - mrpt::obs::CSensoryFrame: The cached point map is now invalidated
1138 with any change to the list of observations so it's rebuild upon next call.
1139  - New implementation of mrpt::synch::CSemaphore avoids crashes in OS
1140 X - by Randolph Voorhies.
1141  - mrpt::opengl::CArrow was always drawn of normalized length.
1142  - FlyCapture2 monocular & stereo cameras could return an incorrect
1143 timestamp (only in Linux?).
1144  - mrpt::system::createDirectory() returned false (error) when the
1145 directory already existed.
1146  - mrpt::vision::CStereoRectifyMap::rectify() didn't update the left
1147 & right camera poses inside mrpt::obs::CObservationStereoImages objects while
1148 rectifying.
1149  - RawLogViewer: Operation "convert to SF format" didn't take into
1150 account odometry observations.
1151  - Fix build errors with GCC 4.9
1152  - Fix crash of mrpt::hwdrivers::CIMUXSens_MT4's destructor when it
1153 fails to scan and open a device.
1154  - Fix potential crash in
1155 mrpt::slam::data_association_full_covariance with JCBB when no individually
1156 compatible matching exists
1157 [(commit)](https://github.com/MRPT/mrpt/commit/482472ebd80a3484dce63d294b1ac4e8f001e1eb)
1158 
1159 <hr>
1160  <a name="1.1.0">
1161  <h2>Version 1.1.0: Released 22-FEB-2014 </h2></a>
1162  - New apps:
1163  -
1164 [DifOdometry-Camera](http://www.mrpt.org/list-of-mrpt-apps/application-difodometry-camera).
1165 (By Mariano Jaimez Tarifa)
1166  -
1167 [DifOdometry-Datasets](http://www.mrpt.org/list-of-mrpt-apps/application-difodometry-datasets).
1168 (By Mariano Jaimez Tarifa)
1169  - New classes:
1170  - [mrpt-base]
1171  - mrpt::synch::CPipe: OS-independent pipe support.
1172  - [mrpt-hwdrivers]
1173  - mrpt::hwdrivers::CIMUXSens_MT4 : Support for 4th generation xSens
1174 MT IMU devices.
1175  - mrpt::hwdrivers::CNationalInstrumentsDAQ: Support for acquisition
1176 boards compatible with National Instruments DAQmx Base -
1177 [(commit)](https://github.com/MRPT/mrpt/commit/a82a7e37997cfb77e7ee9e903bdb2a55e3040b35).
1178  - mrpt::hwdrivers::CImageGrabber_FlyCapture2: Support for Point Grey
1179 Research's cameras via the FlyCapture2 libray -
1180 [(commits)](https://github.com/MRPT/mrpt/pull/5/commits).
1181  - [mrpt-maps]
1182  - There are now two versions of octomaps (by Mariano Jaimez
1183 Tarifa/Jose Luis Blanco) -
1184 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3443)
1185  - mrpt::maps::COctoMap (only occupancy)
1186  - mrpt::maps::CColouredOctoMap (occupancy + RGB color)
1187  - [mrpt-obs]
1188  - mrpt::obs::CObservationRawDAQ, a placeholder for raw and generic
1189 measurements from data acquisition devices. -
1190 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3459)
1191  - [mrpt-opengl]
1192  - mrpt::opengl::CMeshFast, an open gl object that draws a "mesh" as
1193 a structured point cloud which is faster to render (by Mariano Jaimez Tarifa).
1194 -[(commit)](https://github.com/MRPT/mrpt/commit/9306bb4a585387d4c85b3f6e41dd2cbe5a354e80)
1195  - mrpt::opengl::CVectorField2D, an opengl object that shows a 2D
1196 Vector Field (by Mariano Jaimez Tarifa). -
1197 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3461)
1198  - [mrpt-reactivenav]
1199  - mrpt::reactivenav::CAbstractPTGBasedReactive, as part of a large
1200 code refactoring of these classes:
1201 [(commit)](https://github.com/MRPT/mrpt/pull/4)
1202  - mrpt::reactivenav::CReactiveNavigationSystem
1203  - mrpt::reactivenav::CReactiveNavigationSystem3D
1204  - [mrpt-vision]
1205  - mrpt::vision::CDifodo, a class which implements visual odometry
1206 based on depth images and the "range flow constraint equation". (by Mariano
1207 Jaimez Tarifa) -
1208 [(commit)](https://github.com/MRPT/mrpt/commit/e6ab5595f70cb889d07658c0b540c27e495a1cfb)
1209  - Changes in classes:
1210  - Clean up and slight optimization of metric map matching API: -
1211 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3446)
1212  - <b>Methods marked as deprecated: </b>
1213  - mrpt::maps::CMetricMap::computeMatchingWith2D() -->
1214 mrpt::maps::CMetricMap::determineMatching2D()
1215  - mrpt::maps::CMetricMap::computeMatchingWith3D() -->
1216 mrpt::maps::CMetricMap::determineMatching3D()
1217  - New structures:
1218  - mrpt::slam::TMatchingParams
1219  - mrpt::slam::TMatchingExtraResults
1220  - mrpt::maps::CPointsMap::TInsertionOptions now have methods to
1221 save/load from binary streams, making more maintainable the serialization of
1222 point maps -
1223 [(commit)](https://github.com/MRPT/mrpt/commit/544d439c3462228b07344142de68e5bc10c1a2e3)
1224  - New options in point maps:
1225 mrpt::maps::CPointsMap::TInsertionOptions::insertInvalidPoints -
1226 [(commit)](https://github.com/MRPT/mrpt/pull/8)
1227  - mrpt::obs::CObservationIMU now includes data fields for 3D
1228 magnetometers and altimeters. -
1229 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3451)
1230  - Method renamed mrpt::utils::CEnhancedMetaFile::selectVectorTextFont()
1231 to avoid shadowing mrpt::CCanvas::selectTextFont()
1232  - mrpt::reactivenav::CParameterizedTrajectoryGenerator: New methods:
1233  -
1234 mrpt::reactivenav::CParameterizedTrajectoryGenerator::inverseMap_WS2TP() for
1235 inverse look-up of WS to TP space -
1236 [(commit)](https://github.com/MRPT/mrpt/commit/4d04ef50e3dea581bed6287d4ea6593034c47da3)
1237  -
1238 mrpt::reactivenav::CParameterizedTrajectoryGenerator::renderPathAsSimpleLine() -
1239 [(commit)](https://github.com/MRPT/mrpt/commit/a224fc2489ad00b3ab116c84e8d4a48532a005df)
1240  - Changed the signature of
1241 mrpt::reactivenav::build_PTG_collision_grids() to become more generic for 2D
1242 & 2.5D PTGs -
1243 [(commit)](https://github.com/MRPT/mrpt/commit/7bd68e49a4ba3bf08f194678787816c65de1d685)
1244  - Deleted classes:
1245  - mrpt::utils::CEvent, which was actually unimplemented (!)
1246  - mrpt::hwdrivers::CInterfaceNI845x has been deleted. It didn't offer
1247 features enough to justify a class.
1248  - New examples:
1249  - [MRPT]/samples/threadsPipe
1250  - [MRPT]/samples/NIDAQ_test
1251  - [MRPT]/openNI2_RGBD_demo (by Mariano Jaimez Tarifa)
1252  - [MRPT]/openNI2_proximity_demo (by Mariano Jaimez Tarifa)
1253  - Build system:
1254  - Fixed compilation with clang.
1255  - Fixed building against OpenCV 3.0.0 (GIT head)
1256  - Updated to the latest nanoflann 1.1.7.
1257  - Updated to Eigen 3.2.0 -
1258 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3455)
1259  - Binary packages for Windows now include .pdb files to help debugging
1260 with Visual Studio.
1261  - BUG FIXES:
1262  - Fixed potential infinity loop in mrpt::math::make_vector<1,T>()
1263  - Fixed build error with GCC when experimental parallelization is
1264 enabled. [(commit)](http://code.google.com/p/mrpt/source/detail?r=3441)
1265  - mrpt::reactivenav::CReactiveNavigationSystem complained about missing
1266 config variables ROBOTMODEL_TAU & ROBOTMODEL_DELAY, which were removed in
1267 MRPT 1.0.2 - [(commit)](http://code.google.com/p/mrpt/source/detail?r=3452)
1268  - Fixed potential mem alignment errors (Eigen's UnalignedArrayAssert) in
1269 SRBA for 32bit builds.
1270 [(commit)](http://code.google.com/p/mrpt/source/detail?r=3457)
1271  - mrpt::topography::geodeticToENU_WGS84() and related functions used a
1272 local +Z axis aligned to the line towards the Earth center; now the Z axis
1273 points normally to the ellipsoid surface. The difference with the previous
1274 behavior is small but may be of a few millimeters for each meter from the
1275 reference point. [(commit)](http://code.google.com/p/mrpt/source/detail?r=3473)
1276  - Potential crash when setting mpPolygon::setPoints() with empty vectors
1277 - [(commit)](http://code.google.com/p/mrpt/source/detail?r=3478)
1278  - mrpt::reactivenav::CReactiveNavigationSystem and
1279 mrpt::reactivenav::CReactiveNavigationSystem3D didn't obey the
1280 "enableConsoleOutput" constructor flag -
1281 [(commit)](https://github.com/MRPT/mrpt/commit/db7b0e76506af2c24f119a28443a1e8f1a217861)
1282  - mrpt::synch::CSemaphore::waitForSignal() : Fixed error when thread got
1283 an external signal
1284 [(commit)](https://github.com/MRPT/mrpt/commit/511e95f03480537ff18ad2cad178c504b1cfbb53)
1285 
1286  <hr>
1287  <a name="1.0.2">
1288  <h2>Version 1.0.2: Released 2-AUG-2013 (SVN 3435) </h2></a>
1289  - New apps:
1290  -
1291 [ReactiveNav3D-Demo](http://www.mrpt.org/Application%3AReactiveNav3D-Demo) (By
1292 Mariano Jaimez Tarifa)
1293  - Changes in apps:
1294  - [rawlog-edit](http://www.mrpt.org/Application%3Arawlog-edit):
1295  - New operations: --list-timestamps, --remap-timestamps,
1296 --export-2d-scans-txt, --export-imu-txt
1297  - New classes:
1298  - [mrpt-base]
1299  - mrpt::poses::CPose3DRotVec is now fully implemented (By Francisco
1300 Angel Moreno).
1301  - [mrpt-opengl]
1302  - mrpt::opengl::CLight - OpenGL scenes now allow customization of
1303 OpenGL lighting. See also new lighting methods in mrpt::opengl::COpenGLViewport
1304 - <a href="http://code.google.com/p/mrpt/source/detail?r=3409" >r3409</a>
1305  - [mrpt-reactivenav]
1306  - mrpt::reactivenav::CReactiveNavigationSystem3D - By Mariano Jaimez
1307 Tarifa - <a href="http://code.google.com/p/mrpt/source/detail?r=3389" >r3389</a>
1308  - New functions:
1309  - [mrpt-opengl]
1310  - mrpt::opengl::stock_objects::RobotRhodon()
1311  - Changes in classes:
1312  - [mrpt-base]
1313  - Generic particle filter classes now allow directly resampling to a
1314 dynamic number of particles. Affected methods: - <a
1315 href="http://code.google.com/p/mrpt/source/detail?r=3381" >r3381</a>
1316  - mrpt::bayes::CParticleFilterCapable::performResampling()
1317  - mrpt::bayes::CParticleFilterCapable::computeResampling()
1318  - New method: CImage::loadFromXPM() - <a
1319 href="http://code.google.com/p/mrpt/source/detail?r=3397" >r3397</a>
1320  - [mrpt-maps]
1321  - mrpt::maps::COctoMap now exposes the inner octomap::OcTree object.
1322 See example samples/octomap_simple - <a
1323 href="http://code.google.com/p/mrpt/source/detail?r=4304" >r4304</a>
1324  - [mrpt-openg]
1325  - mrpt::opengl::CBox now be also rendered as a solid box + line
1326 borders. See mrpt::opengl::CBox::enableBoxBorder()
1327  - mrpt::opengl::COctoMapVoxels - <a
1328 href="http://code.google.com/p/mrpt/source/detail?r=4329" >r4329</a>
1329  - Fixed calculation of normals (fix shading)
1330  - Added new coloring scheme to
1331 mrpt::opengl::COctoMapVoxels::visualization_mode_t : "FIXED"
1332  - By default, light effects are disabled in this object, because
1333 shadows aren't computed anyway and the effect isn't pleasant.
1334  - Voxels cubes are sorted in ascending Z order so the visual
1335 effect is correct when rendering with transparency.
1336  - [mrpt-reactivenav]
1337  - mrpt::reactivenav::CParameterizedTrajectoryGenerator: The "low
1338 pass filter" has been removed since it wasn't practical and was never used;
1339 thus, parameters "TAU" and "DELAY" has been removed. - <a
1340 href="http://code.google.com/p/mrpt/source/detail?r=3395" >r3395</a>
1341  - Methods removed since they weren't implemented in any derived
1342 class and there are no plans for doing it.
1343  - mrpt::reactivenav::CReactiveNavigationSystem ::evaluate()
1344  - mrpt::reactivenav::CReactiveNavigationSystem ::setParams()
1345  - Build system:
1346  - Updated to nanoflann 1.1.7: ICP is ~5% faster.
1347  - More unit tests:
1348  - [mrpt-base] geometry module.
1349  - BUG FIXES:
1350  - CTimeLogger::registerUserMeasure() ignored the enable/disable state of
1351 the logger - <a href="http://code.google.com/p/mrpt/source/detail?r=3382"
1352 >r3382</a>
1353  - mrpt-srba: SEGFAULT in 32bit builds due to missing
1354  - <a
1355 href="http://code.google.com/p/mrpt/source/detail?r=3429" >r3429</a>
1356 
1357  <br/>
1358  <hr>
1359  <a name="1.0.1">
1360  <h2>Version 1.0.1: Released 12-MAY-2013 (SVN 3370) </h2></a>
1361  - Changes in apps:
1362  - <a href="http://www.mrpt.org/Application%3ARawLogViewer"
1363 >RawLogViewer</a>:
1364  - Better description of the "too much memory used" warning while
1365 loading large datasets.
1366  - <a href="http://www.mrpt.org/Application%3Arobotic-arm-kinematics"
1367 >robotic-arm-kinematics</a>:
1368  - Now allows changing the orientation of the first DOF (X,Y,Z).
1369  - New classes:
1370  - [mrpt-hwdrivers]
1371  - mrpt::hwdrivers::CInterfaceNI845x: An interface for this USB
1372 SPI/I2C data acquisition board.
1373  - mrpt::hwdrivers::CCANBusReader: A class to record CAN bus frames
1374 with a CAN232 converter.
1375  - [mrpt-obs]
1376  - mrpt::obs::CObservationCANBusJ1939
1377  - New functions:
1378  - New opengl_stock objects:
1379  - mrpt::opengl::stock_objects::Hokuyo_URG()
1380  - mrpt::opengl::stock_objects::Hokuyo_UTM()
1381  - mrpt::opengl::stock_objects::Househam_Sprayer()
1382  - mrpt::math::saveEigenSparseTripletsToFile() - <a
1383 href="http://code.google.com/p/mrpt/source/detail?r=3351" >r3351</a>
1384  - New examples:
1385  - gmrf_map_demo
1386  - Changes in classes:
1387  - [mrpt-maps]
1388  - mrpt::maps::COccupancyGridMap2D now also evalutes likelihoods for
1389 sonar-like observations (mrpt::obs::CObservationRange), allowing particle-filter
1390 localization with these sensors - <a
1391 href="http://code.google.com/p/mrpt/source/detail?r=3330" >r3330</a>
1392  - New method
1393 mrpt::slam::CRandomFieldGridMap2D::insertIndividualReading()
1394  - [mrpt-kinematics]
1395  - mrpt::kinematics::CKinematicChain: Now allows changing the
1396 orientation of the first DOF (X,Y,Z).
1397  - Removed stuff:
1398  - Backwards-compatibility typedef mrpt::vision::TKLTFeatureStatus has
1399 been removed. Replace with mrpt::vision::TFeatureTrackStatus
1400  - KLT-specific values for mrpt::vision::TFeatureTrackStatus has been
1401 removed, since they were not used in detected features anyway.
1402  - Build system:
1403  - Fixed a potential build error if including FFMPEG's <time.h> instead
1404 of the standard header - <a
1405 href="http://code.google.com/p/mrpt/source/detail?r=3316" >r3316</a>
1406  - Fixed determination of GCC version for all GCC builds - <a
1407 href="http://code.google.com/p/mrpt/source/detail?r=3324" >r3324</a>
1408  - Updated to Eigen 3.1.3 - <a
1409 href="http://code.google.com/p/mrpt/source/detail?r=3349" >r3349</a>
1410  - Updated to nanoflann 1.1.5
1411  - BUG FIXES:
1412  - Unit tests "SchurTests" for mrpt-srba incorrectly reported errors due
1413 to an improperly initialized reference to a local variable - <a
1414 href="http://code.google.com/p/mrpt/source/detail?r=3318" >r3318</a>
1415  - Debian packages: added missing binary deps for libmrpt-dev - <a
1416 href="http://code.google.com/p/mrpt/source/detail?r=3335" >r3335</a>
1417 
1418  <hr>
1419  <a name="1.0.0">
1420  <h2>Version 1.0.0: Released 1-MAR-2013 (SVN 3287) </h2></a>
1421  - <b>Most important changes:</b>
1422  - New library with a flexible implementation of Sparser Relative Bundle
1423 Adjustment (RBA), as presented in ICRA 2013: <a href="http://www.mrpt.org/srba"
1424 >mrpt-srba</a>.
1425  - New library for Plane-based Maps: <a
1426 href="group__mrpt__pbmap__grp.html" >mrpt-pbmap</a> (also presented in ICRA
1427 2013).
1428  - Some MRPT modules are now header-only libraries.
1429  - Support for a new Octomap metric map, via the octomap library. See
1430 mrpt::maps::COctoMap and detailed changes below.
1431  - Support for importing/exporting point clouds in the standard LAS
1432 format (Look for liblas below).
1433  - Better support for custom builds of MRPT (selective building of
1434 individual apps and libs, etc.)
1435  - Ready for Visual Studio 2012 and GCC 4.7
1436  - From now on, MRPT is released under the "New BSD" license.
1437  - Many bug fixes.
1438  - <b>Detailed list of changes:</b>
1439  - New apps:
1440  - <a
1441 href="http://www.mrpt.org/list-of-mrpt-apps/application-srba-slam"
1442 >srba-slam</a>: A command-line frontend for the Relative Bundle Adjustment
1443 engine in mrpt-srba.
1444  - <a
1445 href="http://www.mrpt.org/list-of-mrpt-apps/application-holonomic-navigator-demo"
1446 >holonomic-navigator-demo</a>
1447  - <a
1448 href="http://www.mrpt.org/list-of-mrpt-apps/application-robotic-arm-kinematics"
1449 >robotic-arm-kinematics</a>: A GUI for experimenting with Denavit-Hartenberg
1450 parameters.
1451  - Changes in apps:
1452  - <a href="http://www.mrpt.org/Application%3Anavlog-viewer"
1453 >navlog-viewer</a>:
1454  - Fixed some minor visualization errors.
1455  - <a href="http://www.mrpt.org/Application%3ARawLogViewer"
1456 >RawLogViewer</a>:
1457  - Import sequence of images as rawlog: Didn't detect "png" file
1458 extension as images - <a
1459 href="http://code.google.com/p/mrpt/source/detail?r=2940" >r2940</a> - Closes <a
1460 href="http://code.google.com/p/mrpt/issues/detail?id=34" >#34</a>
1461  - The GUI toolbar has been ported from wxWidget's ToolBar to
1462 sets of wxCustomButton's to avoid visualization problems in wx 2.9.X - <a
1463 href="http://code.google.com/p/mrpt/source/detail?r=2950" >r2950</a>
1464  - <a
1465 href="http://www.mrpt.org/list-of-mrpt-apps/application-ReactiveNavigationDemo"
1466 >ReactiveNavigationDemo</a>:
1467  - The default holonomic navigation method is now the VFF, since
1468 after the last bug fixes and tunes it seems to work quite well.
1469  - <a href="http://www.mrpt.org/Application%3ASceneViewer"
1470 >SceneViewer3D</a>:
1471  - The GUI toolbar has been ported from wxWidget's ToolBar to
1472 sets of wxCustomButton's to avoid visualization problems in wx 2.9.X - <a
1473 href="http://code.google.com/p/mrpt/source/detail?r=2952" >r2952</a>
1474  - Added a new menu: "File -> Import -> From LAS file..." - <a
1475 href="http://code.google.com/p/mrpt/source/detail?r=3244" >r3244</a>
1476  - <a href="http://www.mrpt.org/Application%3Agrid-matching"
1477 >grid-matching</a>: new argument "--aligner" to select aligner method - <a
1478 href="http://code.google.com/p/mrpt/source/detail?r=3021" >r3021</a>
1479  - New classes:
1480  - [mrpt-base]
1481  - mrpt::math::MatrixBlockSparseCols, a templated column-indexed
1482 efficient storage of block-sparse Jacobian or Hessian matrices, together with
1483 other arbitrary information - <a
1484 href="http://code.google.com/p/mrpt/source/detail?r=2995" >r2995</a>
1485  - mrpt::utils::ignored_copy_ptr<>
1486  - mrpt::system::CTimeLoggerEntry
1487  - [mrpt-obs]
1488  - mrpt::obs::CObservationWindSensor - <a
1489 href="http://code.google.com/p/mrpt/source/detail?r=3050" >r3050</a>
1490  - [mrpt-maps]
1491  - mrpt::maps::COctoMap
1492  - [mrpt-opengl]
1493  - mrpt::opengl::COctoMapVoxels
1494  - Deleted classes:
1495  - [mrpt-vision]
1496  - CFeatureTracker_FAST and CFeatureTracker_PatchMatch have been
1497 removed since they didn't work robustly. Replace with
1498 mrpt::vision::CFeatureTracker_KL
1499  - New libraries:
1500  - [mrpt-kinematics] See mrpt::kinematics
1501  - [mrpt-pbmap] See <a href="group__mrpt__pbmap__grp.html"
1502 >mrpt-pbmap</a>.
1503  - [mrpt-srba] See <a href="http://www.mrpt.org/srba" >mrpt-srba</a>.
1504  - Changes in libraries:
1505  - These libs are now header-only: <a
1506 href="http://code.google.com/p/mrpt/source/detail?r=3035" >r3035</a>, <a
1507 href="http://code.google.com/p/mrpt/source/detail?r=3045" >r3045</a>
1508  - [mrpt-bayes]
1509  - [mrpt-graphs]
1510  - [mrpt-graphslam]
1511  - Integration of the Octomap C++ library (new BSD License) by Kai M.
1512 Wurm et al.: <a href="http://code.google.com/p/mrpt/source/detail?r=3081"
1513 >r3081</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3083"
1514 >r3083</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3084"
1515 >r3084</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3086"
1516 >r3086</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3087"
1517 >r3087</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3088"
1518 >r3088</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3093"
1519 >r3093</a>
1520  - The main new classes are mrpt::maps::COctoMap &
1521 mrpt::opengl::COctoMapVoxels
1522  - mrpt::maps::CMultiMetricMap now allows the seamless
1523 integration of octomaps in many MRPT map building or localization algorithms.
1524  - New example: samples/octomap_simple
1525  - Changes in classes:
1526  - [mrpt-base]
1527  - Eigen::MatrixBase<Derived>::loadFromTextFile(), and all MRPT
1528 derived matrix classes, are now much faster loading huge matrices from text
1529 files - <a href="http://code.google.com/p/mrpt/source/detail?r=2997" >r2997</a>
1530  - The typedef Eigen::MatrixBase<Derived>::typename of MRPT's
1531 plugin to Eigen classes has been REMOVED, to avoid conflicts with some part of
1532 Eigen's sparse classes. Use Matrix::Scalar instead - <a
1533 href="http://code.google.com/p/mrpt/source/detail?r=3065" >r3065</a>
1534  - New method mrpt::poses::CPose3DQuat::inverse()
1535  - New methods mrpt::poses::SE_traits::pseudo_exp()
1536  - mrpt::system::CTimeLogger:
1537  - New method mrpt::system::CTimeLogger::getStats() for
1538 programatic execution time stats analysis - <a
1539 href="http://code.google.com/p/mrpt/source/detail?r=2998" >r2998</a>
1540  - New method
1541 mrpt::system::CTimeLogger::registerUserMeasure() for making stats of
1542 user-providen values - <a
1543 href="http://code.google.com/p/mrpt/source/detail?r=3005" >r3005</a>
1544  - mrpt::utils::map_as_vector<> can be now customized to use
1545 different underlying STL containers for storage - <a
1546 href="http://code.google.com/p/mrpt/source/detail?r=3001" >r3001</a>
1547  - mrpt::containers::CDynamicGrid::setSize() now also accepts a
1548 "fill_value" argument.
1549  - Added method mrpt::math::TPoint2D::norm() for consistency with
1550 mrpt::math::TPoint3D
1551  - Better support for saving (and not only loading) plain text
1552 configuration files, including commented files with default values of all
1553 existing parameters: - <a
1554 href="http://code.google.com/p/mrpt/source/detail?r=2954" >r2954</a>
1555  - All mrpt::config::CConfigFileBase::write() now have an
1556 extended signature for formatting.
1557  -
1558 mrpt::config::CLoadableOptions::dumpToTextStreamstd::ostream::Seek() now
1559 supports files larger than 2GB by using uint64_t instead of long (still see
1560 issue report for another patch required for MSVC2010) - (Closes <a
1561 href="http://code.google.com/p/mrpt/issues/detail?id=39" >issue 39</a>, thanks
1562 Robert Schattschneider) - <a
1563 href="http://code.google.com/p/mrpt/source/detail?r=3042" >r3042</a>
1564  - mrpt::typemeta::TTypeName<> moved to its own header
1565 <mrpt/typemeta/TTypeName.h> while refactoring
1566 <mrpt/serialization/CSerializable.h>
1567 - <a href="http://code.google.com/p/mrpt/source/detail?r=3044" >r3044</a>
1568  - mrpt::config::CConfigFileBase::write() now has signatures for
1569 "uint32_t" and "uint64_t" in both 32 and 64bit builds, instead of relying of the
1570 "size_t" type. This was done to fix build errors in some GCC versions under
1571 32bits.
1572  - mrpt::poses::CPose2D now caches the cos() and sin() of phi,
1573 with a huge performance improvement in most common operations.
1574  - [mrpt-bayes]
1575  - mrpt::bayes::CKalmanFilterCapable (and all EKF-SLAM methods
1576 based on it) are now much faster. The implementation now exploits the sparsity
1577 of the Jacobian (~25% faster in a test 6D EKF-SLAM dataset) - <a
1578 href="http://code.google.com/p/mrpt/source/detail?r=3059" >r3059</a>, <a
1579 href="http://code.google.com/p/mrpt/source/detail?r=3060" >r3060</a>, <a
1580 href="http://code.google.com/p/mrpt/source/detail?r=3061" >r3061</a>
1581  - mrpt::bayes::CParticleFilterCapable now makes use of the
1582 Curiously Recurring Template Pattern (CRTP) design instead of ugly #define
1583 macros - <a href="http://code.google.com/p/mrpt/source/detail?r=3182" >r3182</a>
1584  - [mrpt-graphs]
1585  - mrpt::graphs::CNetworkOfPoses2D,
1586 mrpt::graphs::CNetworkOfPoses3D,... and so on, are now all typedef's instead of
1587 classes, since serialization is now implemented as pure templatized code, thus
1588 avoiding the need to declare derived auxiliary classes - <a
1589 href="http://code.google.com/p/mrpt/source/detail?r=3044" >r3044</a>
1590  - [mrpt-gui]
1591  - mrpt::gui::CDisplayWindow3D::addTextMessage() (and other
1592 opengl text routines) now allows drawing text with a shadow effect - <a
1593 href="http://code.google.com/p/mrpt/source/detail?r=3007" >r3007</a>
1594  - [mrpt-hwdrivers]
1595  - New method
1596 mrpt::hwdrivers::CActivMediaRobotBase::areMotorsEnabled()
1597  - mrpt::hwdrivers::CGenericSensor (and all derived classes) now
1598 allocate objects aligned in memory with
1599  - New static method mrpt::hwdrivers::CGPSInterface::parse_NMEA()
1600  - [mrpt-maps]
1601  - Better integration of point cloud classes with PCL: - <a
1602 href="http://code.google.com/p/mrpt/source/detail?r=2943" >r2943</a>
1603  - mrpt::maps::CPointsMap::loadPCDFile()
1604  - mrpt::maps::CPointsMap::setFromPCLPointCloud()
1605  - mrpt::maps::CColouredPointsMap::setFromPCLPointCloudRGB()
1606  - Point cloud loading & saving in the standard ASPRS LiDAR LAS
1607 format (if liblas is installed in the system, see http://www.liblas.org/ ). See
1608 also the ready-to-use import menu in SceneViewer3D - <a
1609 href="http://code.google.com/p/mrpt/source/detail?r=3244" >r3244</a>
1610  - mrpt::maps::CPointsMap::loadLASFile()
1611  - mrpt::maps::CPointsMap::saveLASFile()
1612  - Integration of wind measurements in gas-concentration maps (by
1613 Javier G. Monroy) - <a href="http://code.google.com/p/mrpt/source/detail?r=3050"
1614 >r3050</a>
1615  - [mrpt-obs]
1616  - New method mrpt::obs::CObservationGPS::clear()
1617  - [mrpt-opengl]
1618  - Evaluation of bounding box of opengl objects. New methods: -
1619 <a href="http://code.google.com/p/mrpt/source/detail?r=3026" >r3026</a>
1620  - mrpt::opengl::CRenderizable::getBoundingBox()
1621  - mrpt::opengl::COpenGLScene::getBoundingBox()
1622  - mrpt::opengl::COpenGLViewport::getBoundingBox()
1623  -
1624 mrpt::opengl::COctreePointRenderer::octree_get_graphics_boundingboxes() has a
1625 new flag to draw solid boxes at each leaf node - <a
1626 href="http://code.google.com/p/mrpt/source/detail?r=3033" >r3033</a>
1627  - mrpt::opengl::COpenGLViewport has a new set of "global OpenGL
1628 switches" that affect the rendering of entire scenes - <a
1629 href="http://code.google.com/p/mrpt/source/detail?r=3185" >r3185</a>
1630  - Classes drawing lines now by default enable anti-aliasing (can
1631 be disabled by the programmer): - <a
1632 href="http://code.google.com/p/mrpt/source/detail?r=3185" >r3185</a>
1633  - mrpt::opengl::CGridPlaneXY, mrpt::opengl::CGridPlaneXZ
1634  - mrpt::opengl::CSimpleLine
1635  - mrpt::opengl::CSetOfLines
1636  - [mrpt-reactivenav]
1637  - Much code of mrpt::reactivenav classes have undergone a
1638 clean-up, slight optimizations and a translation of old Spanish names/comments
1639 to English - <a href="http://code.google.com/p/mrpt/source/detail?r=2939"
1640 >r2939</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=2942"
1641 >r2942</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=2958"
1642 >r2958</a>, <a href="http://code.google.com/p/mrpt/source/detail?r=3091"
1643 >r3091</a>
1644  -
1645 mrpt::reactivenav::CParameterizedTrajectoryGenerator::CCollisionGrid now has a
1646 more maintainable binary serialization format - <a
1647 href="http://code.google.com/p/mrpt/source/detail?r=2939" >r2939</a>
1648  -
1649 mrpt::reactivenav::CParameterizedTrajectoryGenerator::debugDumpInFiles() now
1650 also saves text files which can be used to visualize PTGs from MATLAB (see
1651 scripts/viewPTG.m) - <a
1652 href="http://code.google.com/p/mrpt/source/detail?r=3009" >r3009</a>
1653  - mrpt::reactivenav::CHolonomicVFF and
1654 mrpt::reactivenav::CHolonomicND now have more configurable parameters, loadable
1655 from config files. See their documentation.
1656  - Repulsive forces from obstacles in
1657 mrpt::reactivenav::CHolonomicVFF are now automatically normalized wrt the
1658 density of the 360deg view of obstacles and forces follow a "1/range" law
1659 instead of the old "exp(-range)".
1660  - Solved a stability issue in C-S paths, in
1661 mrpt::reactivenav::CPTG_DiffDrive_CS (By Mariano Jaimez Tarifa) - <a
1662 href="http://code.google.com/p/mrpt/source/detail?r=3085" >r3085</a>
1663  - [mrpt-scanmatching]
1664  - mrpt::scanmatching::robustRigidTransformation():
1665  - Changed behavior not to allow features to appear in
1666 duplicated pairings.
1667  - Added a consistency test to avoid seeding RANSAC with an
1668 inconsistent initial model.
1669  - [mrpt-slam]
1670  - mrpt::slam::CMetricMapBuilderICP now does not integrate the
1671 small pose changes due to odometry and/or relocalization when considering the
1672 distance and angle thresholds. This means that fewer map updates are now done
1673 for the same ICP-SLAM parameters, which should lead to "less noisy" maps.
1674  - New functions:
1675  - [mrpt-base]
1676  - mrpt::utils::abs_diff()
1677  - mrpt::system::getMRPTLicense()
1678  - mrpt::system::getFileModificationTime()
1679  - mrpt::math::noncentralChi2PDF_CDF() is now exposed (was
1680 private)
1681  - mrpt::utils::sprintf_container()
1682  - mrpt::poses::operator -(mrpt::poses::CPose3DQuat)
1683  - max3() and min3() moved from the global namespace to
1684 mrpt::utils::max3() and mrpt::utils::min3()
1685  - New examples:
1686  - octomap_simple
1687  - ransac-data-association
1688  - Build system:
1689  - Update to nanoflann 1.1.4 - <a
1690 href="http://code.google.com/p/mrpt/source/detail?r=2937" >r2937</a>, <a
1691 href="http://code.google.com/p/mrpt/source/detail?r=3017" >r3017</a>
1692  - Update to Eigen 3.1.2 - <a
1693 href="http://code.google.com/p/mrpt/source/detail?r=3064" >r3064</a>
1694  - MRPT's root "CMakeLists.txt" has undergone a big refactoring and
1695 cleanup - <a href="http://code.google.com/p/mrpt/source/detail?r=2961"
1696 >r2961</a>
1697  - Backward compatible "mrpt-core" has been removed as a fake lib for
1698 which to search with CMake from user programs - <a
1699 href="http://code.google.com/p/mrpt/source/detail?r=2961" >r2961</a>
1700  - More system libs are detected in Linux (libclang-dev, lib3ds-dev),
1701 discarding embedded versions then - <a
1702 href="http://code.google.com/p/mrpt/source/detail?r=2963" >r2963</a> - <a
1703 href="http://code.google.com/p/mrpt/issues/detail?id=17" >Closes #17</a>
1704  - Automatic detection of supported SIMD extensions (SSE*) from CMake
1705 (only for Linux OS) - <a
1706 href="http://code.google.com/p/mrpt/source/detail?r=3013" >r3013</a>
1707  - Fixed building with Visual Studio 2012 (MSVC11) - <a
1708 href="http://code.google.com/p/mrpt/source/detail?r=3017" >r3017</a>
1709  - MRPT now allows defining header-only libraries with the
1710 define_mrpt_lib_header_only() macro - <a
1711 href="http://code.google.com/p/mrpt/source/detail?r=3034" >r3034</a>, <a
1712 href="http://code.google.com/p/mrpt/source/detail?r=3035" >r3035</a>
1713  - More unit tests:
1714  - for all probability distribution functions in mrpt::math,
1715  - for the parser in mrpt::hwdrivers::CGPSInterface::parse_NMEA()
1716  - for the octomap map
1717  - for serialization/deserealization of many classes.
1718  - Added new documentation page: <a href="env-vars.html" >environment
1719 variables</a>.
1720  - Removed the build flag "MRPT_BACKCOMPATIB_08X".
1721  - Fixes for building under Mac OSX: <a
1722 href="http://code.google.com/p/mrpt/source/detail?r=3181" >r3181</a>
1723  - Enable some c++11 features if the compiler supports them - <a
1724 href="http://code.google.com/p/mrpt/source/detail?r=3273" >r3273</a>
1725  - BUG FIXES:
1726  - Build: Fixed detection of OpenCV 2.4.2+ installed in the system
1727 via CMake config file instead of pkg-config, which seems to be broken. - <a
1728 href="http://code.google.com/p/mrpt/source/detail?r=3019" >r3019</a>
1729  - [mrpt-base] The iterator returned by end() in all MRPT vectors and
1730 matrices (based on Eigen) pointed to the last element, not to the (now correct)
1731 next position after the last element - <a
1732 href="http://code.google.com/p/mrpt/source/detail?r=2941" >r2941</a>
1733  - [mrpt-base] mrpt::dynamicsize_vector::resize() performed a memory
1734 reallocation even if given the current size, due to an inherited behavior from
1735 Eigen. It is not the expected behavior, so it has been fixed. - <a
1736 href="http://code.google.com/p/mrpt/source/detail?r=3003" >r3003</a>
1737  - [mrpt-base] Wrong computation of normPDF() values for the
1738 multidimensional cases. Closes <a
1739 href="http://code.google.com/p/mrpt/issues/detail?id=46" >#46</a> - <a
1740 href="http://code.google.com/p/mrpt/source/detail?r=3068" >r3068</a>
1741  - [mrpt-base] mrpt::poses::CPoint::asString() confused the 2D and 3D
1742 cases (Thanks Cipri!)
1743  - [mrpt-base] Fixed errors in de-serialization of
1744 mrpt::utils::CPointPDFSOG and mrpt::maps::CReflectivityGridMap2D
1745  - [mrpt-base] mrpt::math::KDTreeCapable::kdTreeRadiusSearch2D()
1746 always returned 0 matched.
1747  - [mrpt-graphs] Fixed bug in RecursiveSpectralPartition (Thanks to
1748 Edu!) - <a href="http://code.google.com/p/mrpt/source/detail?r=3026" >r3026</a>
1749  - [mrpt-hwdrivers] Fixed potential SEGFAULT in
1750 mrpt::hwdrivers::CGPSInterface (Thanks K.Miyawaki for <a
1751 href="http://www.mrpt.org/node/2474" >reporting</a>)
1752  - [mrpt-hwdrivers] Fixed communications to LMS 1xx scanners (Thanks
1753 Henry! See http://code.google.com/p/mrpt/issues/detail?id=49 )
1754  - [mrpt-maps] mrpt::maps::COccupancyGridMap2D::getAs3DObject()
1755 returned cells with an occupancy of exactly "0" as transparent - <a
1756 href="http://code.google.com/p/mrpt/source/detail?r=2957" >r2957</a>
1757  - [mrpt-maps] Fixed saving the correct point colors in
1758 mrpt::maps::CColouredPointsMap::savePCDFile() (Thanks Mariano!) - <a
1759 href="http://code.google.com/p/mrpt/source/detail?r=3090" >r3090</a>
1760  - [mrpt-maps] In CPointsMap::computeMatchingWith3D. Fixed matching
1761 two 3D point clouds as each correspondence was inserted twice into the output
1762 vector. (By Paco) - <a href="http://code.google.com/p/mrpt/source/detail?r=3162"
1763 >r3162</a>
1764  - [mrpt-opengl] Fixed a potential bug: after deserializing an object
1765 based on a display-list (most of them), it won't update in the opengl view.
1766  - [mrpt-reactivenav] Class mrpt::reactivenav::CHolonomicVFF was not
1767 exported in Windows DLL's (Thanks Mariano for noticing!).
1768  - [mrpt-reactivenav] Fixed wrong computation of obstacles force
1769 fields in mrpt::reactivenav::CHolonomicVFF (Thanks Mariano for noticing!) - <a
1770 href="http://code.google.com/p/mrpt/source/detail?r=2953" >r2953</a>
1771  - [mrpt-reactivenav] Precomputed collision grids could be loaded in
1772 mrpt::reactivenav::CParameterizedTrajectoryGenerator even for different robot
1773 parameters/shape: now it correctly detects such situations and recompute when
1774 needed - <a href="http://code.google.com/p/mrpt/source/detail?r=2939" >r2939</a>
1775 - Closes <a href="http://code.google.com/p/mrpt/issues/detail?id=33" >#33</a>
1776  - [mrpt-reactivenav] ND algorithm: Fixed bugs of "last gap is never
1777 evaluated" and wrong composition of representative direction for some gaps (By
1778 Mariano) - <a href="http://code.google.com/p/mrpt/source/detail?r=3056"
1779 >r3056</a>
1780 
1781 
1782  <br>
1783  <hr>
1784  <a name="0.9.6">
1785  <h2>Version 0.9.6 - (Version 1.0.0-Release_Candidate_4): Released 30-MAY-2012
1786 (SVN 2930) </h2></a>
1787  - New applications:
1788  - <a
1789 href="http://www.mrpt.org/list-of-mrpt-apps/application-kinect-stereo-calibrate"
1790 >kinect-stereo-calibrate</a>: A GUI tool for calibrating RGB+D and/or stereo
1791 cameras, including live Kinect capturing.
1792  - Removed applications:
1793  - stereo-calib-gui: it's now superseded by kinect-stereo-gui. The old
1794 command line tool is still useful, so it's still there as the example
1795 "stereo-calib-opencv".
1796  - Changes in applications:
1797  - <a href="http://www.mrpt.org/list-of-mrpt-apps/application-icp-slam"
1798 >icp-slam</a>:
1799  - Added a new option (SHOW_LASER_SCANS_3D in config files) to draw
1800 laser scans in the live 3D view - <a
1801 href="http://code.google.com/p/mrpt/source/detail?r=2881" >r2881</a>
1802  - <a
1803 href="http://www.mrpt.org/list-of-mrpt-apps/application-rawlog-edit"
1804 >rawlog-edit</a>:
1805  - Operation "--camera-params" now also handles stereo observations.
1806  - New operation "--stereo-rectify" for batch rectifying datasets
1807 with stereo images.
1808  - New operation "--rename-externals".
1809  - <a
1810 href="http://www.mrpt.org/list-of-mrpt-apps/application-SceneViewer"
1811 >SceneViewer3D</a>:
1812  - New menu for generating high-resolution renders of any scene
1813 directly to imag files - <a
1814 href="http://code.google.com/p/mrpt/source/detail?r=2775" >r2775</a>
1815  - Many new menus for selective selecting objects and applying
1816 operations on them - <a
1817 href="http://code.google.com/p/mrpt/source/detail?r=2776" >r2776</a>
1818  - stereo-calib-gui: Now generates a report with detailed and clear
1819 results from stereo calibration and allows the user to change most parameters
1820 interactively - <a href="http://code.google.com/p/mrpt/source/detail?r=2801"
1821 >r2801</a>
1822  - <a
1823 href="http://www.mrpt.org/list-of-mrpt-apps/application-kinect-3d-view"
1824 >kinect-3d-view</a>: New key command: press '9' to grab selected snapshots to
1825 disk - <a href="http://code.google.com/p/mrpt/source/detail?r=2890" >r2890</a>
1826  - Kinect stuff:
1827  - [mrpt-hwdrivers]
1828  - mrpt::hwdrivers::CKinect now decodes Bayer color using OpenCV
1829 instead of default freenect - <a
1830 href="http://code.google.com/p/mrpt/source/detail?r=2721" >r2721</a>, <a
1831 href="http://code.google.com/p/mrpt/source/detail?r=2762" >r2762</a>
1832  - mrpt::hwdrivers::CKinect no longer forces a horizontal tilt at
1833 start up by default, what may be annoying (if required, set
1834 "initial_tilt_angle") - <a
1835 href="http://code.google.com/p/mrpt/source/detail?r=2722" >r2722</a>
1836  - mrpt::hwdrivers::CKinect now loads Kinect calibration files in a
1837 format compatible with stereo cameras. See
1838 http://www.mrpt.org/Kinect_calibration
1839  - [mrpt-obs]
1840  - New method mrpt::obs::CObservation3DRangeScan::convertTo2DScan()
1841 allows simulating a "fake 2D laser scanner" from a Kinect. See the example:
1842 http://www.mrpt.org/Example_Kinect_To_2D_laser_scan
1843  - [mrpt-vision]
1844  - New function mrpt::vision::checkerBoardStereoCalibration() to
1845 calibrate stereo and RGB+D cameras. See also the program <a
1846 href="http://www.mrpt.org/list-of-mrpt-apps/application-kinect-stereo-calibrate"
1847 >kinect-stereo-calibrate</a>:
1848  - New classes:
1849  - [mrpt-gui]
1850  - New event generated by GUI windows:
1851 mrpt::gui::mrptEventWindowClosed
1852  - [mrpt-hwdrivers]
1853  - mrpt::hwdrivers::CRaePID: A new interface to PID gas sensing
1854 devices (by Emil Khatib, University of Malaga) - <a
1855 href="http://code.google.com/p/mrpt/source/detail?r=2841" >r2841</a>
1856  - [mrpt-opengl]
1857  - New classes for representing confidence intervals (ellipsoids) in
1858 transformed spaces - <a
1859 href="http://code.google.com/p/mrpt/source/detail?r=2783" >r2783</a>
1860  - mrpt::opengl::CGeneralizedEllipsoidTemplate<>
1861  - mrpt::opengl::CEllipsoidRangeBearing2D
1862  - mrpt::opengl::CEllipsoidInverseDepth2D
1863  - mrpt::opengl::CEllipsoidInverseDepth3D
1864  - mrpt::opengl::CFrustum to easily render these geometric figures
1865  - New struct mrpt::opengl::TFontParams result of a code refactoring
1866  - [mrpt-vision]
1867  - mrpt::vision::TSIFTDescriptorsKDTreeIndex,
1868 TSURFDescriptorsKDTreeIndex - <a
1869 href="http://code.google.com/p/mrpt/source/detail?r=2799" >2799</a>
1870  - mrpt::vision::CStereoRectifyMap - See tutorial online:
1871 http://www.mrpt.org/Rectifying_stereo_
1872 
1873 */
1874 // clang-format on



Page generated by Doxygen 1.8.18 for MRPT 2.0.4 at Thu Sep 24 07:14:18 UTC 2020