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



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020