Application: graphslam-engine


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.

Important notions

The majority of the graphslam-engine parameters in each case should be specified in an external .ini file which is to be given as a command-line argument. The following parameters can also be specified as command-line arguments:

  • .ini-file [REQUIRED]Specify the .ini configuration file using the -i, –ini-file flags. Configuration file parameters are read by the main CGraphSlamEngine class as well as the node/edge registration schemes, and the optimization scheme.
  • rawlog-file [REQUIRED]Specify the rawlog dataset file using the -r, –rawlog flags.
  • ground-truth
    Specify a ground truth file with -g, –ground-truth flags. Ground truth has to be specified if user has set visualize_slam_metric or visualize_ground_truth to true in the .ini file, otherwise an exception is raised.
  • Node/Edge registration decider classes to be used
    Specify the node registration or/and edge registration decider classes to be used using -n, –node-reg, -e –edge-reg flags.If not specified the default CFixedIntervalsNRD, CICPCriteriaERD are used as node and edge registration decider schemes respectively.
  • Optimizer class to be used
    Specify the class to be used for the optimization of the pose-graph using the -o –optimizer flags. Currently the only supported optimization scheme is Levenberg-Marquardt non-linear graph optimization defined in optimize_graph_spa_levmarq
    If not specified, the default CLevMarqGSO is used.


Sample calls of the graphslam-engine application are given below:

For more details on the application usage, and for insight on the corresponding mrpt-graphslam library classes see here.

// TODO – add link to the PDF