Category: Applications

List of MRPT apps

mrpt_logo_vertical

Posted in Applications

Application: kinect-3d-slam

1. Description

This is a very simple program written in 2 hours just to illustrate the capabilities of Xbox Kinect to perform Visual SLAM with the MRPT libraries. It is not supposed to be used for even medium-sized maps.

Usage: 
– Point to some static, near object.
– Press ‘r’ to reset the map.
– Start moving the Kinect slowly. Take care that at least 3-5 features exist at all time.

Working principle: The program creates a “key-frame” for each 10cm or 10deg the camera moves, then establish the 6D relative pose of the camera to the set of tracked features at the last “key-frame”.

read more

Posted in Applications

Application: srba-slam (Relative Bundle Adjustment and Relative Graph-SLAM)

See also: main SRBA documentation page

SRBA-SLAM

Section: Mobile Robot Programming Toolkit – MRPT (1)

NAME

srba-slam – A demo program for Relative Bundle Adjustment (RBA) 

SYNOPSIS

srba-slam –help

srba-slam –list-problems

srba-slam {–se2|–se3} {–lm-2d|–lm-3d} –obs [StereoCamera|…] -d DATASET.txt [–sensor-params-cfg-file SENSOR_CONFIG.cfg] [–noise NOISE_SIGMA] [–verbose {0|1|2|3}] [–step-by-step] 

COMPLETE LIST OF PARAMETERS

read more

Posted in Applications

Application: kinect-stereo-calib

1. Description

kinect-stereo-calib is a program for:

  1. Interactive calibration of the intrinsic and extrinsic parameters of Kinect sensors with a checkerboard.
  2. Calibration of arbitrary stereo cameras, from images already grabbed by the user. It supports cameras of dissimilar resolutions, any baseline and any arbitrary rotation between cameras, etc.

read more

Posted in Applications

Application: track-video-features

1. Description

The program track-video-features demonstrates live detection and tracking of features in a video stream.

To invoke it, just type from the console:

$ track-video-features

and a GUI dialog will ask you to pick the video source (among video files, rawlogs, live firewire or USB cameras, a Kinect sensor, etc.). Alternatively, use:

track−video−features <DATASET.rawlog> track-video-features  <video_file.{avi/mpg/mp4/flv}>

to directly run it with a robotic dataset or a video file.

2. Source code

The program is located at <MRPT>/apps/track-video-features/: https://raw.github.com/MRPT/mrpt/master/apps/track-video-features/track-video-feats_main.cpp See this tutorial on the related data structures and classes.

3. Demo videos

1. A short sequence in a typical office scenario: Test with a sample video sequence published by Andrew Davison among his MonoSLAM works.

read more

Posted in Applications

Application: kinect-3d-view

1. Info

See the source code: https://raw.github.com/MRPT/mrpt/master/apps/kinect-3d-view/kinect-3d-view_…

2. Video

Posted in Applications

Application: DifOdometry-Camera

1. Description

This GUI application is designed to perform visual odometry with a handheld RGB-D camera. The method implemented is called “DIFODO” and it is based only on geometric data (range images).
A config file can be used to customize the most important parameters of the method (there is an embedded config file that is loaded by default). These parameters are:

* cam_mode -> Options: 640×480, 320×240, 160×120
* fps -> Choose between 30Hz or 60Hz
* rows and cols ->The resolution of the finest level of the pyramid (coarse-to-fine scheme).
* ctf_levels ->The number of pyramid levels (coarse-to-fine scheme).

read more

Posted in Applications

Application: map-partition

A front-end to the class mrpt::slam::CIncrementalMapPartitioner. The map to be processed, a “.simplemap” file, is passed in the command line, and the program generates the sub-maps and the original and rearranged weight matrices.

1. Spectral graph bisection-based map partitioning (map-partition)

read more

Posted in Applications

Application: DifOdometry-Datasets

1. Description

This GUI application is designed to test the performance of DIFODO (visual odometry method) with the TUM/Freiburg datasets (which have been adapted/included in MRPT as rawlog files here). Only the ground truth and the depth images are used.

A configuration file can be used to customize the most important parameters of the method (there is an embedded config file that is loaded by default but you should at least change the rawlog file path). These parameters are:

* downsample -> This parameters allows to downsample the camera images before building the gaussian pyramid (useful mainly to increase speed).
* rows and cols ->The resolution of the finest level of the pyramid (coarse-to-fine scheme).
* ctf_levels -> The number of pyramid levels (coarse-to-fine scheme).
* filename -> Absolute path of the rawlog file.

read more

Posted in Applications

Application: navlog-viewer

Posted in Applications

Application: icp-slam-live

1. Description

icp-slam-live is a front-end application to the MRPT C++ library class mrpt::slam::CMetricMapBuilderICP, using as data source a LIDAR in real-time. See icp-slam for an equivalent application for offline operation.

2. Demo

To run one of the demos included in MRPT, execute:

 

See the directory icp-slam-live for example config files.

Posted in Applications

Application: observations2map

This program takes a simplemap as input (e.g. from a SLAM app), and generates one or several metric maps from its observations and poses, dumping the map representations to individual files. A typical usage is to rebuild occupancy gridmaps of different resolutions after building a map with icp-slam or rbpf-slam.

Usage:

For example:

About the program arguments:

 <config_file.ini>: A configuration file. Its minimum content must be a section with the description of a CMultiMetricMap: how many points maps, grid maps, etc. it should have and all their parameters. The default section name ([MappingApplication]) is such that configuration files for the applications  icp-slam or rbpf-slam can be used without changes. See examples of those config files in the icp-slam and rbpf-slam sample config file directories. <observations.simplemap>: A file containing the serialization of a mrpt::maps::CSimpleMap

read more

Posted in Applications

Application: velodyne-view

(New in MRPT 1.4.0)
See also: Velodyne support in MRPT

velodyne-view_mrpt_screenshot

NAME

velodyne-view – Demo for grabbing and visualizing data from a Velodyne sensor

SYNOPSIS

velodyne-view [-v] [-n] [-m <VLP16,HDL32,HDL64,>] [-c

<calib.xml>] [–ip-filter <192.168.1.201>] [–out-pcap

<out>] [-i <in_dataset.pcap>] [-o <out.rawlog>] [–] [–version] [-h]

USAGE EXAMPLES

Run with all default parameters and show live VLP16 LIDAR scans

velodyne-view

Parses a PCAP file with a LIDAR dump (default params)

read more

Posted in Applications

Application: pf-localization

=&0=& ROS package mrpt_localizationros

The application pf-localization implements a particle filter for localization (aka Markov Localization) of a mobile robot given odometry, a map of the environment and any number and combination of sensor observations such as a likelihood can be computed given the map. This generic implementation is possible through the generic design of metric maps in the MRPT C++ libraries.

1. Overview

The application pf-localization implements a particle filter for localization (aka Markov Localization) of a mobile robot given odometry, a map of the environment and any number and combination of sensor observations such as a likelihood can be computed given the map. This generic implementation is possible through the generic design of metric maps in the MRPT C++ libraries. One typical situation is 2D laser scans used against an occupancy grid map. Note that the program can handles both action-observation and observations-only datasets (since MRPT 0.9.3), but the action-observation is preferred. The application processes all data from a rawlog: it is not intended for real-time operation on a robot, though the source code requires little modification to do so.

read more

Posted in Applications

Application: gps2rawlog

Write me!

Posted in Applications

Application: carmen2rawlog

NAME

carmen2rawlog – Convert robotic datasets between CARMEN and Rawlog formats

SYNOPSIS

carmen2rawlog [-z <0: none, 1-9: min-max>] -i carmen.log -o

dataset_out.rawlog [-q] [-w] [–] [–version] [-h]

carmen2rawlog –help

DESCRIPTION

carmen2rawlog is a command-line application to convert CARMEN robotic
datasets to the rawlog” standardized file format.

Arguments:

Posted in Applications

Application: rawlog-edit

Note: This is the HTML version of the program’s man-page.

 

NAME

rawlog-edit – Command-line robotic datasets (rawlogs) manipulation tool
 

SYNOPSIS

USAGE:

 

USAGE EXAMPLES

Quick overview of a dataset file:

rawlog-edit –info -i in.rawlog

Cut the entries [1000,2000] into another rawlog file:

rawlog-edit –cut –from-index 1000 –to-index 2000 \

             -i in.rawlog -o out.rawlog

read more

Posted in Applications

Application: image2gridmap

(New in MRPT 1.4.0)

NAME

image2gridmap – Convert any image into an MRPT .gridmap file

SYNOPSIS

image2gridmap [-w] [–py <0.0>] [–px <0.0>] [–cy <0.0>] [–cx <0.0>]

-r <0.1> [-o <map.gridmap.gz>] -i <map_image.png> [–] [–version] [-h]

USAGE EXAMPLES

Minimal call to convert an image into a gridmap, (0,0) being at image center:

image2gridmap -i map.png –res 0.10

Use custom (0,0) location with pixel coords. of (0,0):

image2gridmap -i map.png –res 0.10 –px 120 –py 100

read more

Posted in Applications

Application: carmen2simplemap

NAME

carmen2simplemap – Convert robotic datasets between CARMEN and simplemap formats

SYNOPSIS

carmen2simplemap [-z <0: none, 1-9: min-max>] -i carmen.log -o

map.simplemap [-q] [-w] [–] [–version] [-h]

carmen2simplemap –help

DESCRIPTION

carmen2simplemap is a command-line application to convert a CARMEN robotic
dataset (with corrected poses already in it) into the simplemap” file format,
which can be then used to build metric maps (points, occupancy grids, etc.).

Arguments:

read more

Posted in Applications

Application: rawlog-grabber

1. Description

rawlog-grabber is a command-line application which uses a generic sensor architecture to collect data from a variety of robotic sensors in real-time taking into account the different rates at which each sensor may work. All the data is time stamp-sorted and dumped into a Rawlog file.

This program creates one thread for each sensor declared in the config file and then saves the timestamp-ordered observations to a rawlog file. The valuable utility of this program is to collect datasets from mobile robots for off-line processing.

read more

Posted in Applications

Application: PTG-configurator

This GUI application can be used to learn and get familiarized with Parameterized Trajectory Generators (PTGs),  as introduced in this paper and subsequent works.

A great practical use of this program is preparing the configuration files required by MRPT’s (reactive) navigation engines, including the ROS nodes.

ptg-configurator

Posted in Applications

Application: features-matching

1. Overview

The program features-matching is a small tool which takes a pair of images and detects features with one of a number of detectors, then associate each of them with a user chosen descriptor, and display graphically all the potential matches.
Included detectors and descriptors are all supported by the C++ class mrpt::vision::CFeatureExtractor. The following methods are implemented:

  • Detectors:
    • KLT
    • Harris
    • SIFT
    • SURF
    • FAST
    Descriptors
    • SIFT
    • SURF
    • Intensity spin images
    • Polar coordinates image patch.

    A plot with the “matching” between each feature in one image and all the features in the other image is shown.
    The obvious intention of this program is to be a didactic demonstration, none in it is though for efficiency.

    read more

Posted in Applications

Application: rbpf-slam

It is actually a front-end to the class mrpt::slam::CMetricMapBuilderRBPF. All the parameters to the algorithm are passed through a configuration file in the command line. The filter processes actions and observations from a rawlog file and optionally generates a number of files describing the evolution of the filter and the maps.

1. Rao-Blackwellized Particle Filter SLAM (rbpf-slam)

It is actually a front-end to the class mrpt::slam::CMetricMapBuilderRBPF. All the parameters to the algorithm are passed through a configuration file in the command line. The filter processes actions and observations from a rawlog file and optionally generates a number of files describing the evolution of the filter and the maps.
The mathematical background of RBPF-based SLAM and to see an updated list of the implemented RBPF-SLAM solutions can be found in this tutorial page.

read more

Posted in Applications

Application: graphslam-engine

Description

graphslam-engine constructs and optimizes robot pose-graphs from rawlog datasets. This app performs 2D graph-slam: the robot localizes itself in the environment while, at the same time, builds a map of that environment consisting of robot poses and links (relative poses). The MRPT rawlog files should contain (some of) the following observation types:

  • CObservationOdometry
  • CObservation2DRangeScan
  • CObservation3DRangeScan
    Currently working with 3DRangeScan is currently in an experimental phase.

An example of using the graphslam-engine application is given below:

Command line options

The available command line arguments are listed below. Alternatively run graphslam-engine -h for the full arguments list.

read more

Posted in Applications Tagged with:

Application: graph-slam

NAME

graph-slam – Command-line Graph-SLAM hub application

SYNOPSIS

USAGE EXAMPLES

View Dijkstra-based spanning tree coordinates estimation of a 2D graph file

graph-slam –2d –dijkstra –view -i in.graph

Visualization of a 2D (or 3D) graph file

graph-slam –2d [or –3d] –view -i in.graph

Levenberg-Marquartd optimization of a 3D graph and visualize result

graph-slam –3d –levmarq –view -i in.graph

DESCRIPTION

graph-slam is a command-line application to visualize pose constraint graphs
and execute Graph-SLAM methods on them.

read more

Posted in Applications

