Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer vision

Overview

The MRPT project

CI Check clang-format

Gitpod ready-to-code

1. Introduction

Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer vision. Libraries include SLAM solutions, 3D(6D) geometry, SE(2)/SE(3) Lie groups, probability density functions (pdfs) over points, landmarks, poses and maps, Bayesian inference (Kalman filters, particle filters), image processing, obstacle avoidance, etc. MRPT also provides GUI apps for Stereo camera calibration, dataset inspection, and much more.

2. Resources

3. Install

Packaging status

3.1. Ubuntu

See this PPA for nightly builds from the develop branch, or this one for stable releases.

    sudo add-apt-repository ppa:joseluisblancoc/mrpt   # develop branch
    #sudo add-apt-repository ppa:joseluisblancoc/mrpt-stable   # master (stable releases) branch
    #sudo apt update # Only required for Ubuntu 16.04
    sudo apt install libmrpt-dev mrpt-apps

Supported distributions:

  • Ubuntu 20.04 LTS (Focal), Ubuntu 18.04 LTS (Bionic), 18.10 (Cosmic), 19.10 (Eoan)
  • Ubuntu 16.04 LTS Xenial (EOL: April 2021)
    • Using 16.04 requires installing gcc-7 due to some bugs in gcc-5:

      add-apt-repository ppa:ubuntu-toolchain-r/test
      apt-get update
      apt-get install -y g++-7
      

3.2. Build from sources

Minimum compiler requisites:

  • gcc-7 or newer.
    • Ubuntu 16.04LTS Xenial: Instructions for installing gcc-7 in this version of Ubuntu.
    • Ubuntu 18.04 or newer: default gcc version is ok.
  • clang-4 or newer.
  • Windows: Visual Studio 2017 version 15.3 or newer.
  • cmake >= 3.3 required (>=3.4 for Windows).
  • Eigen >= 3.3 required.

To build in Debian/Ubuntu follow the steps below. See full build docs online for Windows instructions or to learn all the details.

  • Install minimum recommended dependencies:
sudo apt install build-essential pkg-config cmake libwxgtk3.0-dev libwxgtk3.0-gtk3-dev \
libopencv-dev libeigen3-dev libgtest-dev

MRPT builds against OpenCV 2.4.x, 3.x, 4.x, but it is recommended to use 3.0 or later.

  • Recommended: Install additional dependencies to enable most MRPT features (except ROS bridges):
sudo apt install libftdi-dev freeglut3-dev zlib1g-dev libusb-1.0-0-dev \
libudev-dev libfreenect-dev libdc1394-22-dev libavformat-dev libswscale-dev \
libassimp-dev libjpeg-dev   libsuitesparse-dev libpcap-dev liboctomap-dev \
libglfw3-dev
  • Install additional dependencies for ros1bridge using official Ubuntu repositories. If you already have a ROS distribution installed, doing source /opt/ros/xxx/setup.bash is enough, no further packages must be installed.
sudo apt install libcv-bridge-dev libgeometry-msgs-dev libnav-msgs-dev librosbag-storage-dev libroscpp-dev libsensor-msgs-dev libstd-srvs-dev libstereo-msgs-dev libtf2-dev libtf2-msgs-dev libbz2-dev
  • Build with cmake as usual:
mkdir build && cd build
cmake ..
make

3.3. Windows precompiled versions

Executables (.exes and .dlls) and development libraries (.hs and .libs) included:

Nightly built Windows installer

4. License

MRPT is released under the new BSD license.

Stargazers over time

Stargazers over time

