:zap: The Mobile Robot Programming Toolkit (MRPT)

Overview

The MRPT project

gcc/clang: MSVC: Last stable release:

GH downloads: SF downloads (datasets):

Last Win64 builds:

Workspace: 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:

Last Win64 builds:

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.5.1)
  • 2.5.1(Aug 3, 2022)

    Version 2.5.1: Released August 4th, 2022

    • Changes in applications:
      • RawLogViewer:
        • Bold points when selecting a sensor in the timeline UI.
    • Changes in libraries:
      • Embedded nanoflann version upgraded to v1.4.3
    • BUG FIXES:
      • Fix regression: mrpt::opengl::CAssimpModel may fail to resolve texture relative paths.
      • mrpt::opengl::CMesh was implementing texture coordinates flipping (u,v) wrt documented behavior.
      • Fix static_assert() failure in CTicTac when building with latest emscripten clang compiler.
      • Fix regression: yaml parsing boolean values may throw an exception inside std::stoi().
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.5.1.tar.gz(40.02 MB)
    mrpt-2.5.1.tar.gz.asc(833 bytes)
    mrpt-2.5.1.zip(43.36 MB)
    mrpt-release-2.5.1.exe(104.83 MB)
  • 2.5.0(Jul 17, 2022)

    Version 2.5.0: Released July 18th, 2022

    • Changes in applications:
      • RawLogViewer:
        • New time-line UI for quickly navigating and selecting observations.
      • New application:
        • ros-map-yaml2mrpt: CLI tool to import ROS map_server maps into MRPT formats.
    • Changes in libraries:
      • \ref mrpt_containers_grp
        • New functions mrpt::containers::find_closest() and mrpt::containers::find_closest_with_tolerance().
        • mrpt::containers::yaml now also keeps information about line and column positions for each token, see mrpt::containers::yaml::node_t::marks
      • \ref mrpt_core_grp
        • mrpt::Clock::toDouble() now returns 0 for default-constructed (invalid) time_point.
      • \ref mrpt_opengl_grp
        • mrpt::opengl::CMesh supports having (x,y) limits with maxCoord<minCoord for flipped elevation and image meshes.
        • New flag mrpt::opengl::CAssimpModel::LoadFlags::IgnoreMaterialColor for mrpt::opengl::CAssimpModel::loadScene()
        • A new rendering mode for default no-perspective transformations. See mrpt::opengl::CCamera::setNoProjection()
      • \ref mrpt_poses_grp
        • Add correct displacement covariance calculation between two poses with cross-correlation via new method mrpt::poses::CPose3DQuatPDFGaussian::inverseCompositionCrossCorrelation() (Closes #1242)
      • \ref mrpt_system_grp
        • New funtions mrpt::system::toAbsolutePath(), mrpt::system::pathJoin()
        • Most functions in \ref filesystem ported to C++17 std::filesystem
      • \ref mrpt_tfest_grp
        • New method TMatchingPairList::overallSquareError() for SE(3) poses (CPose3D).
    • Deprecations:
      • The following macros, which were already deprecated, have been removed: ASSERT_BELOW_, ASSERT_ABOVE_(), ASSERT_BELOWEQ_(), ASSERT_ABOVEEQ_()
    • Build system:
      • Update fallback embedded version of octomap to v1.9.6
    • BUG FIXES:
      • FIX: OpenGL API errors if several CWxGLCanvasBase instances are updated simultaneously in the same program.
      • mrpt::opengl::COpenGLViewport would throw if an uninitialized image is passed for rendering in "image mode".
      • mrpt::system::formatTimeInterval() reported an incorrect number of milliseconds.
      • Fix detection of Boost python module.
      • Calling mrpt::opengl::CRenderizable::setColor_u8() did not force a regeneration of opengl buffer objects in all cases.
    Source code(tar.gz)
    Source code(zip)
    mrpt-2.5.0.tar.gz(40.01 MB)
    mrpt-2.5.0.tar.gz.asc(833 bytes)
    mrpt-2.5.0.zip(43.37 MB)
    mrpt-release-2.5.0.exe(104.82 MB)
  • 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)

Owner
MRPT
Mobile Robot Programming Toolkit
MRPT
A compiler for the Bon programming language.

bonc A compiler for the Bon programming language. About Note: This project is extremely WIP, like no executables being produced WIP Bon is a work in p

null 5 Mar 14, 2022
Base64 Encoding implementation in C Programming Language

cb64 Base64 Encoding implementation in C Programming Language Spec: https://datatracker.ietf.org/doc/html/rfc4648#page-5 Header only So just copy cb64

Telkom DEV 1 Dec 14, 2021
Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer vision

The MRPT project 1. Introduction Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer v

MRPT 1.5k Aug 4, 2022
Dummy-Robot my super mini robot arm robot items