Application: ReactiveNavigationDemo

See also: ROS package mrpt_reactivenav2dros

This GUI application displays a flat world where obstacles are described through an occupancy grid map and where the user can choose target locations for running reactive navigation simulations. The map can be changed to anyone supplied by the user, and all the options that determine the behavior of the navigation system can be as well modified by the user to experiment by changing values.

1. Description

This GUI application displays a flat world where obstacles are described through an occupancy grid map and where the user can choose target locations for running reactive navigation simulations. The map can be changed to anyone supplied by the user, and all the options that determine the behavior of the navigation system can be as well modified by the user to experiment by changing values.

read more

Posted in Applications

Application: grid-matching

See also: Publications and C++ classes on Occupancy Grid Matching

NAME

grid-matching – Executes occupancy grid matching techniques

SYNOPSIS

grid-matching –match –map1=grid1.simplemap –map2=grid1.simplemap [options] grid-matching –detect-test –map1=grid1.simplemap [options]

DESCRIPTION

grid-matching is a command-line application which takes two maps as input and computes
a Sum-Of-Gaussians (SOG) density distribution for the 2D transformation between them, if
they are found to match.

read more

Posted in Applications

Application: ReactiveNav3D-Demo

See also: ROS package mrpt_reactivenav2dros

ReactiveNav3D-Demo_screenshot

1. Description

This GUI application is designed to test a 3D reactive navigator. It simulates a “2.5D world” where obstacles are modeled through several occupancy grid maps at different heights. The robot shape can be customized and 2D or 3D range sensors can be “added” to the robot at any 3D relative pose. During its execution, the user sets different target locations for running reactive navigation simulations.

Note that navigation logs generated by this simulator (as well as from real robots using these classes) can be inspected with the program navlog-viewer.

read more

Posted in Applications Tagged with: , ,

Application: ro-localization

1. Overview

The application ro-localization implements a particle filter for localization (aka Markov Localization) for a mobile robot using odometry, a set of known fixed beacons. The sequence of robot observations is taken from a dataset file (rawlog): it is not intended for real-time operation on a robot, though the source code requires little modification to do so.

2. Usage example

A sample configuration file can be found in share/mrpt/config_files/ro-localization/, and corresponding dataset files for Ultra-Wide-Band (UWB) radio beacons, in share/mrpt/datasets, so you can try it by doing:

The following video demonstrates the application in operation:

read more

Posted in Applications

Application: holonomic-navigator-demo

A GUI demonstrating the holonomic navigation algorithms implemented in mrpt-reactivenav.

This program allows testing, learning and tuning these algorithms:

  • VFF (Virtual Force Field)
  • ND (Nearness Diagram)

Example video:

Posted in Applications

Application: robotic-arm-kinematics

This graphical application allows creating models of robotic manipulators by introducing the corresponding Denavit-Hartenberg (DH) parameters. It’s a useful tool for teaching and learning the basics of robotic arm kinematics. As the rest of MRPT apps, it is included in source and binary packages in the download page.

The main C++ class behinds this app is mrpt::kinematics::CKinematicChain

The following video demonstrates the program in action and explains the meaning of the DH parameters:

read more

Posted in Applications

Application: icp-slam

1. Description

icp-slam is a front-end application to the MRPT C++ library class mrpt::slam::CMetricMapBuilderICP. This SLAM algorithm builds a map incrementally by aligning new range scans to either a point point or an occupancy grid map using the ICP algorithm. The ICP implementation itself can be found in the class mrpt::slam::CICP. See this tutorial describing the algorithm.

2. Demo

To run one of the demos included in MRPT, execute:

or to use that same configuration with your own data set:

Check out the comments in the configuration files provided in MRPT/share/mrpt/config_files/icp-slam/ for further reference. Note that both ICP can be configured to use either a points or occupancy grid map to perform the scan alignment. And even using one of them, the other map type can be also built simultaneously.

read more

Posted in Applications

Application: SceneViewer3D

SceneViewer3D is a GUI program which loads and visualizes .3Dscene files (see reference on file formats). This application is able of basic support for animations (camera trajectories and sequences of files) and can also generate high-resolution renders directly to image files (offscreen rendering).

List of supported import/export file formats:

  • MRPT’s 3Dscene files (File -> Open / Save)
  • Stanford’s PLY format (File -> Import/Export).
  • The standard LAS file format for LiDAR datasets, via liblas. (File -> Import -> …)
  • 3DStudio 3ds files (File -> Import).

read more

Posted in Applications