Issues
  • Port to C++14

    Port to C++14

    To be done (in 2017? -> yes) when it's safe to assume everyone has a decent C++14 compiler.

    This implies:

    • [x] Deprecate support for Ubuntu precise (and also trusty but only in PPA, for the next item:)
    • [x] Use modern CMake 3.1+ C++ compiler features: target_compile_features, WriteCompilerDetectionHeader, set (CMAKE_CXX_STANDARD 11), etc.
    • [x] Smart pointers: forget about stlplus and move to C++11 smart pointers.
    • [x] Threads: move to std::thread, unless there are strong reasons not to do so.
    • [x] Switch tfest/indiv-compat-decls.h to <functional>
    • [x] CMake: use EXPORT, etc.
    • [x] Direct use of Eigen? Moved to its own issue: #496
    • [x] Semaphore -> http://stackoverflow.com/a/27852868
    • [x] MRPT_OVERRIDE -> override
    • [x] CPipe : avoid deprecated auto_ptr<>
    • [x] Search and rewrite all areas having an #if MRPT_HAS_CXX11
    • [x] Drop mrpt::synch::CAtomicCounter in favor of C++11 std::atomic.
    • [x] Prefer nullptr
    • [x] MRPT_NO_THROWS ==> C++11.
    • [x] Make all destructors noexcept
    • [x] Consider replacing uint32_t enums with correct C++11 typed enums. E.g. in GNSS_BINARY_MSG_DEFINITION_START
    • [x] Review usages of mrpt::utils::delete_safe and consider changing them to use C++11 smart pointers.
    • [x] Foo::Create with make_shared ()
    • [x] std::function typedefs or similar for ZMQ wrappers: See #231
    • [x] Support move semantics (read below)
    • [x] typedefs ==> using
    • [x] Add constexpr to geometry constructors, etc.
    • [x] alignas instead of Eigen align macros
    • [x] Simplify ctors via member initialization in headers, e.g. int a { 0 }; or int a = 0;
    • [x] Replace copy_ptr<>, etc. with simple using ... partial template specializations.
    • [x] Use using FP=... to define functors.
    • [x] Use template<> using ... instead of current aligned STL containers. ==> Nope: it would break existing code, it's not worth (Nov 3, 2017)
    • [x] Replace std::vector of fixed length with std::array. E.g. ReactiveNav classes, etc.
    • [x] Make sure all move ctors and move = operators are declared noexcept. Otherwise, they will not be eligible for "real move".
    • [x] refactor type traits
    • [x] Use weak_ptr for m_frame_tf API in ReactiveNav

    Minimum compilers (see this table)

    • MSVC 15 aka 14.1 (2017)
    • GCC 4.8 (?)
    • CLANG 3.3 (?)

    Minimum CMake version: 3.1

    enhancement 
    opened by jlblancoc 68
  • Build issues when Qt or OpenGL disabled

    Build issues when Qt or OpenGL disabled

    • [x] Qt5 components shouldn't be required. They should be optional and build to succeed if the optional components are not found.
    • [x] Disabling OpenGL should not break the build.

    From: https://gitter.im/MRPT/mrpt

    Alex Giokas @alexge233 Oct 05 04:47 Hi Hunter, I'm trying to build a minimal version of MRPT-1.9.9 (from github) without any GUI stuff. I keep running into the same issue:

    -- Architecture (uname -m): x86_64
    -- Kernel name (uname -s): Linux
    -- Could NOT find OpenGL (missing:  OPENGL_INCLUDE_DIR) 
    -- Could NOT find GLUT (missing:  GLUT_glut_LIBRARY GLUT_INCLUDE_DIR) 
    -- **Warning**: OpenGL and/or GLUT not found! OpenGL capabilities will be disabled.
    --                      OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so
    --                      OPENGL_glu_LIBRARY: OPENGL_glu_LIBRARY-NOTFOUND
    --                      GLUT_glut_LIBRARY: GLUT_glut_LIBRARY-NOTFOUND
    --                      OPENGL_INCLUDE_DIR: OPENGL_INCLUDE_DIR-NOTFOUND
    -- Could NOT find wxWidgets (missing:  wxWidgets_LIBRARIES wxWidgets_INCLUDE_DIRS) 
    wxWidgets was not found automatically. Please, set wxWidgets_ROOT_DIR to the lib directory to enable it in MRPT.
    CMake Warning at cmakemodules/script_qt.cmake:10 (find_package):
      By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
      asked CMake to find a package configuration file provided by "Qt5", but
      CMake did not find one.
    
      Could not find a package configuration file provided by "Qt5" with any of
      the following names:
    
        Qt5Config.cmake
        qt5-config.cmake
    
      Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
      to a directory containing one of the above files.  If "Qt5" provides a
      separate development package or SDK, be sure it has been installed.
    Call Stack (most recent call first):
      CMakeLists.txt:234 (include)
    
    
    -- cotire 1.7.9 loaded.
    And when I build:
    [ 45%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CGlCanvasBase.cpp.o
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘void mrpt::gui::CGlCanvasBase::resizeViewport(int, int)’:
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:119:20: error: ‘GLint’ was not declared in this scope
      glViewport(0, 0, (GLint)w, (GLint)h);
                        ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:119:37: error: ‘glViewport’ was not declared in this scope
      glViewport(0, 0, (GLint)w, (GLint)h);
                                         ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘void mrpt::gui::CGlCanvasBase::clearColors()’:
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:124:65: error: ‘glClearColor’ was not declared in this scope
      glClearColor(clearColorR, clearColorG, clearColorB, clearColorA);
                                                                     ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘virtual double mrpt::gui::CGlCanvasBase::renderCanvas(int, int)’:
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:260:16: error: ‘GL_ALL_ATTRIB_BITS’ was not declared in this scope
       glPushAttrib(GL_ALL_ATTRIB_BITS);
                    ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:260:34: error: ‘glPushAttrib’ was not declared in this scope
       glPushAttrib(GL_ALL_ATTRIB_BITS);
                                      ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:263:12: error: ‘GL_DEPTH_TEST’ was not declared in this scope
       glEnable(GL_DEPTH_TEST);
                ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:263:25: error: ‘glEnable’ was not declared in this scope
       glEnable(GL_DEPTH_TEST);
                             ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:264:12: error: ‘GL_ALPHA_TEST’ was not declared in this scope
       glEnable(GL_ALPHA_TEST);
                ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:265:12: error: ‘GL_TEXTURE_2D’ was not declared in this scope
       glEnable(GL_TEXTURE_2D);
                ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:269:19: error: ‘GLsizei’ was not declared in this scope
       resizeViewport((GLsizei)width, (GLsizei)height);
                       ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:293:17: error: ‘GL_MODELVIEW’ was not declared in this scope
        glMatrixMode(GL_MODELVIEW);
                     ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:293:29: error: ‘glMatrixMode’ was not declared in this scope
        glMatrixMode(GL_MODELVIEW);
                                 ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:294:19: error: ‘glLoadIdentity’ was not declared in this scope
        glLoadIdentity();
                       ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:307:11: error: ‘glFlush’ was not declared in this scope
       glFlush();
               ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:312:15: error: ‘glPopAttrib’ was not declared in this scope
       glPopAttrib();
                   ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:316:15: error: ‘glPopAttrib’ was not declared in this scope
       glPopAttrib();
                   ^
    /root/mrpt/libs/gui/src/CGlCanvasBase.cpp:325:15: error: ‘glPopAttrib’ was not declared in this scope
       glPopAttrib();
    Do you have a CMAKE macro/flag to turn OpenGL/GUI off?
    

    Hunter Laux @jolting Oct 05 10:38 Did you try USE_QT=false?

    Alex Giokas @alexge233 Oct 06 02:08 I did now. This is weird, Cmake spots no presence of QT, wxWidgets but it still tries to build the GUI library. I've also run into a similar issue: I can compile the library if I install freeglut-dev, but when I build by application which links to mrpt, then I get link errors to assimp.so.4. Where do you default to using gui and opengl, maybe I can hack into it and turn them off.

    Alex Giokas @alexge233 Oct 06 02:14 For example, running with -DUSE_QT=false it still tries to build velodyne (which I don't need) which then fails to link to pthread:

    [ 87%] Building CXX object tests/CMakeFiles/test_mrpt_hwdrivers.dir/__/libs/hwdrivers/src/CVelodyneScanner_unittest.cpp.o
    /usr/bin/ld: CMakeFiles/velodyne-view.dir/velodyne-view_main.cpp.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5'
    //lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    apps/velodyne-view/CMakeFiles/velodyne-view.dir/build.make:162: recipe for target 'bin/velodyne-view' failed
    make[2]: *** [bin/velodyne-view] Error 1
    CMakeFiles/Makefile2:2549: recipe for target 'apps/velodyne-view/CMakeFiles/velodyne-view.dir/all' failed
    make[1]: *** [apps/velodyne-view/CMakeFiles/velodyne-view.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
    

    Just fyi, I am willing to contribute if you point me to the right direction, it's the least I can do

    Alex Giokas @alexge233 Oct 06 05:51 This is what I'm trying with right now:

    cmake .. -DDISABLE_OPENGL=ON -DDISABLE_LIBUSB=ON -DDISABLE_OPENNI2=ON -DDISABLE_PCAP=ON -DDISABLE_PCL=ON -DDISABLE_PHIDGETS=ON -DDISABLE_PYTHON_BINDINGS=ON -DUSE_QT=OFF -DDISABLE_ROS=ON
    

    Still, I get:

    - List of MRPT libs/modules to be built (and dependencies):
    -- -----------------------------------------------------------------
    --   mrpt-hwdrivers : mrpt-base;mrpt-comms;mrpt-maps;mrpt-obs;mrpt-gui;mrpt-opengl;mrpt-maps;mrpt-vision;mrpt-graphs 
    --   mrpt-graphs : mrpt-opengl;mrpt-base 
    --   mrpt-base :  
    --   mrpt-vision : mrpt-obs;mrpt-opengl;mrpt-base;mrpt-opengl 
    --   mrpt-tfest : mrpt-base 
    --   mrpt-comms : mrpt-base 
    --   mrpt-bayes : mrpt-base   (header-only)
    --   mrpt-graphslam : mrpt-base;mrpt-graphs;mrpt-gui;mrpt-maps;mrpt-obs;mrpt-opengl;mrpt-slam;mrpt-vision 
    --   mrpt-detectors : mrpt-vision;mrpt-maps;mrpt-gui;mrpt-slam;mrpt-base;mrpt-opengl;mrpt-obs;mrpt-graphs 
    --   mrpt-hmtslam : mrpt-slam;mrpt-graphslam;mrpt-graphs;mrpt-vision;mrpt-maps;mrpt-base;mrpt-obs;mrpt-opengl;mrpt-gui 
    --   mrpt-topography : mrpt-base;mrpt-obs;mrpt-opengl;mrpt-tfest 
    --   mrpt-opengl : mrpt-base 
    --   mrpt-slam : mrpt-bayes;mrpt-graphs;mrpt-vision;mrpt-tfest;mrpt-maps;mrpt-obs;mrpt-opengl;mrpt-base 
    --   mrpt-obs : mrpt-opengl;mrpt-base 
    --   mrpt-kinematics : mrpt-opengl;mrpt-base 
    --   mrpt-maps : mrpt-obs;mrpt-graphs;mrpt-opengl;mrpt-base 
    --   mrpt-gui : mrpt-opengl;mrpt-base 
    --   mrpt-nav : mrpt-graphs;mrpt-maps;mrpt-kinematics;mrpt-graphs;mrpt-obs;mrpt-opengl;mrpt-base
    What I really want is slam, obs, nav, maps and base.
    As it builds, it runs into:
    Scanning dependencies of target test_mrpt_graphs
    [ 48%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CAboutBoxBase.cpp.o
    [ 48%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CWxGLCanvasBase.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CGlCanvasBase.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CAboutBox_wx.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CDisplayWindowPlots.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/WxUtils.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CDisplayWindow.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/registerAllClasses.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/gui-precomp.cpp.o
    [ 50%] Building CXX object libs/gui/CMakeFiles/mrpt-gui.dir/src/CAboutBoxQt.cpp.o
    [ 50%] Building CXX object tests/CMakeFiles/test_mrpt_graphs.dir/test_main.cpp.o
    [ 50%] Building CXX object tests/CMakeFiles/test_mrpt_graphs.dir/__/libs/graphs/src/ScalarFactorGraph_unittest.cpp.o
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘void mrpt::gui::CGlCanvasBase::resizeViewport(int, int)’:
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:119:20: error: ‘GLint’ was not declared in this scope
      glViewport(0, 0, (GLint)w, (GLint)h);
                        ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:119:37: error: ‘glViewport’ was not declared in this scope
      glViewport(0, 0, (GLint)w, (GLint)h);
                                         ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘void mrpt::gui::CGlCanvasBase::clearColors()’:
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:124:65: error: ‘glClearColor’ was not declared in this scope
      glClearColor(clearColorR, clearColorG, clearColorB, clearColorA);
                                                                     ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp: In member function ‘virtual double mrpt::gui::CGlCanvasBase::renderCanvas(int, int)’:
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:260:16: error: ‘GL_ALL_ATTRIB_BITS’ was not declared in this scope
       glPushAttrib(GL_ALL_ATTRIB_BITS);
                    ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:260:34: error: ‘glPushAttrib’ was not declared in this scope
       glPushAttrib(GL_ALL_ATTRIB_BITS);
                                      ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:263:12: error: ‘GL_DEPTH_TEST’ was not declared in this scope
       glEnable(GL_DEPTH_TEST);
                ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:263:25: error: ‘glEnable’ was not declared in this scope
       glEnable(GL_DEPTH_TEST);
                             ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:264:12: error: ‘GL_ALPHA_TEST’ was not declared in this scope
       glEnable(GL_ALPHA_TEST);
                ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:265:12: error: ‘GL_TEXTURE_2D’ was not declared in this scope
       glEnable(GL_TEXTURE_2D);
                ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:269:19: error: ‘GLsizei’ was not declared in this scope
       resizeViewport((GLsizei)width, (GLsizei)height);
                       ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:293:17: error: ‘GL_MODELVIEW’ was not declared in this scope
        glMatrixMode(GL_MODELVIEW);
                     ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:293:29: error: ‘glMatrixMode’ was not declared in this scope
        glMatrixMode(GL_MODELVIEW);
                                 ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:294:19: error: ‘glLoadIdentity’ was not declared in this scope
        glLoadIdentity();
                       ^
    /home/zuperath/code/mrpt/libs/gui/src/CGlCanvasBase.cpp:307:11: error: ‘glFlush’ was not declared in this scope
       glFlush();
               ^
    
    opened by jolting 38
  • Segmentation Fault when saving ICP map

    Segmentation Fault when saving ICP map

    I'm using mrpt 1.5 from an Ubuntu PPA.

    The ICP builder exposes some methods which AFAIK allow the CSimpleMap to be saved, however they all SEGFAULT when I try:

    • saveCurrentMapToFile segfaults right away
    • setCurrentMapFile when the builder is destroyed, it tries to save the map file
    • getCurrentlyBuiltMap does not fill the map, which when I try to save segfaults also

    Am I using this wrongly, or is this a bug? Running under gdb and backtracing pinpoints to mrpt::obs::CSensoryFrame::writeToStream which in turn hints towards a dynamic_cast.

    opened by alexge233 30
  • MRPT runs on MacOS10.14

    MRPT runs on MacOS10.14

    Emmm... I have tried to build mrpt on MacOS10.14, but some requirements can not be fullfilled.

    Is there any solutions for running MRPT on MacOS? Or does anyone try to fix it? I would like to join this fixed work.

    opened by alibenD 24
  • Fix static builds on Linux

    Fix static builds on Linux

    Hello, I complied mrpt 1.5.6 on my Ubuntu Xenial using the source file in the branch. However, when I run the test "test_mrpt_base" I get a failure message: [ FAILED ] Matrices.SerializeCMatrixD [ FAILED ] SerializeTestBase.WriteReadToMem.

    Similarly, when I run "test_mrpt_slam", MRPT throws an exception and I get a failure message. [ FAILED ] MonteCarlo2D.RunSampleDataset.

    Please can someone tell me if there are fixes for these because I am new to mrpt.

    Thank you!

    wontfix 
    opened by JohnDuke259 21
  • Octomap include problem

    Octomap include problem

    When building current master, if there is ros-octomap installed, cmake script finds octomap directory correctly. However, when compiling, there is an error octomap/octomap.h: No such file or directory: build log When uninstalling ros-octomap and using internal one, there is no problem. Built with internal octomap, MRPT installs and then there is an error when building catkin workspace with MRPT included: build log Installing ros-octomap between building MRPT and catkin workspace solves compilation problem but looks like a piece of duct tape.

    Isn't it related to #574?

    Sincerely, Borys.

    opened by spsancti 20
  • Graphslam devel2

    Graphslam devel2

    Changed apps/libraries:

    • mrpt-graphslam
    • mrpt-graphs
    • mrpt-base

    Notes on Pull-Request

    • Current PR improves in the robustness of mrpt-graphslam lib (numerous bug fixes) and also adds support for implementing multi-robot graphSLAM - see mrpt_graphslam_2d for an example of such usage
    • Add support for implementing 3D graphSLAM using CGraphSlamEngine.
    • mrpt-graphs is a standard lib (not header-only)
    • Instead of a single function that plots a graph, add separate classes for visualizing graphs produced by a single or by multiple agents - refer to CMRVisualizer.h, CVisualizer.h.
    • Add compile-time traits for determining whether a PosePDF class holds the uncertainty in covariance or information based form - see pose_traits
    • Modify the look of github PR template file

    For an more in-depth analysis of the proposed changes refer to the commit messages.


    I acknowledge to have:

    (Notify: @MRPT/owners )

    opened by bergercookie 20
  • Errors building with MinGW 4.9  (Was: The Eigen/Array header does no longer exist in Eigen3)

    Errors building with MinGW 4.9 (Was: The Eigen/Array header does no longer exist in Eigen3)

    Hi all, I am trying to compile mrpt 1.3.2 under Windows and MinGW32. The CMake configuration has the EIGEN_USE_EMBEDDED_VERSION checked, and my make command is [mingw32-make -f makefile CXXFLAGS="-std=gnu++11" SHARED=1 UNICODE=1 BUILD=release]

    The build explodes compiling bayes/CParticleFilter.cpp, and yields the error message "The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core."

    What am I doing wrong (besides building under Windows ;) )?

    opened by prpsymbol 19
  • merge JSON-capable serialization methods

    merge JSON-capable serialization methods

    By @rachit173 for GSOC 2018. See #783

    Additional tasks to be done before merging:

    • [x] Helper macros
    • [x] Add serialization for CPose* classes.
    • [x] Add serialization for, at least, some CObservation* classes. Moved to #820
    • [x] Add real unit tests?
    • [x] Add examples + update dox docs with the 2 ways to use JSON serialization ("raw" and "opaque").
    opened by jlblancoc 17
  • MinGW x64 building issue

    MinGW x64 building issue

    Hello!

    I got issue compiling mrpt wint MinGW64:

    cmake .. -G "MSYS Makefiles" - ok mingw32-make: `$ make Scanning dependencies of target EP_octomap [ 0%] Creating directories for 'EP_octomap' [ 0%] Performing download step (download, verify and extract) for 'EP_octomap' -- Downloading... dst='D:/Programming/libs/mrpt-1.5.6/build/EP_octomap-prefix/src/devel.zip' timeout='none' -- Using src='https://github.com/MRPT/octomap/archive/devel.zip' -- Downloading... done -- extracting... src='D:/Programming/libs/mrpt-1.5.6/build/EP_octomap-prefix/src/devel.zip' dst='D:/Programming/libs/mrpt-1.5.6/build/otherlibs/octomap' -- extracting... [tar xfz] -- extracting... [analysis] -- extracting... [rename] -- extracting... [clean up] -- extracting... done [ 0%] No patch step for 'EP_octomap' [ 0%] No update step for 'EP_octomap' [ 1%] Performing configure step for 'EP_octomap' -- The C compiler identification is GNU 7.2.0 -- The CXX compiler identification is GNU 7.2.0 -- Check for working C compiler: D:/Programming/tools/msys2/mingw64/bin/gcc.exe -- Check for working C compiler: D:/Programming/tools/msys2/mingw64/bin/gcc.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: D:/Programming/tools/msys2/mingw64/bin/g++.exe -- Check for working CXX compiler: D:/Programming/tools/msys2/mingw64/bin/g++.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done

    -- octomap building as Release -- Found Doxygen: C:/Program Files/doxygen/bin/doxygen.exe (found version "1.8.10") found components: doxygen missing components: dot

    -- Compile octomap using: make -- Install octomap using: make install -- (be sure to set the correct CMAKE_INSTALL_PREFIX before) -- Compile API-documentation using: make docs

    -- Configuring done -- Generating done -- Build files have been written to: D:/Programming/libs/mrpt-1.5.6/build/EP_octomap-prefix/src/EP_octomap-build [ 1%] Performing build step for 'EP_octomap' Scanning dependencies of target octomath-static [ 7%] Building CXX object octomap/src/math/CMakeFiles/octomath-static.dir/Vector3.cpp.obj [ 14%] Building CXX object octomap/src/math/CMakeFiles/octomath-static.dir/Quaternion.cpp.obj [ 21%] Building CXX object octomap/src/math/CMakeFiles/octomath-static.dir/Pose6D.cpp.obj [ 28%] Linking CXX static library /D/Programming/libs/mrpt-1.5.6/build/otherlibs/octomap/lib/liboctomath.a [ 28%] Built target octomath-static Scanning dependencies of target octomap-static [ 35%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/AbstractOcTree.cpp.obj [ 42%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/AbstractOccupancyOcTree.cpp.obj [ 50%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/Pointcloud.cpp.obj [ 57%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/ScanGraph.cpp.obj [ 64%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/CountingOcTree.cpp.obj [ 71%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/OcTree.cpp.obj [ 78%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/OcTreeNode.cpp.obj [ 85%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/OcTreeStamped.cpp.obj [ 92%] Building CXX object octomap/src/CMakeFiles/octomap-static.dir/ColorOcTree.cpp.obj [100%] Linking CXX static library /D/Programming/libs/mrpt-1.5.6/build/otherlibs/octomap/lib/liboctomap.a [100%] Built target octomap-static [ 1%] No install step for 'EP_octomap' [ 1%] No test step for 'EP_octomap' [ 1%] Completed 'EP_octomap' [ 1%] Built target EP_octomap Scanning dependencies of target DocumentationFiles [ 1%] Built target DocumentationFiles [ 1%] Generating C unity source libs/base/cotire/mrpt-base_C_unity.c [ 2%] Generating CXX prefix source libs/base/cotire/mrpt-base_CXX_prefix.cxx [ 2%] Generating CXX prefix header libs/base/cotire/mrpt-base_CXX_prefix.hxx [ 2%] Building CXX precompiled header libs/base/cotire/mrpt-base_CXX_prefix.hxx.gch [ 2%] Generating C prefix source libs/base/cotire/mrpt-base_C_prefix.c [ 2%] Generating C prefix header libs/base/cotire/mrpt-base_C_prefix.h [ 2%] Building C precompiled header libs/base/cotire/mrpt-base_C_prefix.h.gch Scanning dependencies of target mrpt-base [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/bayes/CParticleFilter.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/bayes/CParticleFilterCapable.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/compress/zip.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CAtan2LookUpTable.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CHistogram.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CMatrix.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CMatrixB.cpp.obj [ 2%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CMatrixD.cpp.obj [ 3%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CPolygon.cpp.obj [ 3%] Building CXX object libs/base/CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj D:/Programming/tools/msys2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj: too many sections (49113) D:\Programming\tools\msys2\tmp\ccPuqE9n.s: Assembler messages: D:\Programming\tools\msys2\tmp\ccPuqE9n.s: Fatal error: can't write 19 bytes to section .text of CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj because: 'File too big' D:/Programming/tools/msys2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj: too many sections (49113) D:\Programming\tools\msys2\tmp\ccPuqE9n.s: Fatal error: can't close CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj: File too big make[2]: *** [libs/base/CMakeFiles/mrpt-base.dir/build.make:325: libs/base/CMakeFiles/mrpt-base.dir/src/math/CRuntimeCompiledExpression.cpp.obj] Error 1 make[1]: *** [CMakeFiles/Makefile2:332: libs/base/CMakeFiles/mrpt-base.dir/all] Error 2 make: *** [Makefile:152: all] Error 2 `

    opened by JekaS178RUS 17
  • particle filters: use values vs. pointers; enable C++17 in MRPT

    particle filters: use values vs. pointers; enable C++17 in MRPT

    • CProbabilityParticle now has a "storage" template param.
    • SE(2) / SE(2) particle filters now use value storage instead of smart pointers for robot poses, saving huge numbers of memory allocations.
    • MRPT now requires C++17 to build. See minimum compilers in updated README.md

    Pending before merging:

    • [x] Take a look at what's wrong with the python bindings. I fixed many error there but the remaining one, I can't localize the problem origin...
    opened by jlblancoc 17
  • pymrpt.so already registered; second conversion method ignored.

    pymrpt.so already registered; second conversion method ignored.

    on noetic if I link the pymrpt.so so that it is in the pythonpath many warnings are generated. The library does work.

    $ ln -s /opt/ros/noetic/lib/x86_64-linux-gnu/python3.8/dist-packages/pymrpt.so /usr/local/lib/python3.8/dist-packages/pymrpt.so
    
    $ python
    Python 3.8.10 (default, Mar 15 2022, 12:22:08) 
    [GCC 9.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import pymrpt
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPose2D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPosePDF> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPosePDFGaussian> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPosePDFParticles> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPose3D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPose3DPDF> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPose3DPDFGaussian> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::poses::CPose3DPDFParticles> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CAction> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CActionRobotMovement2D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CObservation> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CObservationOdometry> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CObservationRange> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CObservation2DRangeScan> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CObservationBearingRange> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::obs::CSensoryFrame> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::TMapGenericParams> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CMetricMap> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::COccupancyGridMap2D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CPointsMap> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CSimplePointsMap> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CSimpleMap> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CMultiMetricMap> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::maps::CMultiMetricMapPDF> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CRenderizable> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CGridPlaneXY> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CSetOfObjects> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CSetOfLines> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CEllipsoid3D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::CEllipsoid2D> already registered; second conversion method ignored.
    <frozen importlib._bootstrap>:219: RuntimeWarning: to-Python converter for std::shared_ptr<mrpt::opengl::COpenGLScene> already registered; second conversion method ignored.
    
    
    opened by rdinoff 1
  • Kinect v2 calibration using Camera calibration app

    Kinect v2 calibration using Camera calibration app

    Hi, I am trying to calibrate Kinect V2 camera. Does the camera-calib app supports the Kinvect V2. I was using kinect v2 with libfreenect2. I tried the app but it doesnt detect the Kinect V2.

    Thanks.

    opened by nrasulnrasul 0
  • benchmarkingImageFeatures_GUI segfault - needs refactor (Was: rawlog files not readable)

    benchmarkingImageFeatures_GUI segfault - needs refactor (Was: rawlog files not readable)

    Some rawlog files are not readable anymore.

    1. download rawlog_rgbd_dataset_freiburg1_360.tgz from https://www.mrpt.org/Collection_of_Kinect_RGBD_datasets_with_ground_truth_CVPR_TUM_2011
    2. run the benchmarkingImageFeatures_GUI example with that log file

    This will print the errors:

    QImage::scaled: Image is a null image
    QImage::scaled: Image is a null image
    QImage::scaled: Image is a null image
    Exception message: Assert condition failed: rows > 0 && cols > 0
    ==== MRPT exception backtrace ====
    [1] ../libs/obs/src/CObservation3DRangeScan.cpp:447: [virtual void mrpt::obs::CObservation3DRangeScan::serializeFrom(mrpt::serialization::CArchive&, uint8_t)] Assert condition failed: rows > 0 && cols > 0
    [0] ../libs/serialization/src/CArchive.cpp:462: [void mrpt::serialization::CArchive::internal_ReadObject(mrpt::serialization::CSerializable*, const string&, bool, int8_t)] Exception while parsing typed object 'CObservation3DRangeScan' from stream!
    

    and crash once trying to read the next image.

    The first image might be indeed empty, but this used to work with older MRPT versions. It would be very useful to retain backward compatibility with log files.

    bug 
    opened by christian-rauch 6
  • can't compile with mingw64

    can't compile with mingw64

    Hi

    I tried to compile MRPT on windows with mingw64: I have created a build directory next to the CMakeLists.txt file

    cd build
    cmake-gui ..
    configure
    generate
    make
    

    I have directly the following error: Building CXX object libs/core/CMakeFiles/core.dir/src/WorkerThreadsPool.cpp.obj In function 'void mySetThreadName(const string&, std::thread&)': error: 'SetThreadDescription' was not declared in this scope SetThreadDescription(theThread.native_handle(), wName);

    I can't find any reference to that issue anywhere.

    Help would be appreciated. Regards

    opened by Dharmesh946 8
  • Broken wx opengl UIs when using

    Broken wx opengl UIs when using "200% text size" in Ubuntu

    How to reproduce: System -> Settings -> Display -> set 200% (or anything !=100%), open SceneViewer, RawLogViewer, etc.

    The opengl area will be shown only on 1/4 of the actual control area.

    help wanted 
    opened by jlblancoc 0
Releases(2.4.10)
  • 2.4.10(Jul 1, 2022)

    Version 2.4.10: Relased June 24th, 2022

    • Changes in applications:
      • ptg-configurator:
        • New menu action to export selected path to matlab/octave script.
      • RawLogViewer:
        • Visual improvements and display of timestamps in local time too.
    • Changes in libraries:
      • \ref mrpt_poses_grp
        • Adds covariance mapping to SE(3) for GTSAM (Closes #1229)
      • \ref mrpt_ros1bridge_grp
        • Import mrptToROSLoggerCallback() from the now obsolete mrpt_bridge package into mrpt::ros1bridge.
    • Build system
      • Fix ROS version detection; select ROS2 if packages for both versions are found.
    • BUG FIXES:
      • Fix mrpt-comms rare timeout in busy build farms.
      • mrpt::ros1bridge and mrpt::ros2bridge were not correctly exporting the fromROS() function for LaserScan messages.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.10.tar.gz(39.99 MB)
    mrpt-2.4.10.tar.gz.asc(833 bytes)
    mrpt-2.4.10.zip(43.36 MB)
    mrpt-release-2.4.10.exe(104.74 MB)
  • 2.4.9(Jun 7, 2022)

    Version 2.4.9: Released June 7th, 2022

    • Changes in libraries
      • \ref mrpt_math_grp
        • new method mrpt::math::TPlane::signedDistance()
      • \ref mrpt_ros2bridge_grp
        • Fixed missing find_package() in module config.cmake file.
    • BUG FIXES:
      • Fix wrong handling of cmake exported built-in version of Eigen3 (Closes #1235)
      • Fix pymrpt Python3 module location (Closes #1232)
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.9.tar.gz(39.99 MB)
    mrpt-2.4.9.tar.gz.asc(833 bytes)
    mrpt-2.4.9.zip(43.34 MB)
    mrpt-release-2.4.9.exe(104.73 MB)
  • 2.4.8(May 26, 2022)

  • 2.4.7(May 26, 2022)

    Version 2.4.7: Released May 26th, 2022

    • Examples:
      • gui_depth_camera_distortion: Added option to change distortion model.
    • Build system
      • Fixed ROS-level public dependency on suitesparse.
      • Enable tinyxml2 for ROS builds.
    • Changes in libraries:
      • \ref mrpt_maps_grp
        • Method mrpt::maps::CPointsMap::addFrom() removed, it overlapped with mrpt::maps::CPointsMap::insertAnotherMap()
        • New optional parameter in mrpt::maps::CPointsMap::insertAnotherMap()
      • \ref mrpt_obs_grp
        • New option mrpt::obs::T3DPointsProjectionParams::onlyPointsWithIntensityColor
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.7.tar.gz(39.99 MB)
    mrpt-2.4.7.tar.gz.asc(833 bytes)
    mrpt-2.4.7.zip(43.35 MB)
  • 2.4.5(May 22, 2022)

  • 2.4.4(May 5, 2022)

    Version 2.4.4: Released March 5th, 2022

    • New web-based applications
      • All MRPT modules (including \ref mrpt_opengl_grp and mrpt-nanogui) are now compatible with Emscripten so they can run as Javascript + wasm on any modern browser.
    • Changes in applications:
      • RawlogViewer:
        • Browse dialog: Smarter coloring of pointclouds; check all & none buttons for sensor layers.
      • rawlog-edit:
        • Operation --camera-params now also works for mrpt::obs::CObservation3DRangeScan observations.
        • New operation --describe.
    • Changes in libraries:
      • \ref mrpt_poses_grp
        • mrpt::poses::CPose3DQuat: Remove use of obsolete base class std::iterator.
    • 3rdparty libraries:
      • Updated libfyaml to v0.7.12.
    • Build system:
      • Allow using libfyaml-dev system package if found.
      • ROS package.xml: update dependencies so all sensors and mrpt-ros1bridge are enabled.
      • Fix detection of ROS1 native *_msgs packages as build dependencies.
    • BUG FIXES:
      • ASSERT_NEAR_() did not work correctly when arguments were expressions with operators.
      • Fixed incorrect parsing of strings with whitespaces in mrpt::from_string<>() when converting to std::string
      • mrpt::obs::CObservation3DRangeScan::get_unproj_lut() was ignoring the depth camera distortion model and always assumed plumb_bob.
      • mrpt::ros1bridge converter for IMU observations now correctly handles missing IMU readings (ROS convention of "-1" in covariance).
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.4.tar.gz(39.69 MB)
    mrpt-2.4.4.tar.gz.asc(833 bytes)
    mrpt-2.4.4.zip(43.01 MB)
  • 2.4.3(Feb 23, 2022)

    Version 2.4.3: Released Feb 22nd, 2022

    • Changes in applications:
      • navlog-viewer:
        • The timestamp is now always shown.
    • BUG FIXES:
      • Do not run offscreen rendering unit tests in MIPS arch, since they seem to fail in autobuilders.
      • mrpt::vision::checkerBoardCameraCalibration() did not return the distortion model (so if parameters are printed, it would look like no distortion at all!).
      • mrpt::gui::CDisplayWindowGUI::createManagedSubWindow() created the subwindows helper UI on top of the other user windows. It now remains on the back of other windows.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.3.tar.gz(39.68 MB)
    mrpt-2.4.3.tar.gz.asc(833 bytes)
    mrpt-2.4.3.zip(43.00 MB)
    mrpt-release-2.4.3.exe(104.38 MB)
  • 2.4.2(Feb 3, 2022)

    Version 2.4.2: Released Feb 3rd, 2022

    • Changes in libraries:
      • \ref mrpt_containers_grp
        • mrpt::container::yaml::operator(size_t) added, conditionally to size_t being a different type than uint64_t and such (Fixes build errors on OSX).
      • \ref mrpt_core_grp
        • mrpt::callStackBackTrace() (and exception backtraces) now only use BFD to solve for line numbers in DEBUG builds, to avoid the large delay in processing each exception.
        • New method mrpt::WorkerThreadsPool::size().
      • \ref mrpt_expr_grp
        • ExprTk updated to latest version.
      • \ref mrpt_gui_grp
        • GUI windows can now have custom icons via mrpt::gui::CDisplayWindowGUI::setIcon() or mrpt::gui::CDisplayWindowGUI::setIconFromData()
      • \ref mrpt_img_grp
        • New static method mrpt::img::CImage::LoadFromFile()
      • \ref mrpt_math_grp
        • Vector and matrix classes: add [[nodiscard]] to static "constructor" methods to avoid mistakes.
      • \ref mrpt_opengl_grp
        • mrpt::opengl::CFBORender now does not rely on GLUT to create opengl contexts, but on EGL.
      • \ref mrpt_typemeta_grp
        • Add syntactic sugar function mrpt::typemeta::str2enum<>().
    • BUG FIXES:
      • mrpt::opengl::CFBORender did only render the main viewport, it now processes all of them.
      • Fix FTBFS with ffmpeg 5.0 (Debian Bug #1004585)
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.2.tar.gz(39.68 MB)
    mrpt-2.4.2.tar.gz.asc(833 bytes)
    mrpt-2.4.2.zip(43.00 MB)
    mrpt-release-2.4.2.exe(104.36 MB)
  • 2.4.1(Jan 5, 2022)

    Version 2.4.1: Released Jan 5th, 2022

    • Changes in build system:
    • Changes in applications:
      • rawlog-edit:
        • New flag --externals-filename-format
      • RawlogViewer:
        • Better handling of exceptions failing to load delayed-load images.
    • Changes in libraries:
      • \ref mrpt_core_grp
        • Remove unused header <mrpt/3rdparty/llvm/propagate_const.h>.
      • \ref mrpt_graphs_grp
        • mrpt::graphs::CDijkstra now has an optional maximum topological search range.
      • \ref mrpt_math_grp
        • New geometry functions:
          • mrpt::math::intersect(const TPolygon2D& subject, const TPolygon2D& clipping)
          • mrpt::math::signedArea(const mrpt::math::TPolygon2D& p)
      • \ref mrpt_obs_grp
        • New function mrpt::obs::format_externals_filename()
      • Embedded copy of nanoflann: upgraded to v1.4.0.
    • BUG FIXES:
      • Fix bug in mrpt::math::getAngle(const TPlane&, const TPlane&).
      • Fix exception if mrpt::opengl::CFBORender is used with setProjectiveFromPinhole() camera models.
      • Fix CMake Warning at cmakemodules/FindFilesystem.cmake and failure to detect the std::filesystem feature in some g++ versions.
      • Fix numerical innacuracies with planar bounding boxes, fixed via new epsilon parameter in mrpt::math::TBoundingBox::intersection()
      • Fix sluggish rendering in opengl+wxWidgets controls (e.g. within RawLogViewer, etc.).
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.1.exe(104.31 MB)
    mrpt-2.4.1.tar.gz(39.60 MB)
    mrpt-2.4.1.tar.gz.asc(833 bytes)
    mrpt-2.4.1.zip(42.91 MB)
    mrpt-release-2.4.1.exe(104.32 MB)
  • 2.4.0(Dec 12, 2021)

    Version 2.4.0: Released Dec 12th, 2021

    • Changes in build system:
      • Most important CMake variables now are prefixed with MRPT_ to avoid name collisions if using MRPT as a git submodule in a larger project.
      • GNUInstallDirs directories are now always honored when installing.
    • Changes in applications:
      • ptg-configurator:
        • Show selected PTG path output motion command.
      • navlog-viewer:
        • New checkbox to enforce 2D orthogonal view, which is now the default view.
      • rawlog-edit
        • The --info command now also shows the first and last timestamp in a rawlog.
      • RawLogViewer:
        • Show mrpt::obs::CObservationPointCloud 3D point clouds in main window and scan animation dialog.
        • Displays timestamp as the user tracks the timeline scroll bar.
      • rosbag2rawlog:
        • PointCloud2 messages are now only converted to mrpt::obs::CObservationRotatingScan is this latter class is specified in the YAML file.
    • Changes in libraries:
      • \ref mrpt_apps_grp
        • Application rawlog-edit is now available as the C++ class mrpt::apps::RawlogEditApp
      • \ref mrpt_containers_grp
        • New methods mrpt::containers::bimap::erase_by_key(),mrpt::containers::bimap::erase_by_value()
        • mrpt::containers::vector_with_small_size_optimization has new methods at() and push_back() for a smoother transition from STL containers.
        • mrpt::containers::yaml and libfyaml updated to latest version (more memory efficient parser).
      • \ref mrpt_core_grp
        • New base virtual interface class mrpt::Stringifyable unifying the asString() method already offered by many MRPT classes.
      • \ref mrpt_img_grp
        • [API change] mrpt::img::TCamera methods changed to allow defining fish-eye camera models too.
      • \ref mrpt_io_grp
        • GZIP compressed streams now also support open and append. See new mrpt::io::CFileGZOutputStream::open() signature.
        • New enum mrpt::io::OpenMode for clearer-to-read code.
        • Moved lazy-load operations to mrpt::io::setLazyLoadPathBase() and companion functions, since the older names mentioned images but this setting actually affects other sensors too.
      • \ref mrpt_math_grp
        • New function mrpt::math::xcorr()
        • New header <mrpt/math/gtsam_wrappers.h>, see \ref mrpt_gtsam_wrappers
        • New method mrpt::math::TBoundingBox::containsPoint()
      • \ref mrpt_maps_grp
        • Optimization: mrpt::maps::CPointsMap::insertAnotherMap() avoids matrix multiplication if SE(3) identity is passed as insertion pose.
        • [API change] mrpt::maps::CSimpleMap docs improved, API modernized and made const-correct including returned shared_ptr instances as ConstPtr where applicable.
      • \ref mrpt_nav_grp
        • mrpt::nav::CParameterizedTrajectoryGenerator::initTPObstacleSingle() now always initializes to the maximum free distance, instead of saturating free space when heading to a target waypoint.
        • [API change] mrpt::nav::CParameterizedTrajectoryGenerator::getPathPose() had two overloaded signatures, which is not recommended being one of them a virtual method. Only the return-by-value is left.
      • \ref mrpt_obs_grp
        • Fix const-correctness of mrpt::obs::CObservation::unload() for consistency with load().
        • [API change] Replaced all API signatures taking an optional mrpt::poses::CPose3D as pointers (with default=nullptr) with a modern std::optional<>.
      • \ref mrpt_opengl_grp
        • New method mrpt::opengl::COpenGLViewport::setClonedCameraFrom()
        • mrpt::opengl::CFBORender changes:
          • More consistent naming of API methods: mrpt::opengl::CFBORender::render_RGB().
          • New method to render into a depth image mrpt::opengl::CFBORender::render_RGBD().
        • mrpt::opengl::CCamera::setProjectiveFromPinhole() now allows defining a camera by means of a pinhole model.
        • New class mrpt::opengl::COpenGLFramebuffer, used to refactor mrpt::opengl::CFBORender
        • New methods to control face culling:
          • mrpt::opengl::CRenderizableShaderTriangles::cullFaces()
          • mrpt::opengl::CRenderizableShaderTexturedTriangles::cullFaces()
        • Remove specular light effects in the default shaders, to fix buggy behavior.
        • [API change] New mrpt::opengl::Visualizable interface replaces former getAs3DObject() in all mrpt::maps and mrpt::poses classes with an uniform API, avoiding shared_ptr if possible.
        • mrpt::opengl::CTexturedPlane now more efficiently renders as plain triangles if no texture has been assigned.
        • Custom user OpenGL shaders can now be defined and installed to replace MRPT defaults. Refer to example: \ref opengl_custom_shaders_demo
      • \ref mrpt_poses_grp
        • New function mrpt::poses::sensor_poses_from_yaml()
        • New header <mrpt/poses/gtsam_wrappers.h>, see \ref mrpt_gtsam_wrappers
      • \ref mrpt_random_grp
        • New function mrpt::random::partial_shuffle()
        • New function mrpt::random::portable_uniform_distribution()
      • \ref mrpt_serialization_grp
        • Implemented serialization of mrpt::containers::bimap in the new header #include <mrpt/serialization/bimap_serialization.h>.
        • Enums can now be binary-serialized too via >> / << streaming operators into an mrpt::serialization::CArchive.
        • mrpt::serialization::CArchive and mrpt::io::CStreams now have virtual methods to provide human-friendly self-descriptions, useful to debug which stream causes an error in serialization.
      • \ref mrpt_system_grp
        • Backwards-compatible change: New function mrpt::system::InvalidTimeStamp() used now inside the macro INVALID_TIMESTAMP, so the macro always returns a const reference instead of returning by value.
        • New function mrpt::system::consoleColorAndStyle()
        • mrpt::system::intervalFormat() now generates more human-friendly strings for time periods larger than 1 second (e.g. "1 year, 3 days, 8 hours").
      • \ref mrpt_tfest_grp
        • [API change] mrpt::tfest::TMatchingPair members are now called "local" vs "global" instead of the former, more confusing, "this" vs "other".
      • \ref mrpt_vision_grp
        • SIFT descriptors can now be evaluated for arbitrary keypoint coordinates.
    • BUG FIXES:
      • Fix potential race conditions in:
        • mrpt::rtti class registry
        • The global mrpt::random::getRandomGenerator()
        • mrpt::typemeta::TEnumTypeFiller
      • Image-mode was not serialized in mrpt::opengl::COpenGLViewport
      • nanogui: avoid potential divide by zero.
      • mrpt::comms::CClientTCPSocket crashed if socket handle >=1024 in Linux (Closes #1157)
      • Fix error generating and parsing TUM RGBD dataset rawlog files.
      • Fix regresion in mrpt::opengl::CFBORender::render() throwing an exception if the input image was empty.
      • Fix incorrect handling of negative, fractional viewport sizes in mrpt::opengl::COpenGLViewport
      • Fix: Should not scale velocity commands when in slow down, in CAbstractPTGBasedReactive::generate_vel_cmd() (Closes #1175).
      • mrpt::system::CDirectoryExplorer did not fill in correct absolute paths if a relative path was passed as starting directory to scan.
      • Fix mrpt::obs::CSensoryFrame::operator+=() did not perform what it was supposed to do.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.4.0.exe(103.63 MB)
    mrpt-2.4.0.tar.gz(39.53 MB)
    mrpt-2.4.0.tar.gz.asc(833 bytes)
    mrpt-2.4.0.zip(42.83 MB)
    mrpt-release-2.4.0.exe(103.63 MB)
  • 2.3.2(Jul 15, 2021)

    Version 2.3.2: Released Jul 14, 2021

    • Changes in applications:
      • RawLogViewer:
        • More tree view icons.
        • "Play video" window now also shows timestamps.
      • SceneViewer3D:
        • New command-line flag --imgdir to define the base path for lazy-load images.
      • rawlog-edit:
        • New operation --export-txt exploiting the new export-to-txt API in mrpt::obs::CObservation
      • navlog-viewer:
        • New UI tools to manually pick and export selected PTG selections to a training YAML file.
    • Changes in libraries:
      • \ref mrpt_containers_grp
        • YAML macros MCP_LOAD_OPT(), MCP_LOAD_REQ(), and MCP_SAVE() now also support reading and writing enums directly as YAML, transparently converting numerical values to/from their symbolic names.
      • \ref mrpt_core_grp
        • Added C++14 helper templates mrpt::uint_select_by_bytecount_t and mrpt::int_select_by_bytecount_t
      • \ref mrpt_gui_grp
        • mrpt::gui::CDisplayWindowGUI: improved API to allow multiple callback handlers, and to report exceptions in them.
        • New 3D navigation key binding: SHIFT+scroll wheel, for fast up/down pure vertical motion of the camera point.
      • \ref mrpt_img_grp
        • mrpt::img::CImage::loadFromFile() now avoids memory allocations if there was already an image in memory with the same size.
      • \ref mrpt_obs_grp
        • mrpt::obs::CObservation now has a common API to export datasets to TXT/CSV files, see methods exportTxtSupported(), exportTxtHeader(), exportTxtDataRow(). It has been implemented in all suitable observation classes.
        • mrpt::obs::CObservationImage::unload() defaulted to doing nothing. It now correctly unloads lazy-load images.
      • \ref mrpt_poses_grp
        • New methods mrpt::math::TTwist2D::rotated() and mrpt::math::TTwist3D::rotated()
      • \ref mrpt_system_grp
        • mrpt::system::CTimeLogger:
          • Include custom name in underlying mrpt::system::COutputLogger name.
          • Fix all valgrind/helgrind warning messages.
        • New functions mrpt::system::firstNLines() and mrpt::system::nthOccurrence()
    • BUG FIXES:
      • mrpt::img::CImage::isEmpty() should return false for delay-load images.
      • Fix build error with GCC 8 in mrpt/containers/yaml.h.
      • Fix exception rendering empty point clouds due to invalid bounding box.
      • Fix broken 2D plots rendering in Ubuntu 20.04 (and probably other systems), via an update in mpWindow to properly use wxAutoBufferedPaintDC.
      • mrpt::img::CImage::getPixelDepth() should force loading lazy load images.
      • Fixed wrong rendering of different textures within the same opengl shader program.
      • Fixed potential crashes inside BFD if using BFD and calling mrpt::callStackBackTrace() from several parallel threads.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.3.2.tar.gz(39.33 MB)
    mrpt-2.3.2.tar.gz.asc(833 bytes)
    mrpt-2.3.2.zip(42.32 MB)
    mrpt-release-2.3.2.exe(102.02 MB)
  • 2.3.1(May 26, 2021)

    Version 2.3.1: Released May 26th, 2021

    • General cmake scripts:
      • find_package(mrpt-xxx) is now much faster.
    • Changes in applications:
      • RawLogViewer:
        • Browse scans window now has a check-box list to show/hide individual sensors.
      • SceneViewer3D:
        • Graceful failure when loading a corrupted 3Dscene file.
    • Changes in libraries:
      • \ref mrpt_core_grp
        • Removed mrpt::reverseBytesInPlace(long double) for it not being portable.
      • \ref mrpt_containers_grp
        • New environment variable MRPT_YAML_PARSER_VERBOSE controlling mrpt::containers::yaml
      • \ref mrpt_hwdrivers_grp
        • New argument to pass custom ffmpeg options to mrpt::hwdrivers::CFFMPEG_InputStream::openURL(). New default is to prefer stream over TCP for more reliable IP cameras reading.
        • mrpt::hwdrivers::CHokuyoURG now has a parameter for between-data communications timeout (comms_between_timeout_ms).
      • \ref mrpt_gui_grp
        • mrpt::gui::CDisplayWindowGUI new methods to minimize/restore subwindows.
      • \ref mrpt_math_grp
        • New method mrpt::math::TLine3D::closestPointTo()
        • New methods mrpt::math::TPose3D::translation(), mrpt::math::TPose2D::translation().
      • \ref mrpt_obs_grp
        • New mrpt::obs::CActionCollection::insert() overload for smart pointers.
        • New method mrpt::obs::CObservation2DRangeScan::getScanAngle() and clarify docs on class members.
        • New class mrpt::obs::CObservation3DScene.
        • mrpt::obs::CObservationIMU now uses std::array instead of std::vector (faster due to less dynamic memory).
      • \ref mrpt_opengl_grp
        • Deprecate mrpt::opengl::COpenGLScene::dumpListOfObjects() in favor of new mrpt::opengl::COpenGLScene::asYAML()
        • New method mrpt::opengl::CSimpleLine::setLineCoords() accepting mrpt::math::TPoint3D (older signature deprecated).
      • \ref mrpt_system_grp
        • New return-by-value signature for mrpt::system::CDirectoryExplorer::explore(), older version deprecated.
        • mrpt::system::extractFileDirectory() returns "." instead of an empty string for filenames without any explicit full path.
    • BUG FIXES:
      • Fix wrong formatting of empty string values (not null values) in mrpt::containers::yaml.
      • Fix exception loading old datasets with stereo observations, via a new argument in mrpt::img::CImage::makeSureImageIsLoaded()
      • Fix unhandled deserialization of v2 of mrpt::opengl::CPlanarLaserScan
      • Fix build errors with MinGW.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.3.1.tar.gz(39.04 MB)
    mrpt-2.3.1.tar.gz.asc(833 bytes)
    mrpt-2.3.1.zip(42.03 MB)
    mrpt-release-2.3.1.exe(101.62 MB)
  • Windows-nightly-builds(May 5, 2021)

  • 2.3.0(Apr 25, 2021)

    Version 2.3.0: Released April 25th, 2021

    • General build changes:
      • CMake >=3.8.0 is now required to ensure proper handling of dependencies compile options.
    • Changes in applications:
      • ptg-configurator: target now also comprises a heading angle.
      • RawLogViewer:
        • New tab with CObservation3DRangeScan visualization options.
        • All icons have been updated for a more modern look.
    • Changes in libraries:
      • \ref mrpt_containers_grp
        • add method mrpt::containers::map_as_vector::at()
      • \ref mrpt_graphs_grp
        • mrpt::graphs::CDijkstra:
          • now no longer requires a field nodes in input graphs.
          • add convenient return by value getTreeGraph()
          • Deprecate mrpt::graphs::CDijkstra::Visitor virtual class API in favor of new C++11 std::function-based mrpt::graphs::CDijkstra::visitor_t
      • \ref mrpt_math_grp
        • Removed redundant mrpt::math::pointIntoPolygon2D() -> mrpt::math::TPolygon2D::contains()
        • Removed redundant mrpt::math::SegmentsIntersection() -> mrpt::math::intersect(mrpt::math::TSegment2D,mrpt::math::TSegment2D)
        • Removed redundant mrpt::math::distancePointToPolygon2D() -> TPolygon2D::distance()
        • Moved mrpt::math::minDistBetweenLines() -> mrpt::math::TLine3D::distance()
      • \ref mrpt_opengl_grp
        • mrpt::opengl::CAssimpModel now uses a texture cache to speed up and reduce RAM usage if loading the same textures in different objects.
      • \ref mrpt_system_grp
        • New function mrpt::system::progress()
    • BUG FIXES:
      • ptg-configurator: Fix failure to list existing PTGs, due to RTTI unregistered name "CParameterizedTrajectoryGenerator".
      • mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord() returned wrong pixel coordinates when in orthogonal projection mode.
      • mrpt::opengl::CArrow: Fix wrong normal calculation (wrong rendering reflections).
      • mrpt::opengl::CPointCloud::markAllPointsAsNew() and mrpt::opengl::CPointCloudColoured::markAllPointsAsNew() did not refresh OpenGL buffers.
      • mrpt::nav::CPTG_DiffDrive_CollisionGridBased::getPathTwist() returned much larger velocities than the actual values.
      • Fix broken Debian dependencies for libmrpt-vision-lgpl (Closes Debian bug #986071).
      • mrpt::maps::CPointsMap::load2Dor3D_from_text_stream() for 2D maps left uninitialized values in z. Fixed to load zeros instead.
      • Fixed crash in mrpt::vision::checkerBoardCameraCalibration() causing segfault in the camera-calib app.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.3.0.tar.gz(38.31 MB)
    mrpt-2.3.0.tar.gz.asc(833 bytes)
    mrpt-2.3.0.zip(41.30 MB)
  • 2.2.0(Mar 10, 2021)

    Version 2.2.0: Released March 10th, 2021

    • Changes in libraries:
      • \ref mrpt_vision_grp
        • Remove all obsolete SIFTOptions.implementation values. OpenCV is now the only possibility.
      • \ref mrpt_nav_grp
        • mrpt::nav::TWaypoint now uses std::optional instead of magic numbers in some fields.
        • mrpt::nav::TWaypoint now has std::any fields to hold user-given extra data.
    • BUG FIXES:
      • Fix invalid bounding box returned by octree_getBoundingBox() and mrpt::opengl point cloud classes when empty (Closes #1145).
      • Fix potential infinite recursion in exceptions with stack trace (Closes #1141).
      • Fix potential race conditions accessing waypoint lists in mrpt::nav::CWaypointsNavigator
      • Fix build errors with gcc-11.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.2.0.tar.gz(35.64 MB)
    mrpt-2.2.0.tar.gz.asc(833 bytes)
    mrpt-2.2.0.zip(38.59 MB)
  • 2.1.8(Feb 28, 2021)

    Version 2.1.8: Released Feb 23rd, 2021

    • Changes in applications:
      • RawLogViewer:
        • "Scan animation" window: now also shows the timestamp of observations.
      • camera-calib and kinect-stereo-calib:
        • New option to save camera calibration results as YAML files.
      • navlog-viewer:
        • New option to enable orthogonal view.
    • General build changes:
      • Fix excessive alignment in aarch64 (32->16 bytes).
      • clang-format: enforce and upgraded to use clang-format-10.
      • Fix building against the non-legacy GL library (Linux).
      • nanoflann source code is no longer included as a copy: it will be used as the system library libnanoflann-dev, or as a git submodule if the former is not found.
    • Changes in libraries:
      • \ref mrpt_containers_grp
        • New YAML to/from matrix methods: mrpt::containers::yaml::FromMatrix(), mrpt::containers::yaml::toMatrix()
      • \ref mrpt_core_grp
        • New CMake build flags MRPT_EXCEPTIONS_WITH_CALL_STACK to optionally disable reporting call stacks upon exceptions and MRPT_EXCEPTIONS_CALL_STACK_MAX_DEPTH to set their maximum depth.
      • \ref mrpt_hwdrivers_grp
        • mrpt::hwdrivers::CHokuyoURG now has a parameter for communications timeout (comms_timeout_ms).
      • \ref mrpt_math_grp
        • New class mrpt::math::TBoundingBox
      • \ref mrpt_maps_grp
        • Const correctness fixed in all mrpt::maps::CMetricMap classes.
      • \ref mrpt_opengl_grp
        • mrpt::opengl::CFrustum() new constructor from mrpt::img::TCamera()
      • \ref mrpt_poses_grp
        • mrpt::poses::CPose3D: Add more syntactic sugger static constructors.
      • \ref mrpt_slam_grp
        • mrpt::slam::TMonteCarloLocalizationParams map parameters are now shared pointers instead of plain pointers for safer code.
    • BUG FIXES:
      • Log *_THROTTLE_* macros (e.g. MRPT_LOG_THROTTLE_DEBUG) did not report the message the first time they were called, which seems a safer behavior.
      • Reverted changed behavior: mrpt::config::CConfigFile did not throw if a non-existing file was passed to its constructor, but it throws in MRPT 2.1.{0-7}.
      • Fix build against opencv 2.4.x (version in Ubuntu Xenial 16.04).
      • Fixed: CHokuyoURG::initialize() won't report sensor status as ssError if it fails to communicate with the sensor, incorrectly leaving it as ssInitializing instead.
      • Fixed: mrpt::opengl::CTexturedPlane::setPlaneCorners() did not check for incorrect null width or height.
      • Fixed: mrpt::opengl textured objects leaking memory (Closes #1136).
      • Fix bug in parsing CARMEN logs: mrpt::obs::carmen_log_parse_line() returned all scan ranges marked as "invalid".
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.8.tar.gz(35.65 MB)
    mrpt-2.1.8.tar.gz.asc(833 bytes)
    mrpt-2.1.8.zip(38.60 MB)
  • 2.1.7(Jan 2, 2021)

  • 2.1.6(Dec 14, 2020)

  • 2.1.5(Dec 7, 2020)

    Version 2.1.5: Released Dec 6th, 2020

    • Changes in libraries:
      • \ref mrpt_containers_grp
        • Both mrpt::containers::CDynamicGrid and mrpt::containers::CDynamicGrid3D are now compatible with range-based for loops, and also have a data() method.
      • \ref mrpt_core_grp
        • Added mrpt::LockHelper::unlock()
        • Added mrpt::Clock::nowDouble()
        • New method mrpt::WorkerThreadsPool::name()
        • Function mrpt::system::callStackBackTrace() moved to mrpt::callStackBackTrace()
        • mrpt::callStackBackTrace() now uses BFD to find out line numbers if debug info (at least -g1) is available.
        • Stacked exceptions changes:
          • Line numbers will be now shown if built with debug info (>= -g1).
          • Exceptions in STL or any other 3rd-party library will be also reported with exact call point line number, as long as MRPT_START/MRPT_END is used in the user function.
          • No further need to call mrpt::exception_to_str(), just calling what() will return a detailed stack backtrace.
          • New function mrpt::winerror2str()
      • \ref mrpt_gui_grp
        • New method mrpt::gui::CGlCanvasBase::CamaraParams::FromCamera()
      • \ref mrpt_math_grp
        • Added missing method for consistent API across pose classes: mrpt::math::TPose3D::operator+()
      • \ref mrpt_system_grp
        • mrpt::system::COutputLogger::writeLogToFile() will now save all messages despite the runtime log verbosity level.
    • BUG FIXES:
      • Fix error rendering an opengl scene with mrpt::opengl::CCamera objects in it.
      • rawlog-edit silently ignored when more than one operation was requested.
      • Fix FTBFS against libjsoncpp 1.9.4 (Closes #1118)
      • Fix AppStream errors and warnings in Debian Tracker.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.5.tar.gz(35.65 MB)
    mrpt-2.1.5.tar.gz.asc(833 bytes)
    mrpt-2.1.5.zip(38.60 MB)
  • 2.1.4(Nov 9, 2020)

    Version 2.1.4: Released Nov 8th, 2020

    • Changes in libraries:
      • \ref mrpt_core_grp
        • mrpt::format() is no longer a template but a function, to use GCC automated printf-format warnings.
      • \ref mrpt_containers_grp
        • mrpt::containers::yaml avoids throwing internal exceptions as part of regular valid conversions, and better support and report of out-of-range integers.
      • \ref mrpt_math_grp
        • mrpt::math::linspace() added overload returning by value.
      • \ref mrpt_random_grp
        • mrpt::random::CRandomGenerator::permuteVector() added overload returning by value.
      • \ref mrpt_tfest_grp
        • mrpt::tfest::TMatchingPairListTempl::saveAsMATLABScript() now draws 3D correspondences too.
        • RANSAC method mrpt::tfest::se3_l2_ransac() now uses more correct SO(3) metric for angular distance threshold instead of independent yaw/pitch/roll angles.
      • BUG FIXES:
        • Fix wrong Debian dependencies of libmrpt-dev
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.4.tar.gz(35.66 MB)
    mrpt-2.1.4.tar.gz.asc(833 bytes)
    mrpt-2.1.4.zip(38.59 MB)
  • 2.1.3(Oct 21, 2020)

    Version 2.1.3: Released Oct 21st, 2020

    • Changes in libraries:
      • \ref mrpt_config_grp
        • Refactor parsing functionality as new exposed method mrpt::config::config_parser()
      • \ref mrpt_gui_grp
        • mrpt::gui::CDisplayWindowGUI subwindows control UI automatically keep tracks of focused subwindows.
    • Build system:
      • Support for ccache, enabled by default if found.
      • Fix build with system libsimpleini-dev.
    • BUG FIXES:
      • Fix mrpt::opengl::CFBORender requiring images with origin at the bottom-left corner.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.3.tar.gz(35.64 MB)
    mrpt-2.1.3.tar.gz.asc(833 bytes)
    mrpt-2.1.3.zip(38.57 MB)
  • 2.1.2(Oct 19, 2020)

  • 2.1.1(Oct 19, 2020)

    Version 2.1.1: Released Oct 19th, 2020

    • Changes in applications:
      • SceneViewer3D:
        • Command-line argument is now interpreted as ASSIMP model to open if it is not a 3Dscene.
        • New menu: "File -> Import -> Show image" useful to test image-mode viewport rendering.
    • Changes in libraries:
      • \ref mrpt_core_grp
        • mrpt::Clock now has a simulated time mode. See mrpt::Clock::setSimulatedTime()
      • \ref mrpt_gui_grp
        • Useless nanogui_win() converted into mrpt::gui::CDisplayWindowGUI::nanogui_screen()
        • nanogui: New methods: nanogui::Screen::mouseState(), nanogui::Screen::mouseModifiers()
        • Managed subwindows with minimize/restore capability. See mrpt::gui::CDisplayWindowGUI::createManagedSubWindow()
      • \ref mrpt_img_grp
        • New method mrpt::img::CImage::channelCount()
      • \ref mrpt_opengl_grp
        • New load flags in mrpt::opengl::CAssimpModel::loadScene()
    • BUG FIXES:
      • navlog-viewer: Crash when clicking "play" (Closes #1103).
      • RawLogViewer: Fix wrong indices in tree view. Fix freezed progress bar loading a second rawlog.
      • RawLogViewer: Fix wrong rendering if font is missing in the system (Ubuntu 20.04)
      • rawlog-edit: Fix --cut operation leaving empty sensory frames/action collections.
      • mrpt::opengl::CCylinder::setHasBases() was ignored since last OpenGL3 refactor.
      • Fix building against OpenCV 4.4
      • Correct texture loading in mrpt::opengl::CAssimpModel.
      • Fix wrong aspect ratio of image-mode opengl viewports (Closes #1101).
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.1.tar.gz(35.69 MB)
    mrpt-2.1.1.tar.gz.asc(833 bytes)
    mrpt-2.1.1.zip(38.63 MB)
  • 2.1.0(Aug 31, 2020)

    Version 2.1.0: Released Aug 31st, 2020

    • Incompatible API changes:
      • mrpt::system::TParameters has been removed, superseded by mrpt::containers::yaml.
      • Remove mrpt::hwdrivers::CRovio
      • Removed old mrpt 1.5.x backwards-compatible <mrpt/utils/...> headers (Closes #1083).
    • Changes in libraries:
      • \ref mrpt_containers_grp
        • New class mrpt::containers::yaml for nested, YAML-like data structures.
      • \ref mrpt_core_grp
        • New mrpt::for_<> constexpr for loop helper function.
        • New function mrpt::demangle()
        • New class mrpt::WorkerThreadsPool
        • New macro ASSERT_NEAR_(). Defined new macros with correct English names ASSERT_LT_(), etc. deprecating the former ones.
        • mrpt::get_env() gets specialization for bool.
      • \ref mrpt_math_grp
        • New static methods with semantic-rich names: mrpt::math::TPlane::From3Points(), mrpt::math::TPlane::FromPointAndLine(), ...
        • New asString() methods in mrpt::math::TPlane, mrpt::math::TLine2D, mrpt::math::TLine3D
      • \ref mrpt_tfest_grp
        • New templatized mrpt::tfest::TMatchingPairTempl<> and mrpt::tfest::TMatchingPairListTempl<>
        • New mrpt::tfest::se3_l2() for double precision.
    • Build:
      • yamlcpp is no longer a build dependency.
      • Less RAM and time required to build debug builds or to load in the debugger.
    • BUG FIXES:
      • Avoid crash in camera-calib app when clicking "Close" while capturing a live video.
      • Fix potential Eigen crash in matrixes inverse() and inverse_LLt() if building mrpt and user code with different optimization flags.
      • Wrong parsing of env variables in mrpt::get_env() when called more than once.
      • mrpt::system::CTimeLogger: Fix wrong formatting (parent entry prefix collapse) in summary stats table.
      • mrpt::opengl::CEllipsoid2D was not RTTI registered.
      • Fix wrong copy of internal parameters while copying mrpt::maps::CMultiMetricMap objects.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.1.0.tar.gz(35.66 MB)
    mrpt-2.1.0.tar.gz.asc(833 bytes)
    mrpt-2.1.0.zip(38.58 MB)
  • 2.0.4(Jun 20, 2020)

    Version 2.0.4: Released Jun 20, 2020

    • Changes in applications:
      • rawlog-edit, rawlog-grabber: Now allows loading external "plugin" modules (.so) with user-defined types.
      • RawLogViewer, navlog-viewer, ptg-configurator allows more than one "plugin" modules to be loaded.
    • Changes in libraries:
      • \ref mrpt_math_grp
        • New semantically-rich named static methods:
          • mrpt::math::TLine3D::FromPointAndDirector()
          • mrpt::math::TLine3D::FromTwoPoints()
          • mrpt::math::TLine2D::FromCoefficientsABC()
          • mrpt::math::TLine2D::FromTwoPoints()
      • \ref mrpt_obs_grp
        • CObservation3DRangeScan::points3D_convertToExternalStorage() stores point clouds with points as rows (vs as columns as it did before).
      • \ref mrpt_opengl_grp
        • Emit warnings to std::cerr whenever opengl memory is leaked due to OpenGL buffers being created and destroyed in different threads.
        • Overlaid text messages are now also (de)serialized in mrpt::opengl::COpenGLViewport, and hence in 3D scenes in general.
        • All opengl shader base classes now expose their internal buffers as const ref. See children of mrpt::opengl::CRenderizable
      • \ref mrpt_system_grp
        • New class: mrpt::system::CControlledRateTimer (+ associated example)
        • New functions: mrpt::system::loadPluginModule(), mrpt::system::loadPluginModules()
        • mrpt::system::CRateTimer: enforce use of high-resolution monothonic clock.
        • mrpt::system::CTicTac: enforce use of nanosecond monothonic clock.
        • Misplaced functions moved to their proper namespace: mrpt::io::vectorToTextFile()
        • New functions: mrpt::system::thread_name() to get and set thread names for debuggers.
        • mrpt::system::setConsoleColor(): Do not change color if stdout/stderr are not real terminals.
      • \ref mrpt_nav_grp
        • mrpt::nav::PlannerSimple2D does not throw an exception if goal/source is out of map bounds.
    • BUG FIXES:
      • mrpt::obs::CObservation3DRangeScan would try to (incorrectly) "autofix" camera resolution if loading an externally-stored observation.
      • mrpt::maps::CPointsMap::determineMatching2D(): avoid potential multi-thread problems with a vector::swap()
      • Fix build against opencv <3.4.4
      • Fix potential pointer to local returned in CParticleFilterData
      • Fix: mrpt::maps::CPointsMapXYZI::setFromPCLPointCloudXYZI() was using a non-existing method.
      • Fix: mrpt::nav::PlannerSimple2D did not honored maximum path length correctly.
      • Fix race condition in CGenericCamera_AVI unit test.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.0.4.exe(95.55 MB)
    mrpt-2.0.4.tar.gz(30.78 MB)
    mrpt-2.0.4.tar.gz.asc(833 bytes)
    mrpt-2.0.4.zip(33.34 MB)
  • 2.0.3(May 13, 2020)

    Version 2.0.3: Released May 13, 2020

    • Changes in applications:
      • navlog-viewer: Can now navigate with keyboard arrows too.
      • RawLogViewer: better 3D pointcloud coloring in observation view and in "scan animation" view.
    • Changes in libraries:
      • \ref mrpt_maps_grp
        • Point cloud classes mrpt::maps::CPointsMap: New methods:
          • load2D_from_text_stream()
          • load3D_from_text_stream()
          • save2D_to_text_stream()
          • save3D_to_text_stream()
      • \ref mrpt_poses_grp
        • More accurate analytical Jacobians for CPose3DQuatPDFGaussian::inverse() (Closes #1053)
      • BUG FIXES:
        • Incorrect number of points loaded when trying to load point clouds from incorrectly-formatted text files.
        • Fix build error in riscv64 (gcc doesn't know mtune=native for that arch)
        • Fix spurious unit test failures in mrpt::apps::RawlogGrabberApp due to system load.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.0.3.tar.gz(30.75 MB)
    mrpt-2.0.3.tar.gz.asc(833 bytes)
    mrpt-2.0.3.zip(33.43 MB)
    mrpt-build-develop.exe(95.60 MB)
  • 2.0.2(May 4, 2020)

    (Changes since 2.0.1)

    Version 2.0.2: Released May 4th, 2020

    • Changes in applications:
      • navlog-viewer: Ported to the new nanogui UI system (fixes random OpenGL context errors in former version).
    • Changes in libraries:
      • mrpt_containers_grp
        • mrpt::containers::vector_with_small_size_optimization: Get rid of potential uninitialized usage GCC warnings.
      • mrtp_hwdrivers_grp
        • Remove support for obsolete XSens MTi 3rd generation devices. Removed class mrpt::hwdrivers::CIMUXSens. 4th+ generation still supported.
      • mrpt_gui_grp
        • Fix mouse-motion rotation glitches if clicking inside a nanogui control.
        • Fix cmake errors building user programs in Windows (missing glfw dependency).
      • mrpt_math_grp
        • mrpt::math::RANSAC_Template made more generic to support custom dataset and model types.
      • mrpt_opengl_grp
        • Fix displaying of uninitialized textured in mrpt::opengl::CTexturedPlane. It now uses the default solid color of the object.
      • mrpt_ros1bridge_grp
        • Narrower build and run time dependencies: rosbag -> rosbag_storage
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.0.2.tar.gz(30.76 MB)
    mrpt-2.0.2.tar.gz.asc(833 bytes)
    mrpt-2.0.2.zip(33.31 MB)
  • 2.0.1(Apr 3, 2020)

  • 2.0.0(Mar 31, 2020)

    Major stable release, deprecating v1.5.x branch. See also: browsable doxygen-generated changelog

    Windows precompiled binaries: https://bintray.com/mrpt/mrpt-win-binaries/MRPT-nightly-builds/win64-develop

    (Changes since 1.5.8)

    Version 2.0.0: Released March 29th, 2020

    • Most important changes:

      • MRPT now requires C++17 to build and use. See this page for a guide to port existing code to MRPT 2.0: \ref porting_mrpt2
      • 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: FooPtr -> Foo::Ptr
      • Add support for serialization with std::variant
      • PbMap has been factored out into its own repository
      • XML-based database C++ classes have been removed from MRPT.
    • Changes in applications:

      • RawLogViewer:
        • The ICP module now supports Velodyne 3D scans.
      • rawlog-edit:
        • New operation: --de-externalize
      • pf-localization:
        • Odometry is now used also for observation-only rawlogs.
    • Changes in libraries:

      • All otherlibs subdirectories have been renamed to 3rdparty since it is a widespread name used in most projects.
      • \ref mrpt_base_grp => Refactored into several smaller libraries, one per namespace.
        • Removed class std::vectorstd::string. Replace by STL containers of std::string and functions mrpt::system::stringListAsString() in \ref string_manage.
      • \ref mrpt_core_grp [NEW IN MRPT 2.0.0]
        • Memory alignment of aligned_allocator_cpp11<> is set to 16,32 or 64 depending on whether AVX optimizations are enabled, to be compatible with Eigen.
        • mrpt::cpu::supports(): a new cross-OS CPU feature detection function.
        • mrpt::Clock allows users to select between Realtime or Monotonic sources.
        • Removed custom macro MRPT_UNUSED_PARAM (replaced by c++17 attribute).
        • Add syntactic suggar mrpt::lockHelper()
      • \ref mrpt_math_grp [NEW IN MRPT 2.0.0]
        • Removed functions (replaced by C++11/14 standard library):
          • mrpt::math::erf, mrpt::math::erfc, std::isfinite, mrpt::math::std::isnan
          • mrpt::math::make_vector<> => std::vector<>{...} braced initializator
        • Removed the include file: <mrpt/math/jacobians.h>. Replace by <mrpt/math/num_jacobian.h> or individual methods in \ref mrpt_poses_grp classes.
      • \ref mrpt_config_grp [NEW IN MRPT 2.0.0]
        • mrpt::config::CConfigFileBase::write() now supports enum types.
      • \ref mrpt_gui_grp
        • New class mrpt::gui::CDisplayWindowGUI exposing powerful GUI possibilities via the nanogui project.
      • \ref mrpt_img_grp [NEW IN MRPT 2.0.0]
        • mrpt::img::TCamera distortion parameters now also supports the extra K4,K5,K6 distortion parameters.
      • \ref mrpt_serialization_grp [NEW IN MRPT 2.0.0]
        • New method mrpt::serialization::CArchive::ReadPOD() and macro MRPT_READ_POD() for reading unaligned POD variables.-
        • Add support for $env{} syntax to evaluate environment variables.
      • \ref mrpt_slam_grp
        • rbpf-slam: Add support for simplemap continuation.
        • CICP: parameter onlyClosestCorrespondences deleted (always true now).
        • mrpt::slam::CICP API: Simplified and modernized to use only one output parameter, using std::optional.
      • \ref mrpt_system_grp
        • functions to get timestamp as local time were removed, since they don't make sense. All timestamps in MRPT are UTC, and they can be formated as dates in either UTC or local time frames.
        • Added: mrpt::system::WorkerThreadsPool
      • \ref mrpt_rtti_grp [NEW IN MRPT 2.0.0]
        • All classes are now registered (and de/serialized) with their full name including namespaces. A backwards-compatible flag has been added to mrpt::rtti::findRegisteredClass().
        • CLASS_INIT() macro for automatic registration of classes has been removed, since it is not well-defined in which order global objects will be initialized. Therefore, manual registration (as already done in registerAllClasses.cpp files) is left as the unique registration system. This fixes warning messages "[mrpt::rtti::registerClass] Warning: Invoked with a nullptr".
      • \ref mrpt_nav_grp
        • Removed deprecated mrpt::nav::THolonomicMethod.
        • mrpt::nav::CAbstractNavigator: callbacks in mrpt::nav::CRobot2NavInterface are now invoked after navigationStep() to avoid problems if user code invokes the navigator API to change its state.
        • Added methods to load/save mrpt::nav::TWaypointSequence to configuration files.
        • Waypoints now have a field speed_ratio which is directly forwarded to the low-level reactive navigator.
      • \ref mrpt_comms_grp [NEW IN MRPT 2.0.0]
        • This new module has been created to hold all serial devices & networking classes, with minimal dependencies.
      • \ref mrpt_maps_grp
        • mrpt::maps::CMultiMetricMap has been greatly simplified and now it is actually defined in the mrpt-maps library.
        • New map type: mrpt::maps::CPointsMapXYZI for pointclouds with an intensity channel.
        • New observation class: mrpt::obs::CObservationPointCloud
        • Added optional "channel" attribute to CReflectivityGridMap2D and CObservationReflectivity to support different colors of light.
      • \ref mrpt_hwdrivers_grp
        • COpenNI2Generic: is safer in multithreading apps.
        • CHokuyoURG:
          • Rewrite driver to be safer and reduce mem allocs.
          • New parameter scan_interval to decimate scans.
        • VelodyneCalibration: Can now load YAML files, in addition to XML.
        • New sensor state enum value: mrpt::hwdrivers::CGenericSensor::ssUninitialized
        • NMEA GPS parser: now also recognizes all existing talker IDs (GP, GN, GA, etc.)
      • \ref mrpt_opengl_grp
        • Update Assimp lib version 4.0.1 -> 4.1.0 (when built as ExternalProject)
        • Rendering engine rewritten to work using OpenGL Core (GLSL 3.3) instead of Legacy fixed functions.
      • \ref mrpt_obs_grp
        • mrpt::obs::CObservation2DRangeScan: Deprecated access to scan data via proxy objects obs->scan[i], obs->validRange[i], obs->intensity[i] has been deleted. Please use the alternative getters/setters: obs->getScanRange(i), etc.
        • mrpt::obs::T3DPointsProjectionParams and mrpt::obs::CObservation3DRangeScan::unprojectInto now together support organized PCL point clouds.
        • New method: mrpt::obs::CObservation3DRangeScan::rangeImage_getAsImage()
        • Support for multiple-return sensors in mrpt::obs::CObservation3DRangeScan.
        • New NMEA frame class: Message_NMEA_GSA
      • \ref mrpt_poses_grp [NEW IN MRPT 2.0.0]
        • Reorganized all Lie Algebra methods into \ref mrpt_poses_lie_grp
        • Removed CPose3DRotVec, since its conceptual design is identical to Lie tangent space vectors.
      • \ref mrpt_vision_grp
        • Removed FASTER methods, and the libCVD 3rd party dependency.
    • 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.
      • Fix crash in CGPSInterface when not setting an external mutex.
      • Fix potential crashes in RawLogViewer while editing list of observations.
      • Fix incorrect conversion from quaternion to CPose3D.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.0.0.tar.gz(30.56 MB)
    mrpt-2.0.0.tar.gz.asc(833 bytes)
    mrpt-2.0.0.zip(32.79 MB)
  • 2.0.0-beta(Mar 25, 2020)

Owner
MRPT
Mobile Robot Programming Toolkit
MRPT
Implementations of Multiple View Geometry in Computer Vision and some extended algorithms.

MVGPlus Implementations of Multiple View Geometry in Computer Vision and some extended algorithms. Implementations Template-based RANSAC 2D Line estim

Chenyu 6 Apr 7, 2022
open Multiple View Geometry library. Basis for 3D computer vision and Structure from Motion.

OpenMVG (open Multiple View Geometry) License Documentation Continuous Integration (Linux/MacOs/Windows) Build Code Quality Chat Wiki local/docker bui

openMVG 4.3k Jun 25, 2022
Open Source Computer Vision Library

OpenCV: Open Source Computer Vision Library Resources Homepage: https://opencv.org Courses: https://opencv.org/courses Docs: https://docs.opencv.org/m

OpenCV 62.4k Jun 27, 2022
VNOpenAI 22 Jun 15, 2022
Insight Toolkit (ITK) is an open-source, cross-platform toolkit for N-dimensional scientific image processing, segmentation, and registration

ITK: The Insight Toolkit C++ Python Linux macOS Windows Linux (Code coverage) Links Homepage Download Discussion Software Guide Help Examples Issue tr

Insight Software Consortium 1k Jun 26, 2022
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

CNTK Chat Windows build status Linux build status The Microsoft Cognitive Toolkit (https://cntk.ai) is a unified deep learning toolkit that describes

Microsoft 17.2k Jun 24, 2022
Lite.AI.ToolKit 🚀🚀🌟: A lite C++ toolkit of awesome AI models such as RobustVideoMatting🔥, YOLOX🔥, YOLOP🔥 etc.

Lite.AI.ToolKit ?? ?? ?? : A lite C++ toolkit of awesome AI models which contains 70+ models now. It's a collection of personal interests. Such as RVM, YOLOX, YOLOP, YOLOR, YoloV5, DeepLabV3, ArcFace, etc.

DefTruth 1.7k Jun 27, 2022
Zenotech 7 Nov 13, 2020
Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit

The Microsoft Cognitive Toolkit is a unified deep learning toolkit that describes neural networks as a series of computational steps via a directed graph.

Microsoft 17.2k Jun 26, 2022
The Robotics Library (RL) is a self-contained C++ library for rigid body kinematics and dynamics, motion planning, and control.

Robotics Library The Robotics Library (RL) is a self-contained C++ library for rigid body kinematics and dynamics, motion planning, and control. It co

Robotics Library 580 Jun 25, 2022
A lightweight C++ machine learning library for embedded electronics and robotics.

Fido Fido is an lightweight, highly modular C++ machine learning library for embedded electronics and robotics. Fido is especially suited for robotic

The Fido Project 412 Jun 25, 2022
Code and Data for our CVPR 2021 paper "Structured Scene Memory for Vision-Language Navigation"

SSM-VLN Code and Data for our CVPR 2021 paper "Structured Scene Memory for Vision-Language Navigation". Environment Installation Download Room-to-Room

hanqing 32 Jun 24, 2022
Episodic Transformer (E.T.) is a novel attention-based architecture for vision-and-language navigation.

Episodic Transformer (E.T.) is a novel attention-based architecture for vision-and-language navigation. E.T. is based on a multimodal transformer that encodes language inputs and the full episode history of visual observations and actions.

Alex Pashevich 51 Jun 2, 2022
Open source modules to interface Metavision Intelligence Suite with event-based vision hardware equipment

Metavision: installation from source This page describes how to compile and install the OpenEB codebase. For more information, refer to our online doc

PROPHESEE 71 Jun 23, 2022
deep learning vision detector/estimator

libopenvision deep learning visualization C library Prerequest ncnn Install openmp vulkan(optional) Build git submodule update --init --recursuve cd b

Prof Syd Xu 2 Feb 8, 2022
Homework of RoboWalker Vision team of USTC for DJI Robomaster competition.

USTC RoboWalker战队 视觉组2022练习作业 “极限犹可突破,至臻亦不可止。” 作业列表 0. 编程基础教程 Hello World 针对没有学过C++/Python、没有太多相关编程经验的新同学的C++ & Python编程入门教程。 0. Git基础教程 Hello Git 学习世

Zhehao Li 4 Feb 20, 2022
ROS wrapper for real-time incremental event-based vision motion estimation by dispersion minimisation

event_emin_ros ROS wrapper for real-time incremental event-based vision motion estimation by dispersion minimisation (EventEMin). This code was used t

Imperial College London 2 Jan 10, 2022
The code for C programming 2021, Department of Computer Science, National Taiwan University.

C2021 .c for sousce code, .in for input file, and .out for correct output. The numbers are the problem indices in the judge system. "make number" to m

Pangfeng Liu 6 Jan 10, 2022
Deep Learning in C Programming Language. Provides an easy way to create and train ANNs.

cDNN is a Deep Learning Library written in C Programming Language. cDNN provides functions that can be used to create Artificial Neural Networks (ANN)

Vishal R 11 Apr 18, 2022