Skip to content
Jake McLaughlin edited this page Feb 19, 2022 · 6 revisions

This repo contains beam's lidar-camera-inertial SLAM code. All other SLAM code is being replaced by this repo. beam_slam uses the fuse framework with our own custom implementations of cost functions and models to suit our framework.

Dependencies:

If you want to run IMU tests, you will also need:

Compiling:

When compiling beam_slam modules on Ubuntu 18.04, specify the number of processors to be at most half of the number of processors (i.e. $(nproc)) available. For example:

catkin build -j4 if $(nproc) is eight or higher

To compile everything needed to run SLAM follow these compilations:

catkin build -j3 calibration_publisher
catkin build -j3 fuse_optimizers
catkin build -j3 bs_models

Running SLAM:

  1. Create an extrinsics file for your robot, example here.
  2. Create a calibration launch file for these extrinsics, example here.
  3. Create a calibration parameter file, example here.
  4. Create a yaml config for your desired SLAM setup, example here. A detailed explanation of each sensor models parameters are found in the README under bs_models.
  5. Create a launch file to run the fuse optimizer of your choice, example here, make sure to keep the name as local_mapper as message names depend on this naming convention
  6. Lastly launch this launch file and run your rosbag with use_sim_time set to true.

Known issues:

  • Openmp:

When compiling fuse, if you get the following error:

/usr/bin/ld: /usr/local/lib/libceres.a(local_parameterization.cc.o): undefined reference to symbol 'omp_get_max_threads@@OMP_1.0'
//usr/lib/x86_64-linux-gnu/libgomp.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [/userhome/catkin_ws/devel/.private/fuse_optimizers/lib/fuse_optimizers/fixed_lag_smoother_node] Error 1

Then add the following line to fuse_optimizer/CMakeLists.txt

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")

Clone this wiki locally