{"id":28418883,"url":"https://github.com/engcang/vins-application","last_synced_at":"2025-10-11T13:32:21.828Z","repository":{"id":37677711,"uuid":"181508195","full_name":"engcang/vins-application","owner":"engcang","description":"VINS-Fusion, VINS-Fisheye, OpenVINS, EnVIO, ROVIO, S-MSCKF, ORB-SLAM2, NVIDIA Elbrus application of different sets of cameras and imu on different board including desktop and Jetson boards","archived":false,"fork":false,"pushed_at":"2023-03-07T15:05:43.000Z","size":90044,"stargazers_count":386,"open_issues_count":1,"forks_count":77,"subscribers_count":8,"default_branch":"master","last_synced_at":"2023-11-07T16:25:02.279Z","etag":null,"topics":["cuda","nvidia","ros","ros2","slam","vio","visual-slam"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/engcang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-15T14:50:12.000Z","updated_at":"2023-11-07T07:12:01.000Z","dependencies_parsed_at":"2023-01-31T08:46:19.216Z","dependency_job_id":null,"html_url":"https://github.com/engcang/vins-application","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/engcang/vins-application","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engcang%2Fvins-application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engcang%2Fvins-application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engcang%2Fvins-application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engcang%2Fvins-application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/engcang","download_url":"https://codeload.github.com/engcang/vins-application/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engcang%2Fvins-application/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261955856,"owners_count":23235964,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cuda","nvidia","ros","ros2","slam","vio","visual-slam"],"created_at":"2025-06-04T13:20:44.609Z","updated_at":"2025-10-11T13:32:21.782Z","avatar_url":"https://github.com/engcang.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VINS-application\n## Mainly focused on Build process and explanation\n### ■ ROS1 algorithms:\n#### ● `VINS-Fusion`, `VINS-Fusion-GPU`, `VINS-Fisheye`, `OpenVINS`, `EnVIO`, `ROVIO`, `S-MSCKF`, `ORB-SLAM2`, `DM-VIO`\n### ■ ROS2 algorithms:\n#### ● `NVIDIA Isaac Elbrus`\n\n\u003cbr\u003e\n\n## This repository contains many branches! as following: \n### ■ ROS1 algorithms:\n+ **Branch**: [OAK-D](https://github.com/engcang/vins-application/tree/OAK-D), [intel T265](https://github.com/engcang/vins-application/tree/Intel-T265), [intel D435i](https://github.com/engcang/VINS-application/tree/Intel-D435i), [ZED-mini](https://github.com/engcang/VINS-application/tree/zed-mini), [Pointgrey_myAHRS](https://github.com/engcang/VINS-application/tree/Pointgrey_MyAHRS+), [FlightGoggles](https://github.com/engcang/vins-application/tree/flightgoggles)\n    + Including **config.yaml** files and **Calibration data**\n    + git clone -b \u003cbranch_name\u003e --single-branch https://github.com/engcang/vins-application\n### ■ ROS2 algorithms:\n\n---\n---\n\n### Result clips: [here](#4-comparison--application)\n#### ● Tested on: Jetson Xavier NX, Jetson Xavier AGX, Jetson TX2, Intel i9-10900k, i7-6700k, i7-8700k, i5-9600k\n### `VINS-Fusion` for PX4 with Masking: [here](https://github.com/engcang/vins-application/tree/master/vins-fusion-px4)\n+ frame changed from `world` to `map`\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n# Index\n### 0. Algorithms:\n#### ■ ROS1 Algorithms:\n+ VINS-Fusion [CPU version](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion) / [GPU version](https://github.com/pjrambo/VINS-Fusion-gpu)\n    + Mainly uses `Ceres-solver`, `OpenCV` and `Eigen` and **performance of VINS is strongly proportional to CPU performance and some parameters**\n+ [VINS-Fisheye](https://github.com/xuhao1/VINS-Fisheye): VINS-Fusion's extension with more `camera_models` and `CUDA` acceleration\n    + only for `OpenCV 3.4.1` and `Jetson TX2` (I guess, I failed on i9-10900k + RTX3080)\n+ [ROVIO](https://github.com/ethz-asl/rovio): Iterative EKF based VIO, direct method (using patch)\n+ [S-MSCKF](https://github.com/KumarRobotics/msckf_vio): Stereo version of MSCKF VIO\n+ [ORB-SLAM2](https://github.com/appliedAI-Initiative/orb_slam_2_ros): Feature based VO, Local and Global bundle adjustment\n+ [OpenVINS](https://github.com/rpng/open_vins): MSCKF based VINS \n+ [EnVIO](https://github.com/lastflowers/envio): Iterated-EKF Ensemble VIO based on [ROVIO](https://github.com/ethz-asl/rovio)\n+ [DM-VIO](https://github.com/lukasvst/dm-vio-ros): Monocular VIO with delayed marginalization and pose graph bundle adjustment based on [DSO](https://github.com/JakobEngel/dso_ros)\n#### ■ ROS2 Algorithms:\n+ [NVIDIA Isaac Elbrus](https://docs.nvidia.com/isaac/isaac/packages/visual_slam/doc/elbrus_visual_slam.html): GPU-accelerated Stereo Visual SLAM\n    + `Ubuntu 20.04`: `CUDA` 11.4, 11.5 (not 11.6), `NVIDIA-graphic driver` from 470.103.01\n    + `Jetpack`: 4.6.1 on `Jetson Xavier AGX`, `Jetson Xavier NX`\n\n### 1. Parameters\n+ [VINS-Fusion](#-vins-fusion)\n### 2. Prerequisites\n#### ● [Ceres solver and Eigen](#-ceres-solver-and-eigen-mandatory-for-vins): Mandatory for VINS (build Eigen first)\n#### ● [CUDA](#-cuda-necessary-for-gpu-version-1): Necessary for GPU version\n#### ● [cuDNN](#-cudnn-strong-library-for-neural-network-used-with-cuda): Necessary for GPU version\n#### ● [OpenCV with CUDA and cuDNN](#-opencv-with-cuda-and-cudnn): Necessary for GPU version\n\n#### ● CV_Bridge with Built OpenCV: Necessary for GPU version, and general ROS usage\n+ **ROS1** - [OpenCV 3.x ver  /  OpenCV 4.x ver](#-ros1-cv_bridge)\n+ **ROS2** - [OpenCV 4.x ver](#-ros2-cv_bridge)\n#### ● [USB performance](#-usb-performance--have-to-improve-performance-of-sensors-with-usb): Have to improve performance of sensors with USB\n#### ● [IMU-Camera Calibration](#-calibration--kalibr---synchronization-time-offset-extrinsic-parameter): Synchronization, time offset, extrinsic parameter\n#### ● [IMU-Camera rotational extrinsic](#-imu-camera-rotational-extrinsic-example): Rotational extrinsic between IMU and Cam\n### 3. Installation and Execution\n#### ■ ROS1 Algorithms:\n+ [VINS-Fusion](#-vins-fusion-1)  /  [VINS-Fisheye](#-vins-fisheye)  /  [OpenVINS](#-openvins)\n+ [VINS-Fusion with OpenCV4](#-vins-fusion-1)  /  [S-MSCKF](#-s-msckf)  /  [ROVIO](#-rovio)  /  [ORB-SLAM2](#-orb-slam2)\n+ [EnVIO](#-envio)  /  [DM-VIO](#-dm-vio)\n+ `Trouble shooting` for [VINS-Fusion](#-trouble-shooting-for-vins-fusion)\n#### ■ ROS2 Algorithms:\n+ [NVIDIA Isaac Elbrus](#-nvidia-isaac-elbrus-1)\n### 4. [Comparison \u0026 Application results](#4-comparison--application)\n### 5. [VINS on mini onboard PCs](#5-vins-on-mini-onboard-pcs-1)\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\n# 1. Parameters\n### ● VINS-Fusion: \n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ Camera frame rate \n    + lower - low time delay, poor performance\n    + higher - high time delay, better performance\n    + has to be set from **camera launch file**: 10~30hz\n+ Max tracking Feature number **max_cnt**\n    + 100~150, same correlation as camera frame rates\n+ time offset between IMU and cameras **estimated_td: 1**, **td : value from [kalibr](#-calibration--kalibr---synchronization-time-offset-extrinsic-parameter)**\n+ GPU acceleration **use_gpu: 1**, **use_gpu_acc_flow: 1** (for GPU version)\n+ Threads enabling - **multiple_thread: 1**\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n# 2. Prerequisites\n### ● Ceres solver and Eigen: Mandatory for VINS\n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ Eigen latest Stable version below [new home](https://gitlab.com/libeigen/eigen) or [old home](http://eigen.tuxfamily.org/index.php?title=Main_Page)\n~~~shell\n$ wget -O eigen.zip https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip #check version\n$ unzip eigen.zip\n$ cd eigen-3.3.7\n\u0026 mkdir build \u0026\u0026 cd build\n$ cmake .. \u0026\u0026 sudo make install\n~~~\n+ Eigen [3.3.90 version](https://eigen.tuxfamily.org/dox-devel/group__TutorialSlicingIndexing.html) or later for using ***slicing and Indexing*** as [here](https://eigen.tuxfamily.org/dox-devel/group__TutorialSlicingIndexing.html)\n~~~shell\n$ git clone https://gitlab.com/libeigen/eigen.git\n$ cd eigen \n$ mkdir build \u0026\u0026 cd build\n$ cmake .. \u0026\u0026 sudo make install\n~~~\n\n+ Ceres solver [home](http://ceres-solver.org/installation.html)\n~~~shell\n$ sudo apt-get install -y cmake libgoogle-glog-dev libatlas-base-dev libsuitesparse-dev\n$ wget http://ceres-solver.org/ceres-solver-1.14.0.tar.gz\n$ tar zxf ceres-solver-1.14.0.tar.gz\n$ mkdir ceres-bin\n$ mkdir solver \u0026\u0026 cd ceres-bin\n$ cmake ../ceres-solver-1.14.0 -DEXPORT_BUILD_DIR=ON -DCMAKE_INSTALL_PREFIX=\"../solver\"  #good for build without being root privileged and at wanted directory\n$ make -j8 # 8 : number of cores\n$ make test\n$ make install\n~~~\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● CUDA: Necessary for GPU version\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n\u003cbr\u003e\n\n+ Install **CUDA** and **Graphic Driver**: \n~~~shell\n    $ sudo apt install gcc make\n    get the right version of CUDA(with graphic driver) .deb file at https://developer.nvidia.com/cuda-downloads\n    follow the installation instructions there!\n        # .run file can be used as nvidia graphic driver. But, .deb file is recommended to install tensorRT further.\n\n        # if want to install only graphic driver, get graphic driver install script at https://www.nvidia.com/Download/index.aspx?lang=en-us\n        # sudo ./NVIDIA_\u003cgraphic_driver_installer\u003e.run --dkms\n        # --dkms option is recommended when you also install NVIDIA driver, to register it along with kernel\n        # otherwise, NVIDIA graphic driver will be gone after kernel upgrade via $ sudo apt upgrade\n    $ sudo reboot\n\n    $ gedit ~/.bashrc\n    # type and save\n    export PATH=\u003cCUDA_PATH\u003e/bin:$PATH #ex: /usr/local/cuda-11.1\n    export LD_LIBRARY_PATH=\u003cCUDA_PATH\u003e/lib64:$LD_LIBRARY_PATH #ex : /usr/local/cuda-11.1\n    $ . ~/.bashrc\n\n    # check if installed well\n    $ dpkg-query -W | grep cuda\n~~~\n+ check CUDA version using **nvcc --version**\n~~~shell\n# check installed cuda version\n$ nvcc --version\n# if nvcc --version does not print out CUDA,\n$ gedit ~/.profile\n# type below and save\nexport PATH=\u003cCUDA_PATH\u003e/bin:$PATH #ex: /usr/local/cuda-11.1\nexport LD_LIBRARY_PATH=\u003cCUDA_PATH\u003e/lib64:$LD_LIBRARY_PATH #ex : /usr/local/cuda-11.1\n$ source ~/.profile\n~~~\n\n\u003cbr\u003e\n\n### ● Trouble shooting for NVIDIA driver or CUDA: please see /var/log/cuda-installer.log or /var/log/nvidia-install.log\n+ Installation failed. See log at /var/log/cuda-installer.log for details =\u003e mostly because of `X server` is being used.\n    + turn off `X server` and install.\n~~~shell\n# if you are using lightdm\n$ sudo service lightdm stop\n\n# or if you are using gdm3\n$ sudo service gdm3\n\n# then press Ctrl+Alt+F3 -\u003e login with your ID/password\n$ sudo sh cuda_\u003cversion\u003e_linux.run\n~~~\n+ The kernel module failed to load. Secure boot is enabled on this system, so this is likely because it was not signed by a key that is trusted by the kernel.... \n    + turn off `Secure Boot` as below [reference](https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS)\n    + If you got this case, you should turn off `Secure Boot` and then turn off `X server` (as above) both.\n\n---\n\n\u003c/details\u003e\n\n\n### ● cuDNN: strong library for Neural Network used with CUDA\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ Download [here](https://developer.nvidia.com/cudnn)\n+ install as below: [reference in Korean](https://cafepurple.tistory.com/39)\n~~~shell\n$ sudo tar zxf cudnn.tgz\n$ sudo cp extracted_cuda/include/* \u003cCUDA_PATH\u003e/include/   #ex /usr/local/cuda-11.1/include/\n$ sudo cp -P extracted_cuda/lib64/* \u003cCUDA_PATH\u003e/lib64/   #ex /usr/local/cuda-11.1/lib64/\n$ sudo chmod a+r \u003cCUDA_PATH\u003e/lib64/libcudnn*   #ex /usr/local/cuda-11.1/lib64/libcudnn*\n~~~\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n---\n\n### ● OpenCV with CUDA and cuDNN \n#### ■ Ubuntu 18.04 - this repo mainly targets ROS1 for Ubuntu 18.04\n\u003cdetails\u003e\u003csummary\u003e[Click to see]\u003c/summary\u003e\n    \n+ Build OpenCV with CUDA - references: [link 1](https://webnautes.tistory.com/1030), [link 2](https://github.com/jetsonhacks/buildOpenCVXavier/blob/master/buildOpenCV.sh)\n    + for Xavier do as below or sh file from jetsonhacks [here](https://github.com/jetsonhacks/buildOpenCVXavier)\n    + If want to use **C API (e.g. Darknet YOLO)** with `OpenCV3`, then: \n        + **Patch as [here](https://github.com/opencv/opencv/issues/10963)** to use other version **(3.4.1 is the best)**\n            + should **comment** the /usr/local/include/opencv2/highgui/highgui_c.h line 139 [as here](https://stackoverflow.com/questions/48611228/yolo-compilation-with-opencv-1-fails) after install\n+ **-D OPENCV_GENERATE_PKGCONFIG=YES** option is also needed for `OpenCV 4.X`\n  + and copy the generated `opencv4.pc` file to `/usr/local/lib/pkgconfig` or `/usr/lib/aarch64-linux-gnu/pkgconfig` for jetson boards\n~~~shell\n$ sudo apt-get purge libopencv* python-opencv\n$ sudo apt-get update\n$ sudo apt-get install -y build-essential pkg-config\n$ sudo apt-get install -y cmake libavcodec-dev libavformat-dev libavutil-dev \\\n    libglew-dev libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libpostproc-dev \\\n    libswscale-dev libtbb-dev libtiff5-dev libv4l-dev libxvidcore-dev \\\n    libx264-dev qt5-default zlib1g-dev libgl1 libglvnd-dev pkg-config \\\n    libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev mesa-utils #libeigen3-dev # recommend to build from source : http://eigen.tuxfamily.org/index.php?title=Main_Page\n$ sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy\n$ mkdir \u003copencv_source_directory\u003e \u0026\u0026 cd \u003copencv_source_directory\u003e\n\n\n# check version\n$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip # check version\n$ unzip opencv.zip\n$ cd \u003copencv_source_directory\u003e/opencv \n\n$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.1.zip # check version\n$ unzip opencv_contrib.zip\n\n$ mkdir build \u0026\u0026 cd build\n    \n# check your BIN version : http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/\n# 8.6 for RTX3080 7.2 for Xavier, 5.2 for GTX TITAN X, 6.1 for GTX TITAN X(pascal), 6.2 for TX2\n# -D BUILD_opencv_cudacodec=OFF #for cuda10-opencv3.4\n    \n$ cmake -D CMAKE_BUILD_TYPE=RELEASE \\\n      -D CMAKE_C_COMPILER=gcc-6 \\\n      -D CMAKE_CXX_COMPILER=g++-6 \\\n      -D CMAKE_INSTALL_PREFIX=/usr/local \\\n      -D OPENCV_GENERATE_PKGCONFIG=YES \\\n      -D WITH_CUDA=ON \\\n      -D OPENCV_DNN_CUDA=ON \\\n      -D WITH_CUDNN=ON \\\n      -D CUDA_ARCH_BIN=8.6 \\\n      -D CUDA_ARCH_PTX=8.6 \\\n      -D ENABLE_FAST_MATH=ON \\\n      -D CUDA_FAST_MATH=ON \\\n      -D WITH_CUBLAS=ON \\\n      -D WITH_LIBV4L=ON \\\n      -D WITH_GSTREAMER=ON \\\n      -D WITH_GSTREAMER_0_10=OFF \\\n      -D WITH_CUFFT=ON \\\n      -D WITH_NVCUVID=ON \\\n      -D WITH_QT=ON \\\n      -D WITH_OPENGL=ON \\\n      -D WITH_IPP=OFF \\\n      -D WITH_V4L=ON \\\n      -D WITH_1394=OFF \\\n      -D WITH_GTK=ON \\\n      -D WITH_EIGEN=ON \\\n      -D WITH_FFMPEG=ON \\\n      -D WITH_TBB=ON \\\n      -D BUILD_opencv_cudacodec=OFF \\\n      -D CUDA_NVCC_FLAGS=\"--expt-relaxed-constexpr\" \\\n      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.1/modules \\\n      ../\n$ time make -j8 # 8 : numbers of core\n$ sudo make install\n$ sudo rm -r \u003copencv_source_directory\u003e #optional for saving disk, but leave this folder to uninstall later, if you need.\n~~~\n\n\u003cbr\u003e\n\n### ● Trouble shooting for OpenCV build error:\n+ Please include the appropriate gl headers before including cuda_gl_interop.h =\u003e reference [1](https://github.com/jetsonhacks/buildOpenCVXavier/blob/master/buildOpenCV.sh#L101), [2](https://github.com/jetsonhacks/buildOpenCVXavier/blob/master/patches/OpenGLHeader.patch), [3](https://devtalk.nvidia.com/default/topic/1007290/jetson-tx2/building-opencv-with-opengl-support-/post/5141945/#5141945)\n+ modules/cudacodec/src/precomp.hpp:60:37: fatal error: dynlink_nvcuvid.h: No such file or directory\ncompilation terminated. --\u003e **for CUDA version 10**\n    + =\u003e reference [here](https://devtalk.nvidia.com/default/topic/1044773/cuda-setup-and-installation/error-in-installing-opencv-3-4-0-on-cuda-10/)\n    + cmake ... -D BUILD_opencv_cudacodec=OFF ...\n+ CUDA_nppicom_LIBRARY not found\n    + $ sudo apt-get install nvidia-cuda-toolkit\n    + or Edit *opencv/cmake/OpenCVDetectCUDA.cmake* as follows:\n    ```cmake\n        ...\n        ...\n        if(CUDA_FOUND)\n            set(HAVE_CUDA 1)\n            ocv_list_filterout(CUDA_nppi_LIBRARY \"nppicom\") #this line is added\n            ocv_list_filterout(CUDA_npp_LIBRARY \"nppicom\") #this line is added\n            if(WITH_CUFFT)\n                set(HAVE_CUFFT 1)\n            endif()\n        ...\n        ...\n    ```\n    \n---\n\n\u003c/details\u003e\n\n    \n#### ■ Ubuntu 20.04 - this repo mainly targets ROS2 for Ubuntu 20.04\n\n\u003cdetails\u003e\u003csummary\u003e[Click to see]\u003c/summary\u003e\n    \n+ Build OpenCV with CUDA - references: [link 1](https://webnautes.tistory.com/1479?category=704653)\n+ **-D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.8/dist-packages** \n    + This is needed to prevent `No module name cv2` when `import cv2` in `Python3`\n    \n~~~bash\n## optional, I just leave default OpenCV from ROS2, since I can set proper PATHS for desired OpenCV versions\n## If you cannot, just do below:\n$ sudo apt-get purge libopencv*\n## (But you will have to sudo apt install ros-foxy-desktop again, when you need other packages related to this)\n\n$ sudo apt-get purge python-opencv python3-opencv\n$ pip uninstall opencv-python\n$ sudo apt-get update\n$ sudo apt-get install -y build-essential pkg-config\n$ sudo apt-get install -y cmake libavcodec-dev libavformat-dev libavutil-dev \\\n    libglew-dev libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libpostproc-dev \\\n    libswscale-dev libtbb-dev libtiff5-dev libv4l-dev libxvidcore-dev \\\n    libx264-dev qt5-default zlib1g-dev libgl1 libglvnd-dev pkg-config \\\n    libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev mesa-utils #libeigen3-dev # recommend to build from source : http://eigen.tuxfamily.org/index.php?title=Main_Page\n$ sudo apt-get install python3-dev python3-numpy\n$ mkdir \u003copencv_source_directory\u003e \u0026\u0026 cd \u003copencv_source_directory\u003e\n\n\n# check version\n$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip # check version\n$ unzip opencv.zip\n$ cd \u003copencv_source_directory\u003e/opencv \n\n$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip # check version\n$ unzip opencv_contrib.zip\n\n$ mkdir build \u0026\u0026 cd build\n    \n# check your CUDA_ARCH_BIN and CUDA_ARCH_PTX version : http://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/\n# 8.6 for RTX3080 7.2 for Xavier, 5.2 for GTX TITAN X, 6.1 for GTX TITAN X(pascal), 6.2 for TX2\n# -D BUILD_opencv_cudacodec=OFF #for cuda10-opencv3.4\n    \n$ cmake -D CMAKE_BUILD_TYPE=RELEASE \\\n      -D CMAKE_C_COMPILER=gcc-9 \\\n      -D CMAKE_CXX_COMPILER=g++-9 \\\n      -D CMAKE_INSTALL_PREFIX=/usr/local \\\n      -D OPENCV_GENERATE_PKGCONFIG=YES \\\n      -D PYTHON_EXECUTABLE=/usr/bin/python3.8 \\\n      -D PYTHON2_EXECUTABLE=\"\" \\\n      -D BUILD_opencv_python3=ON \\\n      -D BUILD_opencv_python2=OFF \\\n      -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.8/dist-packages \\\n      -D BUILD_NEW_PYTHON_SUPPORT=ON \\\n      -D OPENCV_SKIP_PYTHON_LOADER=ON \\\n      -D WITH_CUDA=ON \\\n      -D OPENCV_DNN_CUDA=ON \\\n      -D WITH_CUDNN=ON \\\n      -D CUDA_ARCH_BIN=8.6 \\\n      -D CUDA_ARCH_PTX=8.6 \\\n      -D ENABLE_FAST_MATH=ON \\\n      -D CUDA_FAST_MATH=ON \\\n      -D WITH_CUBLAS=ON \\\n      -D WITH_LIBV4L=ON \\\n      -D WITH_GSTREAMER=ON \\\n      -D WITH_GSTREAMER_0_10=OFF \\\n      -D WITH_CUFFT=ON \\\n      -D WITH_NVCUVID=ON \\\n      -D WITH_QT=ON \\\n      -D WITH_OPENGL=ON \\\n      -D WITH_IPP=OFF \\\n      -D WITH_V4L=ON \\\n      -D WITH_1394=OFF \\\n      -D WITH_GTK=ON \\\n      -D WITH_EIGEN=ON \\\n      -D WITH_FFMPEG=ON \\\n      -D WITH_TBB=ON \\\n      -D BUILD_opencv_cudacodec=OFF \\\n      -D CUDA_NVCC_FLAGS=\"--expt-relaxed-constexpr\" \\\n      -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules \\\n      ../\n$ time make -j20 # 20 : numbers of core\n$ sudo make install\n$ sudo rm -r \u003copencv_source_directory\u003e #optional for saving disk, but leave this folder to uninstall later, if you need.\n~~~\n\n\u003cbr\u003e\n\n### ● Trouble shooting for OpenCV build error:\n+ No troubles found yet\n\n---\n\n\u003c/details\u003e\n    \n---\n    \n### ● CV_Bridge with built OpenCV: Necessary for whom built OpenCV manually from above\n### ■ ROS1-cv_bridge\n\n\u003cdetails\u003e\u003csummary\u003e[Click: CV_bridge with OpenCV 3.X version]\u003c/summary\u003e\n    \n+ If OpenCV with CUDA were built manually, build cv_bridge manually also\n~~~shell\n$ cd ~/catkin_ws/src \u0026\u0026 git clone https://github.com/ros-perception/vision_opencv\n# since ROS Noetic is added, we have to checkout to melodic tree\n$ cd vision_opencv \u0026\u0026 git checkout origin/melodic\n$ gedit vision_opencv/cv_bridge/CMakeLists.txt\n~~~\n+ Edit OpenCV PATHS in CMakeLists and include cmake file\n~~~txt\n#when error, try both lines\nfind_package(OpenCV 3 REQUIRED PATHS /usr/local/share/OpenCV NO_DEFAULT_PATH\n#find_package(OpenCV 3 HINTS /usr/local/share/OpenCV NO_DEFAULT_PATH\n  COMPONENTS\n    opencv_core\n    opencv_imgproc\n    opencv_imgcodecs\n  CONFIG\n)\ninclude(/usr/local/share/OpenCV/OpenCVConfig.cmake) #under catkin_python_setup()\n~~~\n~~~shell\n$ cd .. \u0026\u0026 catkin build cv_bridge\n~~~\n\n---\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e[Click: CV_bridge with OpenCV 4.X version]\u003c/summary\u003e\n    \n+ Referred [here](https://github.com/ros-perception/vision_opencv/issues/272#issuecomment-471311300)\n~~~shell\n$ cd ~/catkin_ws/src \u0026\u0026 git clone https://github.com/ros-perception/vision_opencv\n# since ROS Noetic is added, we have to checkout to melodic tree\n$ cd vision_opencv \u0026\u0026 git checkout origin/melodic\n$ gedit vision_opencv/cv_bridge/CMakeLists.txt\n~~~\n+ Add options and edit OpenCV PATHS in CMakeLists\n~~~txt\n# add right after project()\nset(CMAKE_CXX_STANDARD 11) \n\n# edit find_package(OpenCV)\n#find_package(OpenCV 4 REQUIRED PATHS /usr/local/share/opencv4 NO_DEFAULT_PATH\nfind_package(OpenCV 4 REQUIRED\n  COMPONENTS\n    opencv_core\n    opencv_imgproc\n    opencv_imgcodecs\n  CONFIG\n)\ninclude(/usr/local/lib/cmake/opencv4/OpenCVConfig.cmake)\n~~~\n+ Edit `cv_bridge/src/CMakeLists.txt`\n~~~txt\n# line number 35, Edit 3 -\u003e 4\nif (OpenCV_VERSION_MAJOR VERSION_EQUAL 4)\n~~~\n+ Edit `cv_bridge/src/module_opencv3.cpp`\n~~~cpp\n// line number 110\n//    UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, int flags, UMatUsageFlags usageFlags) const\n    UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, AccessFlag flags, UMatUsageFlags usageFlags) const\n\n// line number 140\n//    bool allocate(UMatData* u, int accessFlags, UMatUsageFlags usageFlags) const\n    bool allocate(UMatData* u, AccessFlag accessFlags, UMatUsageFlags usageFlags) const\n~~~\n~~~shell\n$ cd .. \u0026\u0026 catkin build cv_bridge\n~~~\n\n---\n\n\u003c/details\u003e\n\n### ■ ROS2-cv_bridge\n\n\u003cdetails\u003e\u003csummary\u003e[Click: CV_bridge with OpenCV 4.X version]\u003c/summary\u003e\n\n+ If OpenCV with CUDA were built manually, build cv_bridge manually also\n~~~bash\n$ cd ~/colcon_ws/src \u0026\u0026 git clone https://github.com/ros-perception/vision_opencv\n$ cd vision_opencv\n$ git checkout origin/ros2\n\n$ cd ~/colcon_ws\n$ colcon build --symlink-install --packages-select cv_bridge image_geometry --allow-overriding cv_bridge image_geometry\n$ source install/setup.bash\n~~~\n\n\u003c/details\u003e\n    \n\u003cbr\u003e\n\n---\n\n### ● USB performance : Have to improve performance of sensors with USB\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n  + Link : [here](https://github.com/KumarRobotics/flea3#optimizing-usb-performance-under-linux) for x86_64 desktops\n  + TX1/TX2 : [here](https://www.matrix-vision.com/manuals/mvBlueFOX3/mvBC_page_quickstart.html#mvBC_subsubsection_quickstart_linux_requirements_optimising_usb)\n  + For Xavier : [here](https://devtalk.nvidia.com/default/topic/1049581/jetson-agx-xavier/change-usbcore-usbfs_memory_mb/)\n  ~~~shell\n  $ sudo ./flash.sh -k kernel -C \"usbcore.usbfs_memory_mb=1000\" -k kernel-dtb jetson-xavier mmcblk0p1\n  ~~~\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n---\n    \n### ● Calibration : Kalibr -\u003e synchronization, time offset, extrinsic parameter\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ [Kalibr](https://github.com/ethz-asl/kalibr) -\u003e synchronization, time offset \u003cbr\u003e\n+ For ZED cameras : [here](https://support.stereolabs.com/hc/en-us/articles/360012749113-How-can-I-use-Kalibr-with-the-ZED-Mini-camera-in-ROS-)\n+ **When Calibrating Fisheye camera like T265**\n    + Try with ***MEI*** camera model, as [here](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/issues/57), which is *omni-radtan* in Kalibr\n    + and try this **Pull** to deal with NaNs [here](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/pull/110)\n\n\u003cbr\u003e\n\n### ● Trouble shooting for Kalibr errors\n+ **ImportError: No module named Image** [reference](https://github.com/ethz-asl/kalibr/issues/67)\n~~~shell\n$ gedit kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/MulticamGraph.py\n#import Image\nfrom PIL import Image\n~~~\n+ **focal length initialization error**\n~~~shell\n $ gedit kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/PinholeProjection.hpp\n # edit if sentence in line 781\n # comment from line 782 to 795\n f_guesses.push_back(2000.0) #initial guess of focal length!!!!\n~~~\n+ **cameras are not connected**\n~~~shell\n $ gedit kalibr/aslam_offline_calibration/kalibr/python/kalibr_calibrate_cameras\n # comment from line 201 to 205\n~~~\n\n---\n\n\u003c/details\u003e\n\n### ● IMU-Camera rotational extrinsic example\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ Between ROS standard body(IMU) and camera\n  \u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/engcang/vins-application/blob/master/extrinsic.png\" width=\"600\"/\u003e\n  \u003c/p\u003e\n+ **Left view :** Between ROS standard body(IMU) and down-pitched (look downward) camera\n  \u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/engcang/vins-application/blob/master/pitching.png\" width=\"600\"/\u003e\n  \u003c/p\u003e\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\u003cbr\u003e\n\n# 3. Installation and Execution\n## ■ ROS1 Algorithms:\n### ● VINS-Fusion\n\n\u003cdetails\u003e\u003csummary\u003e[with `OpenCV3`(original): click to see]\u003c/summary\u003e\n    \n+ git clone and build from source\n~~~shell\n$ cd ~/catkin_ws/src\n$ git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion #CPU\nor \n$ git clone https://github.com/pjrambo/VINS-Fusion-gpu #GPU\n$ cd .. \u0026\u0026 catkin build camera_models # camera models first\n$ catkin build\n~~~\n**Before build VINS-Fusion, process below could be required.**\n\n+ For `GPU` version, Edit `CMakeLists.txt` for `loop_fusion` and `vins_estimator`\n~~~shell\n$ cd ~/catkin_ws/src/VINS-Fusion-gpu/loop_fusion \u0026\u0026 gedit CMakeLists.txt\nor\n$ cd ~/catkin_ws/src/VINS-Fusion-gpu/vins_estimator \u0026\u0026 gedit CMakeLists.txt\n~~~\n~~~txt\n##For loop_fusion : line 19\n#find_package(OpenCV)\ninclude(/usr/local/share/OpenCV/OpenCVConfig.cmake)\n\n##For vins_estimator : line 20\n#find_package(OpenCV REQUIRED)\ninclude(/usr/local/share/OpenCV/OpenCVConfig.cmake)\n~~~\n\n---\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e[with `OpenCV4`: click to see]\u003c/summary\u003e\n\n+ git clone and build, few `cv` codes are changed from original repo.\n~~~shell\n$ cd ~/catkin_ws/src\n$ git clone https://github.com/engcang/vins-application #Only CPU version yet\n$ cd vins-application\n\n$ mv vins_estimator ..\n$ mv camera_models ..\n$ cd ..\n$ rm -r vins-application\n\n$ cd .. \n$ catkin build\n~~~\n\n---\n\n\u003c/details\u003e\n\n#### ● Trouble shooting for VINS-Fusion\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n    \n+ Aborted error when running **vins_node** : \n~~~shell\n $ echo \"export MALLOC_CHECK_=0\" \u003e\u003e ~/.bashrc\n $ source ~/.bashrc\n~~~\n+ **If want to try to deal with NaNs**, refer [here](https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/pull/110)\n\n---\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● VINS-Fisheye\n#### only for `OpenCV 3.4.1` and `Jetson TX2` (I guess yet, I failed on i9-10900k + RTX3080)\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n+ Get `libSGM` and install with `OpenCV` option as below:\n~~~shell\n$ git clone https://github.com/fixstars/libSGM\n$ cd libSGM\n$ git submodule update --init\n\ncheck and edit CMakeLists.txt\n$ gedit CMakeLists.txt\nEdit\nBUILD_OPENCV_WRAPPER=ON and ENABLE_TESTS=ON\n\n$ mkdir build \u0026\u0026 cd build\n$ cmake .. -DBUILD_OPENCV_WRAPPER=ON -DENABLE_TESTS=ON\n$ make -j6\n$ sudo make install\n\ndo test\n$ cd libSGM/build/test \u0026\u0026 ./sgm-test\n~~~\n\n+ Get `VINS-Fisheye` and install\n~~~shell\n$ cd ~/catkin_ws/src\n$ git clone https://github.com/xuhao1/VINS-Fisheye\n$ cd ..\n\nbuild camera_models first\n$ catkin build camera_models\n\n$ gedit src/VINS-Fisheye/vins_estimator/CMakeLists.txt\nedit as below:\nset(ENABLE_BACKWARD false)\nor\n$ sudo apt install libdw-dev\n\n$ catkin build\n~~~\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n\n### ● OpenVINS\n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n+ Get `OpenVINS` and install: refer [doc](https://docs.openvins.com/gs-installing.html), [git](https://github.com/rpng/open_vins)\n~~~shell\n$ cd ~/catkin_ws/src\n$ git clone https://github.com/rpng/open_vins/\n$ cd ..\n$ catkin build\n~~~\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● EnVIO\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n+ Get `EnVIO` and install: refer [official git](https://github.com/lastflowers/envio/)\n~~~bash\n$ cd ~/catkin_ws/src\n$ git clone https://github.com/lastflowers/envio.git\n$ cd ..\n\n$ catkin_make\n\nor, if you want to use it with catkin build,\nthen\n\n$ gedit src/envio/CMakeLists.txt\ncomment two lines, line 4 and 5\n#set(CMAKE_CXX_COMPILER \"/usr/bin/g++-5\")\n#set(CMAKE_C_COMPILER \"/usr/bin/gcc-5\")\n\n$ catkin build    \n~~~\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● S-MSCKF\n    \n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n#### ● Installation\n```bash\n $ sudo apt-get install libsuitesparse-dev\n $ cd ~/catkin_ws/src \u0026\u0026 https://github.com/KumarRobotics/msckf_vio\n $ cd ~/catkin_ws \u0026\u0026 catkin build msckf_vio -DCMAKE_BUILD_TYPE=Release\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● ROVIO\n    \n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n#### ● Requirements\n    \n+ `ROVIO` receives input image as `gray scale image` - convert the RGB image as [this file](https://github.com/engcang/utility_codes/blob/master/rgb2gray.py)\n+ Config files can be generated directly from `Kalibr` results:\n    \n```bash\n$ rosrun kalibr kalibr_rovio_config --cam \u003ccam-chain.yaml filename\u003e\n```\n    \n+ After using kalibr to convert the calibration result files to rovio_config files,\n    + Make sure to Edit `Camera1` and `Camera2` into `Camera0` and `Camera1` in `.info` file\n    + Make sure to Add `Velocity Updates` block in `.info` file\n\n#### ● Installation\n    \n+ Install [kindr](https://github.com/ANYbotics/kindr)\n\n```bash\n$ cd ~/catkin_ws/src \u0026\u0026 git clone https://github.com/ANYbotics/kindr\n$ cd .. \u0026\u0026 catkin build -j8\n```\n\n+ Install `ROVIO`\n    \n```bash\n$ cd ~/catkin_ws/src \u0026\u0026 git clone https://github.com/ethz-asl/rovio\n$ cd rovio \u0026\u0026 git submodule update --init --recursive\n\n$ cd ..\n$ catkin build rovio --cmake-args -DCMAKE_BUILD_TYPE=Release\n\n# With with opengl scene (optional)\n$ sudo apt-get install freeglut3-dev libglew-dev\n$ catkin build rovio --cmake-args -DCMAKE_BUILD_TYPE=Release -DMAKE_SCENE=ON\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● ORB-SLAM2\n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n#### ● Installation\n```bash\n $ cd ~/catkin_ws/src \u0026\u0026 git clone https://github.com/appliedAI-Initiative/orb_slam_2_ros\n $ cd .. \u0026\u0026 rosdep install --from-paths src --ignore-src -r -y\n $ catkin build\n```\n\n+ highly recommend this pull request to speedup loading Vocabulary [here](https://github.com/raulmur/ORB_SLAM2/pull/21)\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n### ● DM-VIO\n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n+ Install dependencies\n```bash\n$ sudo apt-get install cmake libsuitesparse-dev libeigen3-dev libboost-all-dev libyaml-cpp-dev libtbb-dev libgl1-mesa-dev libglew-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols -y\n\n$ cd ~/your_workspace\n$ git clone https://github.com/borglab/gtsam.git\n$ cd gtsam\n$ git checkout 4.2a6          # not strictly necessary but this is the version tested with.\n$ mkdir build \u0026\u0026 cd build\n$ cmake -DGTSAM_POSE3_EXPMAP=ON -DGTSAM_ROT3_EXPMAP=ON -DGTSAM_USE_SYSTEM_EIGEN=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..\n$ make -j\n$ sudo make install\n\n$ cd ~/your_workspace\n$ git clone https://github.com/stevenlovegrove/Pangolin.git\n$ cd Pangolin\n$ git checkout v0.6\n$ mkdir build \u0026\u0026 cd build\n$ cmake ..\n$ cmake --build .\n$ sudo make install\n```\n\n+ Build `DM-VIO` and `DM-VIO-ROS`\n```bash\n$ cd ~/your_workspace\n$ git clone https://github.com/lukasvst/dm-vio.git\n$ cd dm-vio\n$ mkdir build \u0026\u0026 cd build\n$ cmake ..\n$ make -j10\n$ echo \"export DMVIO_BUILD=`pwd`\" \u003e\u003e ~/.bashrc \u0026\u0026 . ~/.bashrc\n\n$ cd ~/your_workspace/src\n$ git clone https://github.com/lukasvst/dm-vio-ros.git\n$ cd ~/your_workspace\n$ catkin build\n$ . devel/setup.bash\n$ sudo ldconfig\n```\n\n+ Run on `KAIST-VIO-Dataset`, refer [this config files](https://github.com/engcang/vins-application/tree/master/DM-VIO)\n```bash\n$ rosrun dmvio_ros node calib=camera_kaistvio.txt imuCalib=camchain_kaistvio.yaml settingsFile=setting_kaistvio.yaml mode=3 nogui=0 preset=1 quiet=1 useimu=1\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n\n## ■ ROS2 Algorithms:\n### ● NVIDIA Isaac Elbrus\n\n\u003cdetails\u003e\u003csummary\u003e[click to see]\u003c/summary\u003e\n\n#### ● Requirements\n+ PC option1 - Ubuntu 20.04\n    + `CUDA`: 11.4-11.5 **(11.6 cannot install VPI 1.1.11)**\n    + `NVIDIA Graphic driver` \u003e= 470.103.01\n    + **(Important)** `NVIDIA VPI` 1.1.11 (Only this version) - install with [this files](https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common/tree/main/docker/vpi) after CUDA installation\n+ PC option2 - Jetpack 4.6.1 on Jetson Xavier AGX / NX\n+ Topics: **`Raw stereo image` + `camera info topics`** + **(Important!) `/tf_static`** (including base_frame (e.g., camera_link) to left and right camera frame)\n\n#### ● Installation\n~~~bash\n$ sudo apt install git-lfs\n$ cd ~/colcon_ws/src\n$ git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_visual_slam \u0026\u0026\ngit clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_image_pipeline \u0026\u0026\ngit clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common\n$ cd ..\n$ rosdep install -i -r --from-paths src --rosdistro foxy -y\n$ colcon build --symlink-install \u0026\u0026 source install/setup.bash\n~~~\n\n#### ● Run\n+ Edit remapping topic names in the launch file below, before launching it.\n~~~python\n# Copyright (c) 2021, NVIDIA CORPORATION.  All rights reserved.\n\n    ...\n\nimport launch\nfrom launch_ros.actions import ComposableNodeContainer, Node\nfrom launch_ros.descriptions import ComposableNode\n\n    ...\n    \n        remappings=[('stereo_camera/left/image', '/camera/infra1/image_rect_raw'),\n                    ('stereo_camera/left/camera_info', '/camera/infra1/camera_info'),\n                    ('stereo_camera/right/image', '/camera/infra2/image_rect_raw'),\n                    ('stereo_camera/right/camera_info', '/camera/infra2/camera_info')]\n    )\n\n    ...\n    \n~~~\n\n+ If you want to run it with `bag` file, then use or refer [this launch file](https://github.com/engcang/vins-application/blob/master/NVIDIA_Isaac_Elbrus/elbrus.launch.py)\n    + since **`/tf_static`** cannot be recorded in `bag` file, `static_transform_publisher` should be added in the launch file as [these lines](https://github.com/engcang/vins-application/blob/master/NVIDIA_Isaac_Elbrus/elbrus.launch.py#L57-L62)\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n# 4. Comparison \u0026 Application\n+ Conversion ROS topics into nav_msgs/Path to visualize in Rviz: use this [github](https://github.com/engcang/tf_to_trajectory)\n+ Conversion compressed Images into raw Images: use this [code](https://github.com/engcang/utility_codes/blob/master/compressed_to_raw.py)\n\n\u003cbr\u003e\n\n#### Simulation\n\n+ `VINS-Mono` on `FlightGoggles`: [youtube](https://youtu.be/U4TJ7ZyfWD8), with CPU [youtube](https://www.youtube.com/watch?v=1QUypn7GbXc)\n+ `ROVIO` on `FlightGoggles`: [youtube](https://youtu.be/3Xgwi7k6css)\n+ `ORB-SLAM2` on `FlightGoggles`: [youtube](https://youtu.be/4iQf8rBA9mw)\n+ `VINS with Loop fusion` vs `VINS` on `FlightGoggles`: [youtube](https://youtu.be/cvhI_1XQQt4)\n+ `VINS-Mono` vs `ROVIO`: [youtube](https://youtu.be/n0N2qDcNcBQ)\n+ `VINS-Mono` vs `ROVIO` vs `ORB-SLAM2`: [youtube](https://youtu.be/XMyiNlIbDXU)\n+ `VINS-Fusion` (Stereo) vs `S-MSCKF` on `FlightGoggles`: [youtube](https://youtu.be/s_Ol-k8rhwY)\n+ `VINS-Fusion` (Stereo) based autonomous flight and 3D mapping using RGB-D camera: [youtube](https://youtu.be/5t-6g7UWA7o)\n    \n#### Real world\n\n+ Hand-held - `VINS-Mono` with pointgrey cam, myAHRS+ imu on Jetson Xavier AGX: [youtube](https://youtu.be/4qJYoND9OYk), moved faster : [youtube](https://youtu.be/DN-Jao5aKRw)\n+ Hand-held - `ROVIO` with Intel D435i on Jetson Xavier AGX: [youtube](https://youtu.be/_o2KwT8jJN0)\n+ Hand-held - `ORB-SLAM2` with Intel D435i on Jetson Xavier AGX: [youtube](https://youtu.be/-jueoC-YqF4)\n+ Hand-held - `VINS(GPU version)` with pointgrey, myAHRS at Intel i7-8700k, TITAN RTX: [youtube](https://youtu.be/UEZMZMFFhYs) \n+ Hand-held - `VINS(GPU version, Stereo)` with Intel D435i, on Xavier AGX, max CPU clocked: [youtube](https://youtu.be/b3l1TeNKyeU) and [youtube2](https://youtu.be/7yMDqiO2A2Q) : screen\n+ Hand-held - `VINS-Fusion (Stereo)` with Intel D435i and Pixhawk4 mini fused with T265 camera: [here](https://engcang.github.io/mavros_vision_pose/)\n+ Hand-held - `VINS-Fusion (stereo)` with Intel D435i and Pixhawk4 mini on 1km long underground tunnel: [here](https://youtu.be/Gx0PSMCeR1g)\n+ Hand-held - `VINS-Fusion GPU version` test using T265: [here](https://youtu.be/8w86LeB6fns)\n+ Hand-held - `VINS-Fusion (stereo)` test using OAK-D: [here](https://youtu.be/Hjcjg9L4j9o)\n+ Hand-held - `VINS-Fusion (stereo)` test using OAK-D PRO: [here](https://youtu.be/Xw-HIPbn0wg)\n+ Real-Drone - `VINS-Fusion` with Intel D435i and Pixahwk4 mini on Real Hexarotor: [here](https://youtu.be/sfj1kxMVeMU)\n+ Real-Drone - `VINS-Fusion` with Intel D435i and Pixahwk4 mini on Real Quadrotor: [here](https://youtu.be/S3XAOMek2mo)\n\n+ `OpenVINS` on [KAIST VIO dataset](https://github.com/zinuok/kaistviodataset): result [youtube](https://youtu.be/Ye8xcKH4otY)\n    + use this [launch file](https://github.com/engcang/vins-application/blob/master/openvins/kaist.launch) including parameters\n\n+ `EnVIO` vs `VINS-Fusion` on [KAIST VIO dataset](https://github.com/zinuok/kaistviodataset): result [youtube](https://youtu.be/G2ZZoegoX9M)\n+ `DM-VIO` vs `VINS-Mono` on [KAIST VIO dataset](https://github.com/zinuok/kaistviodataset): result [youtube](https://youtu.be/OJddYxLlSqo)\n\n+ `NVIDIA Isaac Elbrus` in real-world: result [youtube](https://youtu.be/V24_xtkscjc)\n    \n\u003cbr\u003e\n\n# 5. VINS on mini onboard PCs\n+ `Qualcomm RB5` vs `Khadas VIM3 Pro`  - [Video](https://youtu.be/hIu1buGkHBA)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengcang%2Fvins-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengcang%2Fvins-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengcang%2Fvins-application/lists"}