Note: If you are displaying a local version of this page and you have not built the whole HTML documentation, the links above will be broken. Either build the documentation invoking make documentation_html
or browse it on-line.
Version 2.0.0: (Under development)
- Most important changes:
- MRPT now requires C++14 to build and use. See this page for a guide to port existing code to MRPT 2.0: Porting code from MRPT 1.{3,4,5} to MRPT 2.*
- Support for old namespaces
mrpt-scanmatching
, mrpt-reactivenav
is over.
- Backwards compatible headers for "maps" and "observations" in mrpt::slam are removed. They moved to their own namespaces in MRPT v1.3.0 (Jan 2015).
- All pointer typedefs are now in their respective classes.
- Using a variant type from the mapbox variant library, and added serialization with variants(To be replaced by std::variant eventually).
- Detailed list of changes:
- Changes in libraries:
- [mrpt-base]
- [mrpt-slam]
- rbpf-slam: Add support for simplemap continuation.
- [mrpt-nav]
- [mrpt-comms] [NEW IN MRPT 2.0.0]
- This new module has been created to hold all serial devices & networking classes, with minimal dependencies.
- [mrpt-maps]
- Added optional "channel" attribute to CReflectivityGrdMap2D and CObservationReflectivity to support different colors of light.
- BUG FIXES:
- Fix reactive navigator inconsistent state if navigation API is called from within rnav callbacks.
- Fix incorrect evaluation of "ASSERT" formulas in mrpt::nav::CMultiObjectiveMotionOptimizerBase
- Fix aborting reading from LMS111 scanner on first error.
- Fix == operator on CPose3D: it now uses an epsilon for comparing the rotation matrices.
- Fix accessing unaligned POD variables deserializing CObservationGPS (via the new
MRPT_READ_POD()
macro).
- Fix segfault in CMetricMap::loadFromSimpleMap() if the provided CMetricMap has empty smart pointers.
Version 1.5.5: (Under development)
- Detailed list of changes:
Version 1.5.4: Released 31/OCT/2017
- Detailed list of changes:
- [mrpt-base]
- Fix potential uninitialized value in CRobot2DPoseEstimator::getLatestRobotPose()
- MRPT_getCompilationDate() returns time as well
- [mrpt-gui]
- Build system:
- Fix MRPTConfig.cmake for system octomap libraries.
- Fix package-contains-vcs-control-file (.gitingore) Lintian error.
- Fix compiling without liboctomap-dev in Ubuntu PPA.
- BUG FIXES:
- Fix waypoint reactive navigator edge case in which "end event" won't be issued.
- Fix waypoint reactive navigator error while doing final aligning (missing and dupplicated nav-end events).
- Fix aborting reading from LMS111 scanner on first error.
- Fix waypoint reactive navigator edge case in which "end event" won't be issued.
- Fix corrupted pointers in CNetworkOfPoses after copy or move operations.
- Fix invalid TP-targets generated during reactive navigation.
- Fix memory leak in reactivenav engine.
- Fix potential out-of-range access in CObservation3DRangeScan::convertTo2DScan()
Version 1.5.3: Released 13/AUG/2017
- Detailed list of changes:
- CMake >=3.1 is now required for use of ExternalProjects.
- Scripts
scripts/prepare_{debian,release}.sh
have been refactored and simplified.
- Removed embedded source code versions of Eigen, assimp and octomap. Downloaded and built as ExternalProjects if not present in the system.
- Releases will be signed with PGP from now on and posted as binary attachments to GitHub releases.
Version 1.5.2: Released 6/AUG/2017
- Detailed list of changes:
- Changes in libraries:
- [mrpt-base]
- Added methods:
- mrpt::synch::CCriticalSection::try_enter()
- mrpt::synch::CCriticalSectionRecursive::try_enter()
- [mrpt-nav]
- [mrpt-slam]
- rbpf-slam: Add support for simplemap continuation.
- BUG FIXES:
Version 1.5.1: Released 21/JUN/2017
- Detailed list of changes:
Version 1.5.0: Released 10-JUN-2017
- Changes in apps:
- New app PTG-configurator
- ReactiveNavigationDemo has been totally rebuilt as a 3D visualizer capable of testing different navigation algorithms and robot kinematics.
- RawLogViewer:
- Now displays a textual and graphical representation of all observation timestamps, useful to quickly detect sensor "shortages" or temporary failures.
- New menu operation: "Edit" -> "Rename selected observation"
- mrpt::obs::CObservation3DRangeScan pointclouds are now shown in local coordinates wrt to the vehicle/robot, not to the sensor.
- rawlog-edit: New flag:
--txt-externals
- Changes in libraries:
- [mrpt-base]
- New API to interface ZeroMQ: Serialization functions for ZMQ (v3
- Deprecated function (since 1.3.0) deleted: mrpt::system::registerFatalExceptionHandlers()
- New method mrpt::poses::CPosePDFParticles::resetAroundSetOfPoses()
- Class mrpt::utils::CRobotSimulator renamed ==> mrpt::kinematics::CVehicleSimul_DiffDriven
- New twist (linear + angular velocity state) classes: mrpt::math::TTwist2D, mrpt::math::TTwist3D
- New template method: mrpt::utils::CStream::ReadAsAndCastTo
- Added missing method mrpt::poses::CPose2D::inverseComposePoint() for consistency with CPose3D
- New class std::recursive_mutex
- New class mrpt::utils::COutputLogger replaces the classes mrpt::utils::CDebugOutputCapable (deprecated) and mrpt::utils::CLog (removed).
- New macros for much more versatily logging:
- New functions for polynomial roots: see Find polynomial roots (`#include
- New functions for signal filtering: see Filtering algorithms
- New functions for Fresnel integrals: see
- New classes mrpt::math::CAtan2LookUpTable, mrpt::math::CAtan2LookUpTableMultiRes
- [API change] The following functions are no longer static methods: (since their classes are now derived from the state-aware mrpt::utils::COutputLogger)
- Deleted methods in Eigen-extensions: leftDivideSquare(), rightDivideSquare()
- Removed support for named semaphores in mrpt::synch::CSemaphore
- new method mrpt::utils::CTimeLogger::getLastTime()
- Removed mrpt::utils::CStartUpClassesRegister, replaced by the new macro MRPT_INITIALIZER()
- New class mrpt::utils::CRateTimer
- mrpt::poses::CRobot2DPoseEstimator now uses a more generic odometry-based velocity model (vx,vy,omega).
- New template mrpt::utils::ts_hash_map<> for thread-safe, std::map-like containers based on hash functions.
- Included exprtk header-only library to runtime compile & evaluation of mathematical expressions, under
<mrpt/otherlibs/exprtk.hpp>
- New smart pointer templates:
mrpt::utils::copy_ptr<>
, mrpt::utils::poly_ptr<>
.
- New colormap: mrpt::utils::hot2rgb()
- New function mrpt::system::find_mrpt_shared_dir()
- New class mrpt::utils::CDynamicGrid3D<>
- New function mrpt::comms::net::http_request()
- New function mrpt::system::now_double()
- New function mrpt::utils::getAllRegisteredClassesChildrenOf()
- Safer CClassRegistry: detect and warn on attempts to duplicated class registration.
- New class mrpt::math::CRuntimeCompiledExpression
- mrpt::utils::CConfigFile and mrpt::utils::CConfigFileMemory now can parse config files with end-of-line backslash to split long strings into several lines.
- New class mrpt::poses::FrameTransformer
- mrpt::poses classes now have all their constructors from mrpt::math types marked as explicit, to avoid potential ambiguities and unnoticed conversions.
- Sophus is now used internally for some Lie Algebra methods, and also exposed to the user as
#include <mrpt/otherlibs/sophus/so3.hpp>
, etc. as part of mrpt-base
- [mrpt-bayes]
- [mrpt-graphs]
- [mrpt-gui]
- [mrpt-hwdrivers]
- Using rplidar newest SDK 1.5.6 instead of 1.4.3, which support rplidar A1 and rplidar A2
- mrpt::hwdrivers::CNTRIPEmitter can now also dump raw NTRIP data to a file
- [mrpt-kinematics]
- [mrpt-maps]
- [mrpt-obs]
- [mrpt-opengl]
- [mrpt-slam]
- [API change] mrpt::slam::CMetricMapBuilder::TOptions does not have a
verbose
field anymore. It's supersedded now by the verbosity level of the CMetricMapBuilder class itself.
- [API change] getCurrentMetricMapEstimation() renamed mrpt::slam::CMultiMetricMapPDF::getAveragedMetricMapEstimation() to avoid confusions.
- [mrpt-hwdrivers]
- mrpt::hwdrivers::CGenericSensor: external image format is now
png
by default instead of jpg
to avoid losses.
- [ABI change] mrpt::hwdrivers::COpenNI2Generic:
- refactored to expose more methods and allow changing parameters via its constructor.
- Now supports reading from an IR, RGB and Depth channels independenty.
- mrpt::hwdrivers::CHokuyoURG now can optionally return intensity values.
- Deleted old, unused classes:
- mrpt::hwdrivers::CBoardIR
- mrpt::hwdrivers::CBoardDLMS
- mrpt::hwdrivers::CPtuHokuyo
- mrpt::hwdrivers::CHokuyoURG no longer as a "verbose" field. It's superseded now by the COutputLogger interface.
- mrpt::hwdrivers::CActivMediaRobotBase and the embedded ARIA library have been removed. Nowadays, one can access to ARIA robots via ROS packages more easily than via MRPT.
- [mrpt-maps]
- [mrpt-nav]
- New mrpt::nav::CWaypointsNavigator interface for waypoint list-based navigation.
- [ABI & API change] PTG classes refactored (see new virtual base class mrpt::nav::CParameterizedTrajectoryGenerator and its derived classes):
- Old classes
CPTGd
have been renamed to describe each path type. Old PTGs #6 and #7 have been removed for lack of practical use.
- New separate classes for PTGs based on numerically-integrated paths and on closed-form formulations.
- Old deprecated method of PTGs
lambdaFunction()
removed.
- Parameters are no longer passed via a mrpt::utils::TParameters class, but via a mrpt::utils::CConfigFileBase which makes parameter passing to PTGs much more maintainable and consistent.
- PTGs now have a score_priority field to manually set hints about preferences for path planning.
- PTGs are now mrpt::utils::CLoadableOptions classes
- New classes:
- [mrpt-graphslam]
- Extend mrpt-graphslam lib to execute simulated/real-time graphSLAM. mrpt-graphslam supports 2D/3D execution of graphSLAM, utilizing LaserScans, odometry information.
- Develop application
graphslam-engine
that executes graphSLAM via the mrpt-graphslam lib
- mrpt::grpahslam::CGraphSlamEngine as the generic object that manages graphSLAM, Node/Edge registration decider classes under the mrpt::graphslam::deciders namesapce, optimizer wrapper classes under mrpt::graphslam::optimizers
- Changes in build system:
- [Windows only]
DLL
s/LIB
s now have the signature lib-${name}${2-digits-version}${compiler-name}_{x32|x64}.{dll/lib}
, allowing several MRPT versions to coexist in the system PATH.
- [Visual Studio only] There are no longer
pragma comment(lib...)
in any MRPT header, so it is the user responsibility to correctly tell user projects to link against MRPT libraries. Normally, this is done with the standard command TARGET_LINK_LIBRARIES(MYTARGET ${MRPT_LIBS})
.
- Debian package: depends on libopenni-dev
- Optional dependency
liblas
: minimum required version is now 1.6.0 (Ubuntu Trusty or above).
- Update of embedded copy of nanoflann to version 1.2.0.
- New script for automated dumping stack traces on unit tests failures (
tests/run_all_tests_gdb.sh
)
- Fix build against wxWidgets 3.1.*
- Embedded version of gtest upgraded to 1.8.0
- BUG FIXES:
Version 1.4.0: Released 22-APR-2016
- Most important changes:
- Detailed list of changes:
- New apps:
- gps2rawlog: Application to parse raw dumps of a GPS (GNSS) receiver output.
- image2gridmap: Small tool to import any image as an MRPT gridmap object file (*.gridmap).
- velodyne-view: Application to test, visualize and grab data from a live Velodyne sensor or from a PCAP record.
- Changes in apps:
- rawlog-grabber: Now does not show GPS and IMU debug data in console, unless
MRPT_HWDRIVERS_VERBOSE
environment variable is set.
- rawlog-edit: New operation:
--export-gps-all
- Changes in libraries:
- [mrpt-base]
- [ABI change] mrpt::system::tokenize() new parameter
skipBlankTokens
- mrpt::utils::circular_buffer now has peek() methods
- Eigen::MatrixBase<Derived>::loadFromTextFile() now also accepts
,
as column separator.
- New functions:
- mrpt::utils::CDynamicGrid<> now uses
double
instead of float
for all dimensions and coordinate computations.
- Priority with these functions now work properly in GNU/Linux; though, see the notes in their documentation for required permissions:
- mrpt::system::changeCurrentProcessPriority()
- mrpt::system::changeThreadPriority()
- New classes/structures:
- [mrpt-hwdrivers]
- [mrpt-maps]
- [mrpt-obs]
- [mrpt-opengl]
- [mrpt-slam]
- Small clean up of mrpt::slam::CICP API, add separate variable to select covariance estimation method.
- [mrpt-topography]
- [mrpt-vision]
- mrpt::vision::CDifOdo has been refactored and now does faster image pyramid computation (By Mariano Jaimez)
- mrpt::maps::CLandmarksMap changes:
beaconMaxRange
& alphaRatio
parameters have been removed since they were not used.
- New likelihood parameter
beaconRangesUseObservationStd
to allow using different uncertainty values with each observation.
- Changes in build system:
- Python bindings added for a subset of MRPT functionality (Thanks Peter Rudolph!)
- Code ported to support the new libftdi1-dev (Fixes Debian bug #810368, GitHub issue #176)
- Fix building with gcc 6.0 (Closes Debian bug #811812)
- CMake new option:
DISABLE_MRPT_AUTO_CLASS_REGISTRATION
to reduce the footprint of MRPT statically-linked programs.
- Fix building against wxWidgets 3.1
- BUG FIXES:
Version 1.3.2: Released 3-NOV-2015
- Changes in Apps:
- rawlog-edit:
- New operation:
--list-poses
--list-images
now also works with 3D range scans
- Changes in libraries:
- Changes in build system:
FIND_PACKAGE(MRPT)
will return libraries in the var MRPT_LIBRARIES
, following the CMake convention. The old variable name MRPT_LIBS
will be also returned for backward compatibility.
- BUG FIXES:
- Fix excessive width of paths drawn by CMetricMapBuilderRBPF::drawCurrentEstimationToImage()
- Fix image distortion: k3 may be ignored. (Thanks to CBaiz)
- Fix Debian bugs.
Version 1.3.1: Released 18-JUL-2015
- Changes in apps:
- Changes in libraries:
- [mrpt-base]
- New helper templates: mrpt::utils::int_select_by_bytecount<>, mrpt::utils::uint_select_by_bytecount<>
- New methods to evaluate SO(2), SO(3), SE(2) and SE(3) averages and weighted averages. See:
- [mrpt-hwdrivers]
- [mrpt-maps]
- [mrpt-nav]
- Removed old base class CPathPlanningMethod
- CPathPlanningCircularRobot => mrpt::nav::PlannerSimple2D: Class renamed (and better described) for consistency with other planners
- mrpt::nav::CReactiveNavigationSystem:
- Documentation has been added about all existing parameters, and template config files provided as starting points.
- The loadConfigFile() method with 2 config files has been deprecated favoring the newer, simpler single config file.
- The "ROBOT_NAME" parameter is no longer employed. A minor side effect (probably affecting no one) is that PTG cache files are no longer named differently for different robots.
- mrpt::nav::CParameterizedTrajectoryGenerator: New methods to save and load trajectories to binary streams. Used to debug in navlog-viewer.
- [mrpt-obs]
- [mrpt-vision]
- mrpt::vision::CImageGrabber_dc1394: Changed default Bayer filter from NEAREST to HQLINEAR
- BUG FIXES:
- Fix ocasional (false) failure of RANSAC unit tests due to their non-deterministic nature.
- Fix build error with MSVC 2010 in mrpt-hmtslam (Closes #127).
- Fixed potential wrong bounding box results in mrpt::maps::CPointsMap::boundingBox() when SSE2 optimization is enabled.
- mrpt::obs::CObservation6DFeatures: Fixed random crashes related to non-aligned memory in 32bit builds (Fixes #141)
- Fix Debian bug #786349 on Eigen2 support.
- mrpt::hwdrivers::CIMUXSens_MT4: Fix crash in destructor of objects not attached to a physical device.
- Fix wrong quaternion cross product when target variable is one of the operands. Also affected the += operator of mrpt::poses::CPose3DQuat (Fixes #148)
- mrpt::hwdrivers::CKinect with libfreenect driver: Fix potential memory corruption.
- Fix a bug in mrpt::tfest::se3_l2_robust() that led to it returning without trying to find a good consensus solution. It affected the demo app kinect-3d-slam (Fixes #156)
- Fix wrong feature points in CFeatureExtraction::extractFeaturesKLT() (Fixes #138)
Version 1.3.0: Released 12-JAN-2015
- Most important changes:
- Classes in libraries [mrpt-obs] and [mrpt-maps] now belong to new namespaces (mrpt::obs, mrpt::maps) instead of the old mrpt::slam
- No more
using namespace
s polute MRPT headers. Errors in user projects missing using namespace XXX
that might be formerly masked will now reveal. This is a good thing, though admitedly annoying...
- New library [mrpt-nav], subsumming the old [mrpt-reactivenav].
- New library [mrpt-tfest], a refactor of the old [mrpt-scanmatching].
- Backwards compatible headers have been provided to ease the transition of user code for all those library changes. Warning messages will be shown recommending deprecated replacements.
- Detailed list of changes:
- Lib changes:
- Clean up of the bad practice of
using namespace
in public scopes of headers. May lead to user code failing for missing using namespace
s which were previously masked.
- Namespace "slam" deprecated in libraries mrpt-obs and mrpt-maps (used for historical reasons):
- New namespaces [mrpt-obs] and [mrpt-maps].
- #include files moved from old paths <mrpt/slam/...> => <mrpt/{obs,maps}/...>
- Backward compatible headers added in <mrpt/slam/...> until mrpt 2.0.0
- New library [mrpt-nav], subsumming the old mrpt-reactivenav ([mrpt-reactivenav]).
- [mrpt-reactivenav] is now a meta-library, depending on [mrpt-nav].
- [mrpt-tfest] : Old library mrpt-scanmatching ([mrpt-scanmatching]) has been refactored, its API clean-up, and renamed [mrpt-tfest]
- [mrpt-scanmatching] is now a meta-library, depending on [mrpt-tfest].
- These classes have been moved between libs for a more sensible organization:
- Build System / General changes:
- Many optimizations in function arguments (value vs ref). Forces ABI incompatibility with previous versions, hence the change to a new minor version number.
- Updated embedded version of Eigen to 3.2.3
- Kinect: Dropped support for the CL NUI API, which seems discontinued. Alternatives in use are libfreenect and OpenNI2.
- libfreenect is now detected in the system and used instead of compiling the embedded copy of it.
- Embedded copy of libfreenect has been updated to (23/oct/2014). It now supports "Kinect for Windows".
- More selective linking of .so files to avoid useless dependencies (Fixes #52).
- (Windows only) MRPT can now be safely built with libusb support (Freenect, Kinect,...) and it will run on systems without libusb installed, by means of /DELAYLOAD linking flags.
- More unit tests.
- Changes in classes:
- [mrpt-base]
- [mrpt-hwdrivers]
- mrpt::hwdrivers::CIMUXSens_MT4: (by Joe Burmeister for Suave Aerial Software)
- Upgrade to latest XSens SDK 4.2.1. Requires libudev-dev in Linux
- Add GPS observations to CIMUXSens_MT4 for Xsens devices like GTi-G-700 which have GPS
- mrpt::hwdrivers::CImageGrabber_dc1394: Length of ring buffer is now configurable via TCaptureOptions_dc1394::ring_buffer_size
- [mrpt-maps]
- [mrpt-obs]
- CObservation::getDescriptionAsText(): New virtual method to obstain a textual description of observations. Refactoring of messy code previously in the RawLogViewer app.
- [mrpt-vision]
- BUG FIXES:
Version 1.2.2: Released 12-SEP-2014
- Changes in apps:
- New classes:
- [mrpt-hwdrivers]
- [mrpt-opengl]
- Changes in classes:
- Consistency in all "laser scan" classes: angular increments between rays are now FOV/(N-1) instead of FOV/N.
- [mrpt-base]
- New method mrpt::utils::CImage::loadTGA()
- IMPORTANT: Changed behavior of CSerializable/CObject macros (see bugfix below), introducing the new macros DEFINE_SERIALIZABLE_POST_*. May require changes in user code if serializable classes are defined:
- Previous version:
DEFINE_SERIALIZABLE_PRE_*(...)
class XXX {
};
- Must be changed in this version to:
DEFINE_SERIALIZABLE_PRE_*(...)
class XXX {
};
DEFINE_SERIALIZABLE_POST_*(...)
- [mrpt-hwdrivers]
- [mrpt-maps]
- [mrpt-opengl]
- mrpt::opengl::CWxGLCanvasBase (affects all 3D rendering classes): better handling of internal timers for smoother updates while rendering in multithreading apps.
- [mrpt-srba]
- New method to recover the global coordinates graph-slam problem for a RBA map: mrpt::srba::RbaEngine::get_global_graphslam_problem() (see example [MRPT]-examples\srba-tutorials\tutorial-srba-how-to-recover-global-map.cpp)
- BUG FIXES:
- mrpt::utils::CImage constructor from a matrix crashed.
- Unit tests: Named semaphores are not tested anymore if it's detected that the kernel version doesn't support them (Fix Debian 758725).
- mrpt::synch::CSemaphore [Linux]: didn't call sem_unlink().
- mrpt::gui::CDisplayWindow3D didn't implement get/set FOV.
- Valgrind: Fixed potential unaligned memory access warning in point clouds.
- Fix build error with AppleClang 5.1 (Closes #71).
- mrpt::utils::CClientTCPSocket: Use a connection success check that works on all platforms
- Important bug fixed regarding a missing dynamic_cast<> in smart pointers casting. See above possible implications in user code. properly (Patch by Joe Burmeister).
Version 1.2.1: Released 10-JUL-2014
- Changes in classes:
- [mrpt-base]
- [mrpt-hwdrivers]
- Build system:
- Fix compilation of SRBA with DEBUG_GARBAGE_FILL_ALL_NUMS=1
- Fix de-serialization error in mrpt::reactivenav::CLogFileRecord (and new unit tests added to avoid regressions).
- Several Debian bugs closed (see packaging/debian/changelog), including build errors in uncommon platforms (MIPS, kFreeBSD, etc.)
Version 1.2.0: Released 25-JUN-2014
- Most important changes:
- Public header files (.h) have undergone a serious refactoring to minimize unnecesary dependencies and reduce compile time and memory as much as possible. As a side effect, user code might need to add new #include<> lines. This change justifies the new minor version series 1.2.X.
- MRPT now cleanly builds in clang and OSX.
- Support for new camera drivers (OpenNI2, DUO3D).
- Many bug fixes.
- Detailed list of changes:
- Changes in apps:
- rawlog-edit:
- New operations: –export-odometry-txt, –recalc-odometry
- New flag: –rectify-centers-coincide
- New examples:
- New classes:
- [mrpt-base]
- [mrpt-hwdrivers]
- [mrpt-obs]
- Changes in classes:
- [mrpt-base]
- [mrpt-hwdrivers]
- [mrpt-srba]
- Now also implements SE(3) relative graph-slam.
- [mrpt-vision]
- Build system / public API:
- Fixes to build in OS X - Patch by Randolph Voorhies.
- Removed most "using namespace" from public headers, as good practice.
- Refactoring of MRPT headers.
- Deleted methods and functions:
- Embedded Eigen updated to version 3.2.1 (commit) (commit)
- BUG FIXES:
Version 1.1.0: Released 22-FEB-2014
- New apps:
- New classes:
- [mrpt-base]
- [mrpt-hwdrivers]
- [mrpt-maps]
- There are now two versions of octomaps (by Mariano Jaimez Tarifa/Jose Luis Blanco) - (commit)
- [mrpt-obs]
- [mrpt-opengl]
- [mrpt-reactivenav]
- mrpt::reactivenav::CAbstractPTGBasedReactive, as part of a large code refactoring of these classes: (commit)
- mrpt::reactivenav::CReactiveNavigationSystem
- mrpt::reactivenav::CReactiveNavigationSystem3D
- [mrpt-vision]
- mrpt::vision::CDifodo, a class which implements visual odometry based on depth images and the "range flow constraint equation". (by Mariano Jaimez Tarifa) - (commit)
- Changes in classes:
- Deleted classes:
- mrpt::utils::CEvent, which was actually unimplemented (!)
- mrpt::hwdrivers::CInterfaceNI845x has been deleted. It didn't offer features enough to justify a class.
- New examples:
- [MRPT]/samples/threadsPipe
- [MRPT]/samples/NIDAQ_test
- [MRPT]/openNI2_RGBD_demo (by Mariano Jaimez Tarifa)
- [MRPT]/openNI2_proximity_demo (by Mariano Jaimez Tarifa)
- Build system:
- Fixed compilation with clang.
- Fixed building against OpenCV 3.0.0 (GIT head)
- Updated to the latest nanoflann 1.1.7.
- Updated to Eigen 3.2.0 - (commit)
- Binary packages for Windows now include .pdb files to help debugging with Visual Studio.
- BUG FIXES:
- Fixed potential infinity loop in mrpt::math::make_vector<1,T>()
- Fixed build error with GCC when experimental parallelization is enabled. (commit)
- mrpt::reactivenav::CReactiveNavigationSystem complained about missing config variables ROBOTMODEL_TAU & ROBOTMODEL_DELAY, which were removed in MRPT 1.0.2 - (commit)
- Fixed potential mem alignment errors (Eigen's UnalignedArrayAssert) in SRBA for 32bit builds. (commit)
- mrpt::topography::geodeticToENU_WGS84() and related functions used a local +Z axis aligned to the line towards the Earth center; now the Z axis points normally to the ellipsoid surface. The difference with the previous behavior is small but may be of a few millimeters for each meter from the reference point. (commit)
- Potential crash when setting mpPolygon::setPoints() with empty vectors - (commit)
- mrpt::reactivenav::CReactiveNavigationSystem and mrpt::reactivenav::CReactiveNavigationSystem3D didn't obey the "enableConsoleOutput" constructor flag - (commit)
- mrpt::synch::CSemaphore::waitForSignal() : Fixed error when thread got an external signal (commit)
Version 1.0.2: Released 2-AUG-2013 (SVN 3435)
- New apps:
- Changes in apps:
- rawlog-edit:
- New operations: –list-timestamps, –remap-timestamps, –export-2d-scans-txt, –export-imu-txt
- New classes:
- [mrpt-base]
- [mrpt-opengl]
- [mrpt-reactivenav]
- mrpt::reactivenav::CReactiveNavigationSystem3D - By Mariano Jaimez Tarifa - r3389
- New functions:
- Changes in classes:
- [mrpt-base]
- Generic particle filter classes now allow directly resampling to a dynamic number of particles. Affected methods: - r3381
- New method: CImage::loadFromXPM() - r3397
- [mrpt-maps]
- [mrpt-openg]
- [mrpt-reactivenav]
- mrpt::reactivenav::CParameterizedTrajectoryGenerator: The "low pass filter" has been removed since it wasn't practical and was never used; thus, parameters "TAU" and "DELAY" has been removed. - r3395
- Methods removed since they weren't implemented in any derived class and there are no plans for doing it.
- mrpt::reactivenav::CReactiveNavigationSystem ::evaluate()
- mrpt::reactivenav::CReactiveNavigationSystem ::setParams()
- Build system:
- Updated to nanoflann 1.1.7: ICP is ~5% faster.
- More unit tests:
- [mrpt-base] geometry module.
- BUG FIXES:
- CTimeLogger::registerUserMeasure() ignored the enable/disable state of the logger - r3382
- mrpt-srba: SEGFAULT in 32bit builds due to missing MRPT_MAKE_ALIGNED_OPERATOR_NEW - r3429
Version 1.0.1: Released 12-MAY-2013 (SVN 3370)
- Changes in apps:
- RawLogViewer:
- Better description of the "too much memory used" warning while loading large datasets.
- robotic-arm-kinematics:
- Now allows changing the orientation of the first DOF (X,Y,Z).
- New classes:
- [mrpt-hwdrivers]
- mrpt::hwdrivers::CInterfaceNI845x: An interface for this USB SPI/I2C data acquisition board.
- mrpt::hwdrivers::CCANBusReader: A class to record CAN bus frames with a CAN232 converter.
- [mrpt-obs]
- New functions:
- New examples:
- Changes in classes:
- [mrpt-maps]
- [mrpt-kinematics]
- Removed stuff:
- Build system:
- Fixed a potential build error if including FFMPEG's <time.h> instead of the standard header - r3316
- Fixed determination of GCC version for all GCC builds - r3324
- Updated to Eigen 3.1.3 - r3349
- Updated to nanoflann 1.1.5
- BUG FIXES:
- Unit tests "SchurTests" for mrpt-srba incorrectly reported errors due to an improperly initialized reference to a local variable - r3318
- Debian packages: added missing binary deps for libmrpt-dev - r3335
Version 1.0.0: Released 1-MAR-2013 (SVN 3287)
- Most important changes:
- New library with a flexible implementation of Sparser Relative Bundle Adjustment (RBA), as presented in ICRA 2013: mrpt-srba.
- New library for Plane-based Maps: mrpt-pbmap (also presented in ICRA 2013).
- Some MRPT modules are now header-only libraries.
- Support for a new Octomap metric map, via the octomap library. See mrpt::maps::COctoMap and detailed changes below.
- Support for importing/exporting point clouds in the standard LAS format (Look for liblas below).
- Better support for custom builds of MRPT (selective building of individual apps and libs, etc.)
- Ready for Visual Studio 2012 and GCC 4.7
- From now on, MRPT is released under the "New BSD" license.
- Many bug fixes.
- Detailed list of changes:
- New apps:
- Changes in apps:
- navlog-viewer:
- Fixed some minor visualization errors.
- RawLogViewer:
- Import sequence of images as rawlog: Didn't detect "png" file extension as images - r2940 - Closes #34
- The GUI toolbar has been ported from wxWidget's ToolBar to sets of wxCustomButton's to avoid visualization problems in wx 2.9.X - r2950
- ReactiveNavigationDemo:
- The default holonomic navigation method is now the VFF, since after the last bug fixes and tunes it seems to work quite well.
- SceneViewer3D:
- The GUI toolbar has been ported from wxWidget's ToolBar to sets of wxCustomButton's to avoid visualization problems in wx 2.9.X - r2952
- Added a new menu: "File -> Import -> From LAS file..." - r3244
- grid-matching: new argument "--aligner" to select aligner method - r3021
- New classes:
- [mrpt-base]
- [mrpt-obs]
- [mrpt-maps]
- [mrpt-opengl]
- Deleted classes:
- New libraries:
- Changes in libraries:
- Changes in classes:
- [mrpt-base]
- [mrpt-bayes]
- [mrpt-graphs]
- [mrpt-gui]
- [mrpt-hwdrivers]
- [mrpt-maps]
- Better integration of point cloud classes with PCL: - r2943
- Point cloud loading & saving in the standard ASPRS LiDAR LAS format (if liblas is installed in the system, see http://www.liblas.org/ ). See also the ready-to-use import menu in SceneViewer3D - r3244
- Integration of wind measurements in gas-concentration maps (by Javier G. Monroy) - r3050
- [mrpt-obs]
- [mrpt-opengl]
- [mrpt-reactivenav]
- Much code of mrpt::reactivenav classes have undergone a clean-up, slight optimizations and a translation of old Spanish names/comments to English - r2939, r2942, r2958, r3091
- mrpt::reactivenav::CParameterizedTrajectoryGenerator::CCollisionGrid now has a more maintainable binary serialization format - r2939
- mrpt::reactivenav::CParameterizedTrajectoryGenerator::debugDumpInFiles() now also saves text files which can be used to visualize PTGs from MATLAB (see scripts/viewPTG.m) - r3009
- mrpt::reactivenav::CHolonomicVFF and mrpt::reactivenav::CHolonomicND now have more configurable parameters, loadable from config files. See their documentation.
- Repulsive forces from obstacles in mrpt::reactivenav::CHolonomicVFF are now automatically normalized wrt the density of the 360deg view of obstacles and forces follow a "1/range" law instead of the old "exp(-range)".
- Solved a stability issue in C-S paths, in mrpt::reactivenav::CPTG_DiffDrive_CS (By Mariano Jaimez Tarifa) - r3085
- [mrpt-scanmatching]
- mrpt::scanmatching::robustRigidTransformation():
- Changed behavior not to allow features to appear in duplicated pairings.
- Added a consistency test to avoid seeding RANSAC with an inconsistent initial model.
- [mrpt-slam]
- mrpt::slam::CMetricMapBuilderICP now does not integrate the small pose changes due to odometry and/or relocalization when considering the distance and angle thresholds. This means that fewer map updates are now done for the same ICP-SLAM parameters, which should lead to "less noisy" maps.
- New functions:
- New examples:
- octomap_simple
- ransac-data-association
- Build system:
- Update to nanoflann 1.1.4 - r2937, r3017
- Update to Eigen 3.1.2 - r3064
- MRPT's root "CMakeLists.txt" has undergone a big refactoring and cleanup - r2961
- Backward compatible "mrpt-core" has been removed as a fake lib for which to search with CMake from user programs - r2961
- More system libs are detected in Linux (libclang-dev, lib3ds-dev), discarding embedded versions then - r2963 - Closes #17
- Automatic detection of supported SIMD extensions (SSE*) from CMake (only for Linux OS) - r3013
- Fixed building with Visual Studio 2012 (MSVC11) - r3017
- MRPT now allows defining header-only libraries with the define_mrpt_lib_header_only() macro - r3034, r3035
- More unit tests:
- Added new documentation page: environment variables.
- Removed the build flag "MRPT_BACKCOMPATIB_08X".
- Fixes for building under Mac OSX: r3181
- Enable some c++11 features if the compiler supports them - r3273
- BUG FIXES:
- Build: Fixed detection of OpenCV 2.4.2+ installed in the system via CMake config file instead of pkg-config, which seems to be broken. - r3019
- [mrpt-base] The iterator returned by end() in all MRPT vectors and matrices (based on Eigen) pointed to the last element, not to the (now correct) next position after the last element - r2941
- [mrpt-base] mrpt::dynamicsize_vector::resize() performed a memory reallocation even if given the current size, due to an inherited behavior from Eigen. It is not the expected behavior, so it has been fixed. - r3003
- [mrpt-base] Wrong computation of normPDF() values for the multidimensional cases. Closes #46 - r3068
- [mrpt-base] mrpt::poses::CPoint::asString() confused the 2D and 3D cases (Thanks Cipri!)
- [mrpt-base] Fixed errors in de-serialization of mrpt::utils::CPointPDFSOG and mrpt::maps::CReflectivityGridMap2D
- [mrpt-base] mrpt::math::KDTreeCapable::kdTreeRadiusSearch2D() always returned 0 matched.
- [mrpt-graphs] Fixed bug in RecursiveSpectralPartition (Thanks to Edu!) - r3026
- [mrpt-hwdrivers] Fixed potential SEGFAULT in mrpt::hwdrivers::CGPSInterface (Thanks K.Miyawaki for reporting)
- [mrpt-hwdrivers] Fixed communications to LMS 1xx scanners (Thanks Henry! See http://code.google.com/p/mrpt/issues/detail?id=49 )
- [mrpt-maps] mrpt::maps::COccupancyGridMap2D::getAs3DObject() returned cells with an occupancy of exactly "0" as transparent - r2957
- [mrpt-maps] Fixed saving the correct point colors in mrpt::maps::CColouredPointsMap::savePCDFile() (Thanks Mariano!) - r3090
- [mrpt-maps] In CPointsMap::computeMatchingWith3D. Fixed matching two 3D point clouds as each correspondence was inserted twice into the output vector. (By Paco) - r3162
- [mrpt-opengl] Fixed a potential bug: after deserializing an object based on a display-list (most of them), it won't update in the opengl view.
- [mrpt-reactivenav] Class mrpt::reactivenav::CHolonomicVFF was not exported in Windows DLL's (Thanks Mariano for noticing!).
- [mrpt-reactivenav] Fixed wrong computation of obstacles force fields in mrpt::reactivenav::CHolonomicVFF (Thanks Mariano for noticing!) - r2953
- [mrpt-reactivenav] Precomputed collision grids could be loaded in mrpt::reactivenav::CParameterizedTrajectoryGenerator even for different robot parameters/shape: now it correctly detects such situations and recompute when needed - r2939 - Closes #33
- [mrpt-reactivenav] ND algorithm: Fixed bugs of "last gap is never evaluated" and wrong composition of representative direction for some gaps (By Mariano) - r3056
Version 0.9.6 - (Version 1.0.0-Release_Candidate_4): Released 30-MAY-2012 (SVN 2930)
- New applications:
- Removed applications:
- stereo-calib-gui: it's now superseded by kinect-stereo-gui. The old command line tool is still useful, so it's still there as the example "stereo-calib-opencv".
- Changes in applications:
- icp-slam:
- Added a new option (SHOW_LASER_SCANS_3D in config files) to draw laser scans in the live 3D view - r2881
- rawlog-edit:
- Operation "--camera-params" now also handles stereo observations.
- New operation "--stereo-rectify" for batch rectifying datasets with stereo images.
- New operation "--rename-externals".
- SceneViewer3D:
- New menu for generating high-resolution renders of any scene directly to imag files - r2775
- Many new menus for selective selecting objects and applying operations on them - r2776
- stereo-calib-gui: Now generates a report with detailed and clear results from stereo calibration and allows the user to change most parameters interactively - r2801
- kinect-3d-view: New key command: press '9' to grab selected snapshots to disk - r2890
- Kinect stuff:
- [mrpt-hwdrivers]
- [mrpt-obs]
- [mrpt-vision]
- New classes:
- [mrpt-gui]
- [mrpt-hwdrivers]
- [mrpt-opengl]
- [mrpt-vision]