Application: graphslam-engine

Contents

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.

   graphslam-engine [--disable-visuals] [--list-optimizers]
                    [--list-regs] [--list-edge-regs]
                    [--list-node-regs][-o ][-e
                    ][-n ][-g
                    <contents.rawlog.GT.txt>][-r <contents.rawlog>] [-i
                    ] [--][--version] [-h]
   --disable-visuals
     Disable Visualization - Overrides related visualize* directives of the
     .ini file

   --list-optimizers
     List (all) available graphslam optimizer classes

   --list-regs
     List (all) available registration decider classes

   --list-edge-regs
     List available edge registration decider classes

   --list-node-regs
     List available node registration decider classes

   -o <CLevMarqGSO>, --optimizer <CLevMarqGSO>
     Specify GraphSlam Optimizer

   -e <CICPCriteriaERD>,  --edge-reg <CICPCriteriaERD>
     Specify Edge registration decider

   -n <CICPCriteriaNRD>,  --node-reg <CICPCriteriaNRD>
     Specify Node registration decider

   -g <contents.rawlog.GT.txt>,  --ground-truth <contents.rawlog.GT.txt>
     Ground-truth textfile

   -r <contents.rawlog>,  --rawlog <contents.rawlog>
     Rawlog dataset file

   -i <config.ini>,  --ini_file <config.ini>
     .ini configuration file

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

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.

Examples

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

    graphslam-engine --list-regs --list-optimizers

    graphslam-engine -i $mrpt/share/mrpt/config_files/graphslam-engine/odometry_2DRangeScans.ini -r $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog -g $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog.GT.txt

    graphslam-engine -i $mrpt/share/mrpt/config_files/graphslam-engine/odometry_2DRangeScans_LC_version.ini -r $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog -g $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog.GT.txt --node-reg CFixedIntervalsNRD --edge-reg CLoopCloserERD --optimizer CLevMarqGSO

    graphslam-engine -i $mrpt/share/mrpt/config_files/graphslam-engine/laser_odometry.ini -r $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog -g $mrpt/share/mrpt/datasets/graphslam-engine-demos/action_observations_map/range_030_bearing_015.rawlog.GT.txt -n CFixedIntervalsNRD -e CICPCriteriaERD

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