Dummy-Robot 我的超迷你机械臂机器人项目。 资料待整理 已添加3D模型设计源文件。 已添加夹爪硬件设计文件和LED灯环PCB 已添加无线空间定位控制器PCB文件 已添加无线示教器Peak软硬件工程(作为submodule) 已添加REF的硬件设计文件 已添加DummyStudio上位机 已

稚晖 7.9k Jul 29, 2022
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.3k Jul 31, 2022
:zap: KCP - A Fast and Reliable ARQ Protocol

KCP - A Fast and Reliable ARQ Protocol README in English 简介 KCP是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP

Linwei 11.5k Aug 5, 2022
Mobile robot simulator

The Stage Simulator This is the Stage README file, containing an introduction, license and citation information. Stage is a 2(.5)D robotics standalone

Richard Vaughan 350 Jul 29, 2022
SMARTmBOT - a new, customizable, scalable, and fully opensource mobile robot platform

The goal of this repository is to introduce a new, customizable, scalable, and fully opensource mobile robot platform, called SMARTmBOT. This repository provides a guide, and all design files and source codes so that you can build your own SMARTmBOT. SMARTmBOT can be useful for studying the basics of robotics, especially mobile robotics. It can also be used to study advanced topics such as swarm robotics.

SMART Lab at Purdue University 33 Jun 27, 2022
Simple ROS mobile robot

Do-it-yourself differential drive ROS robot This project started out when my wife bought me a Raspberry-Pi 4 (w/ 8GB RAM) for my birthday. At the time

Doug Blanding 16 Aug 2, 2022
A ROS package for mobile robot localization with 2D LiDAR

mcl_ros About mcl_ros mcl_ros is a ROS package for mobile robot localization with 2D LiDAR. To implement localization, Monte Carlo localization (MCL)

Naoki Akai 45 May 13, 2022
WIP: ESP32 powered robot dog, quadruped robot. This is just code, hardware in the other repositories

Small Robot dog (quadruped) Hardware ESP32 IMU (not implemented) 12 servos TowerPro mg90d (hope it will work) Two 18650 Software Arduino IDE compatibl

Gleb Devyatkin 62 Jul 31, 2022
A ROS robot supporting voice control, autonomous navigation and robot arm motion.

ROS Service Robot Project Due to the GitLab restrictions, only screenshot is displayed here. Warehouse Overview robot: The development source code is

SilenceJiang 56 Apr 12, 2022
VNOpenAI 23 Jul 31, 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 Aug 6, 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.9k Aug 7, 2022
Zenotech 7 Nov 13, 2020
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 1.1k Aug 8, 2022
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 Aug 9, 2022
PLP Project Programming Language | Programming for projects and computer science and research on computer and programming.

PLPv2b PLP Project Programming Language Programming Language for projects and computer science and research on computer and programming. What is PLP L

PLP Language 5 Jun 23, 2022
The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language.

The Synthesis ToolKit in C++ (STK) By Perry R. Cook and Gary P. Scavone, 1995--2021. This distribution of the Synthesis ToolKit in C++ (STK) contains

null 793 Jul 30, 2022
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework used for rapidly developing high quality desktop and mobile applications, including VS

JUCE 4.4k Aug 3, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20k Aug 5, 2022
A customized LGL Android mod menu, containing ESP only for PUBG Mobile 1.3.0 for Android

PUBG Mobile ESP Mod Menu A customized LGL mod menu, containing ESP only for PUBG Mobile 1.3.0 for Android. Everything are fixed so it works with both

null 42 Mar 19, 2022
A mobile UI for xfce

Tuna A mobile UI for xfce Tuna is a community project that brings a mobile interface to xfce. It is based on Phosh but it is lighter, more customizabl

null 16 Jun 28, 2022
PUBG Mobile Memory Hack

PUBG Mobile Memory Hack Just an example how to use memory hack in C++ with GameGuardian values. This project was created by chinese modders This proje

null 10 Oct 29, 2021
Mobile Studio tool integration with C# scripting for the Unity game engine.

Mobile Studio Package This project is a Unity package for integrating the Mobile Studio tool suite into game development workflows. This version of th

Arm Software 70 Jul 12, 2022
An implementation of the Mobile Adapter GB protocol, to connect to custom game servers.

libmobile Library that implements the Mobile Adapter GB protocol, in a way that should be easy to integrate into a plethora of different emulators/har

REON Team 9 Jul 6, 2022
Tiny Mobile Terminal Device Kit.

Tiny Mobile Terminal Device Kit.

稚晖 1.3k Aug 2, 2022
Now get your alerts & updates about home, wherever you are, with an SMS on your mobile! All with a simple NodeMCU project!

Now get your alerts & updates about home, wherever you are, with an SMS on your mobile! All with a simple NodeMCU project!

Priyanka Peddinti 2 Oct 20, 2021