New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example "SICK_lms100eth_test".
Support for advanced GPS devices: NTRIP client + emitter, RTK GPS, etc.
New class for accessing SICK LMS laser scanners with a standard serial port or USB-to-serial RS-232 or RS-424, working for Windows and Linux, up to 75 scans/sec.
New algorithms (e.g. A*), many new methods in existing classes and several bug fixes.
Detailed list of all changes. New stuff and enhancements:
MRPT can be now completely built under MinGW (GCC) if wxWidgets and OpenCV are also built with that compiler first. See the instructions in the Wiki.
Fixed size matrices can be declared with one or both of the dimensions equal to zero and that wouldn't lead to an error - until an element is tried to be accessed.
The observation mrpt::slam::CRangeBearingKFSLAM now has independent covariance matrices for each sensor point and also the field-of-view have been separated for yaw and pitch.
Added a new option in CMake: MRPT_ENABLE_EMBEDDED_GLOBAL_PROFILER that transform all MRPT_START/MRPT_END macros into calls to the embedded profiler, dumping the results to std::cout (and MSVC output tab) at the end of each execution.
mrpt::gui windows now have a method CBaseGUIWindow::getPushedKey, which also returns the key modifiers (shift, alt, etc...).
CCameraSensor can now display a preview of the captured images with a "preview_reduction" factor to make them smaller.
mrpt::hwdrivers::CCameraSensor can now span several worker threads to save the grabbed images to disk, avoiding the CPU bottleneck when capturing high rate video.
mrpt::gui window classes now have a static class factory "::Create(...)" similar to their constructor but returning smart pointers.
CPointsMap now has a proper observation likelihood method, similar to Sebastian Thrun's "Likelihood Field" for grids, but using points and KD-trees for the look-ups. See CPointsMap::TLikelihoodOptions
rbpf-slam:
Many improvements to rbpf-slam, especially it now supports map building with maps of points.
ICP parameters of rbpf-slam can be now configured via the .ini file.
See the example file shared/mrpt/config_files/rbpf-slam/gridmapping_ICPbased.ini
The application 2d-slam-demo now shows and computes stats on data association.
For all classes that inherit from mrpt::utils::CDebugOutputCapable, calling printf_debug now also sends the strings to the Visual Studio output window.
The class now implements "loadConfig" and the old virtual "loadConfig" has been renamed to "loadConfig_sensorSpecific". The former calls the latter automatically.
New generic parameter "grab_decimation" that enable decimating any source of observations.
The central registry of MRPT classes (derived from CSerializable) rewritten as a proper Singleton.
New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example "SICK_lms100eth_test".
New namespace with small utilities for networking. See mrpt::utils::net.
New class for downloading differential GPS corrections from a NTRIP server. See mrpt::hwdrivers::CNTRIPClient and the example "ntrip-client".
Change in mrpt::bayes::CKalmanFilterCapable: The functionality to be implemented in the virtual method OnInverseObservationModel has been splitted in two parts: the same method, and the new OnNewLandmarkAddedToMap. This factorization allows more code reutilization.
New class for accessing SICK LMS laser scanners with a standard serial port or USB-to-serial RS-232 or RS-424, working for Windows and Linux, up to 75 scans/sec. Seemrpt::hwdrivers::CSickLaserSerial, or the program rawlog-grabber. See also the new example configuration file "SICK_LMS_serial.ini".
CCameraSensor::setPathForExternalImages didn't work for saving; it was neccesary to also set CImage::IMAGES_PATH_BASE, which is NOT the expected behavior by the user.
Fixed linking errors in user programs linked to MRPT thru CMake, when MRPT is compiled as static libs and ffmpeg support is enabled.
C locales changed by default in wxWidgets >=2.9.0 will mess up reading from config files. Fixed by forcing "C" numerics locale in all GUI applications.
lib3ds: Won't render scenes with small scales (LIB3DS_EPSILON has been reduced).
GUI apps: Many errors in wxWidgets wxFlexSizers fixed, as detected by the recent wx2.9.0 in Debug mode.
The following functions (in mrpt::system) did crash when a malformed TTimeStamp was passed as argument: timestampToParts, dateTimeToString, extractDayTimeFromTimestamp, timeToString, dateToString.