A lightweight version of OrcVIO that uses monocular images, inertial data, as well as bounding box measurements

OrcVIO-Lite

About

  • Object residual constrained Visual-Inertial Odometry (OrcVIO) is a visual-inertial odometry pipeline, which is tightly coupled with tracking and optimization over structured object models. It provides accurate trajectory estimation and large-scale object-level mapping from online Mono+IMU data.

  • OrcVIO-Lite only uses bounding boxs and no keypoints. The object mapping module and VIO module are implemented in separate ROS nodelets and are decoupled.

  • Related publication: OrcVIO: Object residual constrained Visual-Inertial Odometry, this is the journal version submitted to T-RO. Project website

Citation

@inproceedings{shan2020orcvio,
  title={OrcVIO: Object residual constrained Visual-Inertial Odometry},
  author={Shan, Mo and Feng, Qiaojun and Atanasov, Nikolay},
  booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={5104--5111},
  year={2020},
  organization={IEEE}
}   

1. Prerequisites

This repository was tested on Ubuntu 18.04 with ROS Melodic.

The core algorithm depends on Eigen, Boost, Suitesparse, Ceres, OpenCV, Sophus, GTest

2. Installation

2.1 Non-ROS version

$ git clone --recursive https://github.com/shanmo/OrcVIO-Lite.git
$ cd OrcVIO-Lite
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release ..
$ make

2.2 ROS version

  • Environment is Ubuntu 18.04 with ROS Melodic
  • The ROS version also depends on catkin simple, please put it in the ros_wrapper/src folder
$ git clone --recursive https://github.com/shanmo/OrcVIO-Lite.git
$ cd OrcVIO-Lite/ros_wrapper
$ catkin_make
$ source ./devel/setup.bash

3. Evaluation

3.1 Non-ROS Version

$ cd PATH_TO_ORCVIO_LITE/
$ ./run_euroc.sh PATH_TO_EUROC_DATASET/

3.2 ROS Version

$ cd OrcVIO_Lite/ros_wrapper/
$ roslaunch orcvio orcvio_vio_rs_d435i.launch path_bag:=PATH_TO_ERL_DATASET/
  • VIO & Mapping
$ cd OrcVIO_Lite/ros_wrapper/
$ roslaunch orcvio orcvio_mapping_rs_d435i.launch path_bag:=PATH_TO_ERL_DATASET/
  • rviz visualization

demo

4. Notes

  • The path to save the object map is set in config/object_feat_erl.yaml by result_dir_path_object_map

License

MIT License
Copyright (c) 2021 ERL at UCSD

Reference

Similar Resources

R3live - A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package

R3live - A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package

R3LIVE A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package News [Dec 31, 2021] Release of cod

Aug 15, 2022

A 3D DNN-based Metric Semantic Dense Mapping pipeline and a Visual Inertial SLAM system

A 3D DNN-based Metric Semantic Dense Mapping pipeline and a Visual Inertial SLAM system

MSDM-SLAM This repository represnets a 3D DNN-based Metric Semantic Dense Mapping pipeline and a Visual Inertial SLAM system that can be run on a grou

Jul 23, 2022

Code for "Photometric Visual-Inertial Navigation with Uncertainty-Aware Ensembles" in TRO 2022

Code for

Ensemble Visual-Inertial Odometry (EnVIO) Authors : Jae Hyung Jung, Yeongkwon Choe, and Chan Gook Park 1. Overview This is a ROS package of Ensemble V

Aug 9, 2022

We implemented our own sequential version of GA, PSO, SA and ACA using C++ and the parallelized version with CUDA support

We implemented our own sequential version of GA, PSO, SA and ACA using C++ (some using Eigen3 as matrix operation backend) and the parallelized version with CUDA support. All of them are much faster than the popular lib scikit-opt.

May 7, 2022

Ncnn version demo of [CVPR21] LightTrack: Finding Lightweight Neural Network for Object Tracking via One-Shot Architecture Search

LightTrack: Finding Lightweight Neural Networks for Object Tracking via One-Shot Architecture Search (ncnn) The official implementation by pytorch: ht

Aug 11, 2022

A program that receives all the results of the matches of a basketball tournament and calculates the final results as well as which teams go up or down a division.

O enunciado fornecido não é necessariamente completo. O comportamento do programa nas situações não previstas no enunciado deve ser escolhido por cada

Dec 21, 2021

Marking up images for use with Darknet.

Marking up images for use with Darknet.

What is DarkMark? DarkMark is a C++ GUI tool used to annotate images for use in neural networks. It was written specifically to be used with the Darkn

Jul 22, 2022

UAV images dataset for moving object detection

UAV images dataset for moving object detection

PESMOD PESMOD (PExels Small Moving Object Detection) dataset consists of high resolution aerial images in which moving objects are labelled manually.

Jul 23, 2022
Comments
  • undefined reference to fmt while installation

    undefined reference to fmt while installation

    I tried to install the Non-ROS version, I failed at the last "make" step. The errors are:

    liborcvio_estimator.so: undefined reference to std::locale fmt::v8::detail::locale_ref::get<std::locale>() const' liborcvio_estimator.so: undefined reference tofmt::v8::format_error::~format_error()' liborcvio_estimator.so: undefined reference to vtable for fmt::v8::format_error' liborcvio_estimator.so: undefined reference tofmt::v8::detail::error_handler::on_error(char const*)' liborcvio_estimator.so: undefined reference to fmt::v8::detail::basic_data<void>::left_padding_shifts' liborcvio_estimator.so: undefined reference totypeinfo for fmt::v8::format_error' liborcvio_estimator.so: undefined reference to `fmt::v8::vprint(fmt::v8::basic_string_view, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)' collect2: error: ld returned 1 exit status CMakeFiles/orcvio.dir/build.make:175: recipe for target '../bin/orcvio' failed make[2]: *** [../bin/orcvio] Error 1 CMakeFiles/Makefile2:982: recipe for target 'CMakeFiles/orcvio.dir/all' failed make[1]: *** [CMakeFiles/orcvio.dir/all] Error 2 Makefile:94: recipe for target 'all' failed make: *** [all] Error 2

    Does anyone know how to solve it?

  • [orcvio_robot/ObjectMapper-5] process has died after initialization

    [orcvio_robot/ObjectMapper-5] process has died after initialization

    I'm trying to use roslaunch orcvio orcvio_mapping_rs_d435i.launch path_bag:=PATH_TO_ERL_DATASET/ to run the VIO & Mapping in ROS version. I got following output and no object is generated in rviz.

    image

    setting /run_id to d6162fa2-260a-11ec-82f8-4845206e4f42
    process[rosout-1]: started with pid [9861]
    started core service [/rosout]
    process[republish_img-2]: started with pid [9868]
    process[republish_darknet_img-3]: started with pid [9869]
    process[orcvio_robot/system-4]: started with pid [9870]
    process[orcvio_robot/ObjectMapper-5]: started with pid [9871]
    type is orcvio/SystemNodelet
    process[rosbag-6]: started with pid [9877]
    type is orcvio/ObjectMapperNodelet
    process[rviz-7]: started with pid [9884]
    [ INFO] [1633458854.414281416]: System: Start loading ROS parameters...
    [ INFO] [1633458854.415618665]: Publishing: /orcvio/quadrics
    [ INFO] [1633458854.418987207]: System: Finish loading ROS parameters...
    [ INFO] [1633458854.423628207]: Publishing: /orcvio/gt_objects
    [ INFO] [1633458854.436356406]: Path for storing object map: /home/erl/orcvio/OrcVIO-Lite/cache/object_map/
    in ~ObjectMapperNodelet()
    ===========================================
    not using FEJ...
    not estimating td...
    not estimating extrinsic...
    not calibrating imu instrinsic online...
    Pure MSCKF...
    using zero velocity update
    using right perturbation
    using closed form covariance propagation
    using orcvio
    using static/dynamic initialization...
    ===========================================
    
    [orcvio_robot/ObjectMapper-5] process has died [pid 9871, exit code 255, cmd /opt/ros/melodic/lib/nodelet/nodelet standalone orcvio/ObjectMapperNodelet __name:=ObjectMapper __log:=/home/jerryai/.ros/log/d6162fa2-260a-11ec-82f8-4845206e4f42/orcvio_robot-ObjectMapper-5.log].
    log file: /home/jerryai/.ros/log/d6162fa2-260a-11ec-82f8-4845206e4f42/orcvio_robot-ObjectMapper-5*.log
    [ INFO] [1633458854.701614793]: Publishing: /orcvio_robot/system/poseout
    [ INFO] [1633458854.713520487]: System Manager: Finish creating ROS IO...
    Images from now on will be utilized...
    

    And I can not find orcvio_robot-ObjectMapper-5*.log. The VIO version works well.

  • python: can't open file 'scripts/convert_csv_to_txt.py': [Errno 2] No such file or directory

    python: can't open file 'scripts/convert_csv_to_txt.py': [Errno 2] No such file or directory

    Hello, thank you for the open source code. But when I try to run ./run_euroc.sh PATH_TO_EUROC_DATASET/ as you mentioned, I met the error as follows: python: can't open file 'scripts/convert_csv_to_txt.py': [Errno 2] No such file or directory And I can't find the scripts/convert_csv_to_txt.py file in the folder scripts. So I think you maybe forget to upload it.

OrcVIO Stereo and object mapping
OrcVIO Stereo and object mapping

About Object residual constrained Visual-Inertial Odometry (OrcVIO) is a visual-inertial odometry pipeline, which is tightly coupled with tracking and

Apr 11, 2022
ORB-SLAM3-Monodepth is an extended version of ORB-SLAM3 that utilizes a deep monocular depth estimation network
ORB-SLAM3-Monodepth is an extended version of ORB-SLAM3 that utilizes a deep monocular depth estimation network

ORB_SLAM3_Monodepth Introduction This repository was forked from [ORB-SLAM3] (https://github.com/UZ-SLAMLab/ORB_SLAM3). ORB-SLAM3-Monodepth is an exte

Jul 7, 2022
Official PyTorch Code of GrooMeD-NMS: Grouped Mathematically Differentiable NMS for Monocular 3D Object Detection (CVPR 2021)
Official PyTorch Code of GrooMeD-NMS: Grouped Mathematically Differentiable NMS for Monocular 3D Object Detection (CVPR 2021)

GrooMeD-NMS: Grouped Mathematically Differentiable NMS for Monocular 3D Object Detection GrooMeD-NMS: Grouped Mathematically Differentiable NMS for Mo

Jul 31, 2022
Experimental and Comparative Performance Measurements of High Performance Computing Based on OpenMP and MPI
Experimental and Comparative Performance Measurements of High Performance Computing Based on OpenMP and MPI

High-Performance-Computing-Experiments Experimental and Comparative Performance Measurements of High Performance Computing Based on OpenMP and MPI 实验结

Nov 27, 2021
PocketSphinx is a lightweight speech recognition engine, specifically tuned for handheld and mobile devices, though it works equally well on the desktop

PocketSphinx 5prealpha This is PocketSphinx, one of Carnegie Mellon University's open source large vocabulary, speaker-independent continuous speech r

Aug 9, 2022
An Out-of-the-Box TensorRT-based Framework for High Performance Inference with C++/Python Support

An Out-of-the-Box TensorRT-based Framework for High Performance Inference with C++/Python Support

Aug 8, 2022
E-Box solutions Batch 2023
E-Box solutions Batch 2023

EBox Codes for the Assessments in the E-Box platform General Information E-Box is a learning platform helps various students to develop their coding s

Jul 15, 2022
Implementation of "An Analytical Solution to the IMU Initialization Problem for Visual-Inertial Systems"

An Analytical Solution to the IMU Initialization Problem for Visual-Inertial Systems Implementation of "An Analytical Solution to the IMU Initializati

Aug 10, 2022
C++ Implementation of "An Equivariant Filter for Visual Inertial Odometry", ICRA 2021

EqF VIO (Equivariant Filter for Visual Inertial Odometry) This repository contains an implementation of an Equivariant Filter (EqF) for Visual Inertia

Jul 28, 2022
HybVIO visual-inertial odometry and SLAM system
HybVIO visual-inertial odometry and SLAM system

HybVIO A visual-inertial odometry system with an optional SLAM module. This is a research-oriented codebase, which has been published for the purposes

Aug 8, 2022