Skip to content
ROS wrapper for Kimera-VIO
C++ Shell Python CMake
Branch: master
Clone or download
ToniRV Merge branch 'master' of
* 'master' of
  Specify pinhole-radtan/equi
  Fix links in
  Update links
  Update kimera_vio_euroc.rviz
  Readme fix
Latest commit 6930bec Nov 7, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Add issue templates Aug 19, 2019
cfg/viz Minor changes for release Oct 1, 2019
install Merge branch 'master' of into fix/… Oct 23, 2019
launch Make lcd default false in euroc Oct 9, 2019
output_logs Add output_logs file structure Aug 30, 2019
param Merge remote-tracking branch 'origin' into feature/lcd_output Sep 20, 2019
rviz Update kimera_vio_euroc.rviz Oct 22, 2019
scripts Add queue to gt_logger Sep 1, 2019
src Change spark vio to kimera vio Oct 22, 2019
.gitignore Update gitignore Jul 5, 2019
CMakeLists.txt Rename package to 'kimera_ros' Sep 30, 2019
LICENSE.BSD Add License info Aug 18, 2019 Merge branch 'master' of Nov 7, 2019
package.xml Hack: use opencv version 3.4.2 Oct 5, 2019


ROS Wrapper for Kimera.


We kindly ask to cite our paper if you find this library useful:

  title = {Kimera: an Open-Source Library for Real-Time Metric-Semantic Localization and Mapping},
  author = {Rosinol, Antoni and Abate, Marcus and Chang, Yun and Carlone, Luca},
  year = {2019},
  eprint = {1910.02490},
  archiveprefix = {arXiv},
  primaryclass = {cs.RO},
  url = {},
  pdf = {}

1. Installation

A. Prerequisities

  • Install ROS by following our reference, or the official ROS website.

  • System dependencies: First, update package list: sudo apt-get update

sudo apt-get install -y --no-install-recommends apt-utils
sudo apt-get install -y \
      cmake build-essential unzip pkg-config autoconf \
      libboost-all-dev \
      libjpeg-dev libpng-dev libtiff-dev \
# Use libvtk5-dev, libgtk2.0-dev in ubuntu 16.04 \
      libvtk6-dev libgtk-3-dev \
      libatlas-base-dev gfortran \
      libparmetis-dev \
      python-wstool python-catkin-tools \

B. KimeraVIO ROS wrapper Installation

# Setup catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin init
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin config --merge-devel

# Add workspace to bashrc for automatic sourcing of workspace.
echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc

# Clone repo
cd ~/catkin_ws/src
git clone

# Install dependencies from rosinstall file using wstool
wstool init # Use unless wstool is already initialized

# For ssh:
wstool merge Kimera-VIO-ROS/install/kimera_ros_ssh.rosinstall
# For https
# wstool merge Kimera-VIO-ROS/install/kimera_ros_https.rosinstall

# Finally, download and update repos:
wstool update

Finally, compile:

# Compile code
catkin build

# Refresh workspace
source ~/catkin_ws/devel/setup.bash

2. Usage

Download a Euroc rosbag: for example V1_01_easy.


  1. As a general good practice, open a new terminal and run: roscore

  2. In another terminal, launch KimeraVIO ROS wrapper:

roslaunch kimera_ros kimera_ros_euroc.launch
  1. In another terminal, launch rviz for visualization:
rviz -d $(rospack find kimera_ros)/rviz/kimera_vio_euroc.rviz

Note: this rviz configuration makes use of a rviz plugin: mesh_rviz_plugins. To visualize the textured 3D mesh, clone this plugin to your catkin workspace and catkin build it (note that this should be done automatically via wstool).

  1. Finally, in another terminal, launch the downloaded Euroc rosbag:
rosbag play --clock /PATH/TO/EUROC_ROSBAG

Note that you will need to both source ROS and your catkin_ws for each new terminal unless you added the following lines to your ~/.bashrc file:

source /opt/ros/melodic/setup.bash  # Change `melodic` for your ROS distribution.
source ~/catkin_ws/devel/setup.bash # Change `bash` to the shell you use.


In this mode, the provided rosbag will be first parsed and then sent to the VIO for processing. This is particularly useful when debugging to avoid potential ROS networking issues.

  • To run, launch the KimeraVIO ROS wrapper with the online parameter set to false and specify the rosbag's path:
roslaunch kimera_ros kimera_ros_euroc.launch online:=false rosbag_path:="PATH/TO/ROSBAG"

Other datasets

The launch file and parameters can also be configured for other datasets. For example, here we provide a kitti rosbag for testing. To run, in one terminal, launch the Kimera ROS wrapper with the launch file we configured for kitti:

roslaunch kimera_ros kimera_ros_kitti.launch
  • In another terminal, launch a Kitti rosbag:
rosbag play --clock /PATH/TO/KITTI_ROSBAG
  • In rviz, you can use the provided config file provided at rviz/kimera_vio_kitti.rviz
rviz -d $(rospack find kimera_ros)/rviz/kimera_ros_kitti.rviz

Hardware use

See the documentation on hardware setup for instructions on running KimeraROS on supported hardware platforms, as well as guides on how to develop for other platforms.

BSD License

KimeraVIO ROS wrapper is open source under the BSD license, see the LICENSE.BSD file.

You can’t perform that action at this time.