Application: kf-slam

This application implements a simple Kalman Filter for solving the SLAM problem for generic 3D range-bearing sensors and a full 6D robot state space. This program is a front-end for the classmrpt::slam::CRangeBearingKFSLAM . All the parameters to the algorithm are passed through a configuration file in the command line. The filter processes actions and observations from a rawlog file and generates a number of files describing the evolution of the filter.

kf-slam can also optionally employ a 2D version of the same range-bearing problem (since mrpt 0.9.4), a more efficient approach for SLAM problems really happening in planar environments. See this configuration file as an example of how to use the kf_implementation parameter.

read more

Posted in Applications

Application: simul-landmarks

Simul-landmarks_screenshot1. Overview

The program simulates range-bearing observations of a robot following a 2D or 3D(6D) path. Note that this simulator can be used for generating synthetic datasets for both 2D “classic” range-bearing SLAM as well as for 3D stereo slam-like SLAM problems. The location and number of landmarks are configurable via the input configuration file. Also, the robot path can be fixed or a kind of “random walk”. The random seed for both the path and the sensor noise can be set, so the generated datasets can be exactly reproduced by different researchers from the same configuration file. The generated rawlogs will contain observations of typemrpt::obs::CObservationBearingRange.

read more

Posted in Applications

Application: RawLogViewer

1. Purpose of this program

The main goal of the GUI program RawLogViewer is to allow users to quickly inspect, cut, or modify in many different ways a given Rawlog (datasets) gathered by a robot, with the idea of preparing it as the input to some other program, typically for localization (pf-localization) or mapping (kf-slam, rbpf-slam,…):

RawlogViewerRole

Examples of typical operations are extracting just a part of a large dataset, decimating the rawlog if original data was gathered at a very high rate, or modifying the sensor positions on the robot. The program also permits importing datasets from logs stored using the CARMEN format (see also:carmen2rawlog) or the MOOS asynchronous log (“*.alog”) format. Further, limited exporting is also implemented into plain text files (e.g. for processing them from MATLAB). Note that future development of this program will focus on visualization only, while modification of datasets will be possible with a separate program, rawlog-edit.

read more

Posted in Applications

Application: 2d-slam-demo

1. Description

This GUI application is an extension to a similar Matlab program developed by J. Neira and J. D. Tardós (University of Zaragoza). It allows extensive experimentation with data-association and the behavior of Kalman Filter-based 2D SLAM, in a didactic way.

At the core of this program is just one MRPT class: mrpt::slam::CRangeBearingKFSLAM2D. Check out its Doxygen documentation for more details.

Paper explaining the Matching Likelihood criteron for data association (one of the two choices offered in this program):

read more

Posted in Applications

Application: camera-calib (Camera intrinsic calibration)

1. Description

This GUI program allows users to find out the camera parameters of a camera by capturing several images of a checkerboard. The program allows online grabbing or images as well as selection of pre-recorded image files. It also shows the reprojected points, undistorted images and a 3D view of the reconstructed camera poses.

Supported image sources:

  • All cameras supported by OpenCV (webcams, firewire,…)
  • All cameras supported by FFmpeg (IP cameras,…)
  • Video files (in any format)
  • Rawlog files (an MRPT format of robotic datasets).
  • The stereo Bumblebee camera, for calibration of the individual cameras one at a time.
  • The intensity channel of a SwisssRanger ToF 3D camera.
  • The RGB intensity and IR channels of Microsoft Kinect.

Precompiled binaries of this application can be found in the Windows packages and Linux repositories.

2. Video tutorial

This tutorial explains how to use camera-calib to calibrate a camera with a chessboard. The program captures the images of the pattern on the fly and finally computes the camera matrix and the distortion parameters, which can be saved to plain text files:

read more

Posted in Applications

Application: GridmapNavSimul

1. Description

GridmapNavSimul (Grid map navigation simulator) is a GUI program that takes an occupancy gridmap and let you move a robot around simulating a laser scanner. The robot can be guided manually with keystrokes, with a joystick or reproduce a sequence of fixed poses given in a file.

The intention of the program is to save all the sensor data as dataset fileslaser scans and odometry. That is, the program is a generator of synthetic robotics data sets.

Both sensors (laser scan & odometry) have configurable levels of noise and different kinds of simulated random errors. This program comes within MRPT packages (Ubuntu users only need to install mrpt-apps from Synaptics), and its source code can be found in MRPT/apps/.
The most relevant C++ classes involved in this program are:

read more

Posted in Applications