Skip to content
Jose Luis Blanco-Claraco edited this page Mar 15, 2019 · 5 revisions

1. Design rationale

We provide Robot Operative System (ROS) wrapper packages for certain MRPT library features.

At present, the targeted ROS distributions and their C++ language version per REP 3 are:

  • Kinetic (C++11)
  • Melodic (C++14)

The goal is publishing and maintaining these (meta)packages:

  • mrpt_bridge: C++ library to convert between ROS msgs and MRPT classes.
  • mrpt_msgs: MRPT-specific ROS message types.
  • mrpt_navigation: Particle-filter based localization, reactive navigation, loading maps in MRPT format, etc.
  • mrpt_slam: SLAM algorithms.
  • mrpt_sensors (Work in progress!): Connect to sensors, publish observations as standard ROS topics (and optionally,
  • pose_cov_ops: A ROS C++ library to operate with SE(3) transformations with uncertainty (Gaussian distributions).
  • mvsim: A lightweight vehicle simulator, used in some reactivenav demos.

All MRPT ROS packages must support building against MRPT>=1.5.4 (branch mrpt-1.5) and MRPT>=1.9.9 (branch master). Unfortunately, officially released ROS packages (e.g. via apt) cannot be shipped with the latest MRPT version (>=1.9.9) due to the restriction to remain within C++14 in ROS Melodic (mrpt master requires C++17), so all current releases ship with mrpt-1.5.

Since not all Ubuntu versions supported by our targeted ROS distributions include in their repositories a version of MRPT >= 1.5.4, we provide the following ROS packages to easily install a more modern MRPT version in a ROS-friendly way:

  • mrpt1: Ships the latest version of mrpt-1.5.

It can be installed with sudo apt install ros-$ROS_DISTRO-mrpt1.

After installation, all MRPT ROS packages that list mrpt1 as a ROS dependency (in contrast to a system dependency) will be able to FIND_PACKAGE(MRPT...) since catkin will append the mrpt1 ROS package directory to CMake PATH.

2. Installing from official ROS distributions

Install the desired packages as usual with apt. See the list of existing packages above.

3. How to build from sources

Since mrpt1/mrpt2 are non-catkin packages, they must be built within an isolated catkin workspace. Skip step 3.1 below and go straight to 3.2 (after doing sudo apt install libmrpt-dev) if you do not intend to modify mrpt sources.

3.1. Isolated catkin env for mrpt1

mkdir -p ~/catkin_ws_isolated/src
cd ~/catkin_ws_isolated/src
catkin_init_workspace  # create CMakeLists.txt
# Clone MRPT-1.5 in dir mrpt1
git clone https://github.com/MRPT/mrpt.git mrpt1 -b mrpt-1.5
# Or mrpt-2:
#git clone https://github.com/MRPT/mrpt.git mrpt2 -b master
cd ~/catkin_ws_isolated
catkin_make_isolated

3.2. Regular ROS packages

Put all MRPT (and your own) ROS packages under a usual catkin environment (e.g. ~/catkin_ws/), for example:

cd ~/catkin_ws/src
git clone https://github.com/mrpt-ros-pkg/mrpt_bridge
git clone https://github.com/mrpt-ros-pkg/mrpt_msgs
git clone https://github.com/mrpt-ros-pkg/mrpt_navigation
git clone https://github.com/mrpt-ros-pkg/mrpt_slam
git clone https://github.com/mrpt-ros-pkg/mrpt_sensors
git clone https://github.com/mrpt-ros-pkg/pose_cov_ops
git clone https://github.com/ual-arm-ros-pkg/mvsim

If you built mrpt1/mrpt2 from sources, remember to source the isolated setup.bash for all packages to find the isolated build:

source catkin_ws_iso/devel_isolated/setup.bash

You can add this line to your .bashrc after the call to the general ROS setup.bash.