# Configuration Overview

Warning

The configuration file format for running SLAM on customized parameters has changed in v23.01. Please see JSON configuration file migration for more information.

By default, the Slamcore software comes preconfigured and fully functional with its default algorithm configuration. However, users may use configuration files to adjust the settings based on test conditions (e.g. a large room or outdoors) to potentially improve performance in that particular environment.

We provide a set of presets configured for the most common use cases, which users may further tweak to suit their needs.

The configuration files are downloaded along with the “Slamcore Tools” packages for Ubuntu 18.04 (x64), Ubuntu 20.04 (x64) and NVIDIA Jetson platforms at the Slamcore Portal, and installed under the /usr/share/slamcore/presets directory.

Note

Users of the ROS Wrappers will be required to download and install the Slamcore Tools packages to obtain the preset files.

## Usage

Note

Providing a configuration file is optional: the algorithm falls back to appropriate defaults if one is not provided.

### Visualiser, Dataset Recorder and CLI

Specify a configuration file for slamcore_visualiser and slamcore_dataset_processor by using the -c or --config flag, for example:

$slamcore_visualiser -c /usr/share/slamcore/presets/high_accuracy.json  Specifying multiple configuration files is accepted. In this case, the system will combine the configuration and choose the last specified value for any parameter repeated more than once. $ slamcore_visualiser -c /usr/share/slamcore/presets/high_accuracy.json /usr/share/slamcore/presets/vio_mode.json


### ROS1 Wrapper

Specify a configuration file for the SLAM ROS1 node by using the config_file parameter of the run_slam.launch file, for example:

$roslaunch slamcore_slam run_slam.launch config_file:=/usr/share/slamcore/presets/high_accuracy.json  You may load multiple config files at the same time by passing them in via the config_file parameter in the following way: $ roslaunch slamcore_slam run_slam.launch config_file:=[/usr/share/slamcore/presets/high_accuracy.json,/usr/share/slamcore/presets/vio_mode.json]


When loading multiple configurations, the system will combine the various configurations. If a parameter appears in multiple configuration files, the last configuration will overwrite any existing parameters that might have been set previously.

In case you are not using our provided launchfile, you can also set the configuration file path using the /slamcore/config_file ROS1 parameter from the parameter server before running the slam_publisher node:

# Make sure to set the parameter *before* running the node
$rosparam set /slamcore/config_file "<path/to/config/file>"$ rosrun slamcore_slam slam_publisher


Specifying multiple configuration files is accepted. In this case, the system will combine the configuration and choose the latter value for any repeated parameters.

Multiple configurations are also supported via this method. Changing the config_file during runtime, however, is not supported via this method.

### ROS 2 Wrapper

Specify a configuration file for the SLAM ROS 2 node by using the config_file parameter of the slam_publisher.launch.py file, for example:

$ros2 launch slamcore_slam slam_publisher.launch.py config_file:=/usr/share/slamcore/presets/high_accuracy.json  You may load multiple config files at the same time by passing them in via the config_file parameter in the following way: $ ros2 launch slamcore_slam slam_publisher.launch.py config_file:=[/usr/share/slamcore/presets/high_accuracy.json,/usr/share/slamcore/presets/vio_mode.json]


When loading multiple configurations, the system will combine the various configurations. If a parameter appears in multiple configuration files, the last configuration will overwrite any existing parameters that might have been set previously.

## Configuration Files

The presets contain parameters with suggested values for various use cases.

### Environment-Specific Presets

These presets are configured to the common SLAM environments and system setup. You may use the presets out-of-the-box or tune it further for your use case.

Preset

Target Use Case

default

Office environments with a hand-held camera

high_accuracy

High accuracy SLAM with no constraints on computation time

indoor_ground_robot

Wheeled robot moving on one dominant ground plane

jetson_xavier_nx

Running SLAM on low performance hardware

outdoor

Outdoor robot/drone use with landmarks far from the camera

warehouse

Indoor robot navigation use with landmarks far from the camera

Note

Some of the preset settings can significantly change the processing times.

It is recommended to use high_accuracy.json on prerecorded datasets to generate a high quality map offline, and then use a less computationally expensive configuration for live localisation.

### Feature-Specific Presets

The following presets are examples of the parameters which can be useful to configure for various features we support. It is expected that you may need to change the parameter values from the defaults when using these presets.

Note

autoexposure_limit and depth_preset are only available for camera firmware version 5.12.14.50 and above. See how to Install the Camera Firmware.

Preset

Target Use Case

autoexposure_limit

Change auto-exposure limit to mitigate IR bleed (see Troubleshooting)

depth_preset

Useful RealSense parameters to configure the depth stream

features_roi

Set region of interest (ROI) for feature extraction

point_cloud

Configure local point cloud

safe_v2

Configure the Slamcore Advanced Feature Extractor (SAFE) to a less resource-intensive version (see Frontend Parameters)

mapping/default

Configure height/occupancy map generation

### Custom Configuration

Each configuration file is a collection of settings in .json format used for the SLAM algorithm. Users may create their own configuration files based on the presets we ship.

The following pages describe the common configuration parameters for tuning: