All Projects → MIT-SPARK → Kimera Vio Ros

MIT-SPARK / Kimera Vio Ros

Licence: bsd-2-clause
ROS wrapper for Kimera-VIO

Projects that are alternatives of or similar to Kimera Vio Ros

Kimera Vio
Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
Stars: ✭ 741 (+307.14%)
Mutual labels:  slam, cpu, reconstruction, real-time
Awesome Visual Slam
📚 The list of vision-based SLAM / Visual Odometry open source, blogs, and papers
Stars: ✭ 1,336 (+634.07%)
Mutual labels:  ros, slam, reconstruction
Lego Loam
LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
Stars: ✭ 1,138 (+525.27%)
Mutual labels:  ros, slam, imu
Kimera Semantics
Real-Time 3D Semantic Reconstruction from 2D data
Stars: ✭ 368 (+102.2%)
Mutual labels:  cpu, reconstruction, real-time
microstrain inertial
ROS driver for all of MicroStrain's current G and C series products. To learn more visit
Stars: ✭ 44 (-75.82%)
Mutual labels:  ros, imu, slam
Visual Gps Slam
This is a repo for my master thesis research about the Fusion of Visual SLAM and GPS. It contains the research paper, code and other interesting data.
Stars: ✭ 175 (-3.85%)
Mutual labels:  ros, slam, visual
Mrpt slam
ROS wrappers for SLAM algorithms in MRPT
Stars: ✭ 84 (-53.85%)
Mutual labels:  ros, slam
Elasticfusion
Real-time dense visual SLAM system
Stars: ✭ 1,298 (+613.19%)
Mutual labels:  slam, reconstruction
Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (+654.4%)
Mutual labels:  ros, slam
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+702.2%)
Mutual labels:  cpu, real-time
Eskf
ROS Error-State Kalman Filter based on PX4/ecl. Performs GPS/Magnetometer/Vision Pose/Optical Flow/RangeFinder fusion with IMU
Stars: ✭ 63 (-65.38%)
Mutual labels:  ros, imu
Turtlebot3 simulations
Simulations for TurtleBot3
Stars: ✭ 104 (-42.86%)
Mutual labels:  ros, slam
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+930.77%)
Mutual labels:  ros, slam
Urbannavdataset
UrbanNav: an Open-Sourcing Localization Data Collected in Asian Urban Canyons, Including Tokyo and Hong Kong
Stars: ✭ 79 (-56.59%)
Mutual labels:  slam, imu
Loam velodyne
Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar.
Stars: ✭ 1,135 (+523.63%)
Mutual labels:  ros, slam
Grl
Robotics tools in C++11. Implements soft real time arm drivers for Kuka LBR iiwa plus V-REP, ROS, Constrained Optimization based planning, Hand Eye Calibration and Inverse Kinematics integration.
Stars: ✭ 105 (-42.31%)
Mutual labels:  ros, real-time
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (-31.32%)
Mutual labels:  ros, slam
Ov2slam
OV²SLAM is a Fully Online and Versatile Visual SLAM for Real-Time Applications
Stars: ✭ 119 (-34.62%)
Mutual labels:  slam, real-time
Recent slam research
Track Advancement of SLAM 跟踪SLAM前沿动态【2021 version】
Stars: ✭ 2,387 (+1211.54%)
Mutual labels:  slam, reconstruction
Facekit
Implementations of PCN (an accurate real-time rotation-invariant face detector) and other face-related algorithms
Stars: ✭ 1,028 (+464.84%)
Mutual labels:  cpu, real-time

Kimera-VIO-ROS

ROS Wrapper for Kimera.

Publications

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

@InProceedings{Rosinol20icra-Kimera,
  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 = {2020},
  booktitle = {IEEE Intl. Conf. on Robotics and Automation (ICRA)},
  url = {https://github.com/MIT-SPARK/Kimera},
  pdf = {https://arxiv.org/pdf/1910.02490.pdf}
}

1. Installation

A. Prerequisities

sudo apt-get install ros-melodic-image-geometry ros-melodic-pcl-ros ros-melodic-cv-bridge
  • 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
# On Ubuntu 16.04:
# catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -DGTSAM_USE_SYSTEM_EIGEN=ON
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
# For ssh:
git clone [email protected]:MIT-SPARK/Kimera-VIO-ROS.git
# For https:
# git clone https://github.com/MIT-SPARK/Kimera-VIO-ROS.git

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

# For ssh:
wstool merge Kimera-VIO-ROS/install/kimera_vio_ros_ssh.rosinstall
# For https
# wstool merge Kimera-VIO-ROS/install/kimera_vio_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.

Online

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

  2. In another terminal, launch KimeraVIO ROS wrapper:

roslaunch kimera_vio_ros kimera_vio_ros_euroc.launch
  1. In another terminal, launch rviz for visualization:
rviz -d $(rospack find kimera_vio_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.

Offline

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_vio_ros kimera_vio_ros_euroc.launch online:=false rosbag_path:="PATH/TO/ROSBAG"

Running Unit tests

To run unit tests using catkin for this specific package, call (after building the package and sourcing the workspace):

catkin run_tests --no-deps --this

Other functionalities

Using camera_info topics instead of Yaml parameters

It is sometimes convenient to use the camera_info topics to parse the camera's parameters. There are currently two ways of using these topics:

  • Offline: using the launch file launch/cam_info_yamlizer.launch which will generate yaml files out of the topics. You need to make sure that the frame_ids and the ROS topics are correctly set. Also, mind that the left/right cam frame ids are typically set as static tfs in a rosbag, therefore, first launch the node, and then run the rosbag (in case you see an exception bcs of a missing frame_id).
  • Online: setting the flag use_online_cam_params (see launch/kimera_vio_ros.launch) to true, and ensuring ROS topics are correctly set.

Restart Kimera-VIO

The typical use case is that you have multiple rosbags and you don't want to be killing Kimera-VIO(-ROS) each time. If this is your case, then we provide a rosservice to restart Kimera-VIO (it will do a hard restart, meaning the whole pipeline and data provider will be destructed and constructed again).

rosservice call /kimera_vio_ros/kimera_vio_ros_node/restart_kimera_vio

Note that Kimera-VIO will complain if timestamps are not strictly increasing. Therefore, one must follow these steps:

  1. Start Kimera-VIO and rosbag
  2. Stop rosbag
  3. Call rosservice to restart VIO
  4. Start another rosbag

Enable Dense Depth Stereo estimation

This will run OpenCV's StereoBM algorithm, more info can be found here (also checkout this to choose good parameters):

roslaunch kimera_vio_ros kimera_vio_ros_euroc run_stereo_dense:=1

This will publish a /stereo_gray/points2 topic, which you can visualize in Rviz as a 3D pointcloud. Alternatively, if you want to visualize the depth image, since Rviz does not provide a plugin to visualize a disparity image, we also run a disparity_image_proc nodelet that will publish the depth image to /stereo_gray/disparity_image_proc/depth/image_raw.

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].