This repo includes SVO Pro which is the newest version of Semi-direct Visual Odometry (SVO) developed over the past few years at the Robotics and Perception Group (RPG).

Overview

rpg_svo_pro

This repo includes SVO Pro which is the newest version of Semi-direct Visual Odometry (SVO) developed over the past few years at the Robotics and Perception Group (RPG). SVO was born as a fast and versatile visual front-end as described in the SVO paper (TRO-17). Since then, different extensions have been integrated through various research and industrial projects. SVO Pro features the support of different camera models, active exposure control, a sliding window based backend, and global bundle adjustment with loop closure.

In summary, this repository offers the following functionalities:

  • Visual-odometry: The most recent version of SVO that supports perspective and fisheye/catadioptric cameras in monocular or stereo setup. It also includes active exposure control.
  • Visual-inertial odometry: SVO fronted + visual-inertial sliding window optimization backend (modified from OKVIS)
  • Visual-inertial SLAM: SVO frontend + visual-inertial sliding window optimization backend + globally bundle adjusted map (using iSAM2). The global map is updated in real-time, thanks to iSAM2, and used for localization at frame-rate.
  • Visual-inertial SLAM with loop closure: Loop closures, via DBoW2, are integrated in the global bundle adjustment. Pose graph optimization is also included as a lightweight replacement of the global bundle adjustment.

An example of the visual-inertial SLAM pipeline on EuRoC dataset is below (green points - sliding window; blue points - iSAM2 map):

SVO Pro and its extensions have been used to support various projects at RPG, such as our recent work on multiple camera SLAM, voxel map for visual SLAM and the tight-coupling of global positional measurements into VIO. We hope that the efforts we made can facilitate the research and applications of SLAM and spatial perception.

License

The code is licensed under GPLv3. For commercial use, please contact sdavide [at] ifi [dot] uzh [dot] ch.

The visual-inertial backend is modified from OKVIS, and the license is retained at the beginning of the related files.

Credits

If you use the code in the academic context, please cite:

  • Christian Forster, Matia Pizzoli, Davide Scaramuzza. SVO: Fast Semi-Direct Monocular Visual Odometry. ICRA, 2014. bibtex
  • Christian Forster, Zichao Zhang, Michael Gassner, Manuel Werlberger, Davide Scaramuzza. SVO: Semi-Direct Visual Odometry for Monocular and Multi-Camera Systems. TRO, 2017. bibtex

Additionally, please cite the following papers for the specific extensions you make use of:

  • Fisheye/catadioptric camera extension: Zichao Zhang, Henri Rebecq, Christian Forster, Davide Scaramuzza. Benefit of Large Field-of-View Cameras for Visual Odometry. ICRA, 2016. bibtex
  • Brightness/exposure compensation: Zichao Zhang, Christian Forster, Davide Scaramuzza. Active Exposure Control for Robust Visual Odometry in HDR Environments. ICRA, 2017. bibtex
  • Ceres-based optimization backend: Stefan Leutenegger, Simon Lynen, Michael Bosse, Roland Siegwart, Paul Timothy Furgale. Keyframe-based visual–inertial odometry using nonlinear optimization. IJRR, 2015. bibtex
  • Global map powered by iSAM2: Michael Kaess, Hordur Johannsson, Richard Roberts, Viorela Ila, John Leonard, Frank Dellaert. iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree. IJRR, 2012. bibtex
  • Loop closure: Dorian Gálvez-López and Juan D. Tardós. Bags of Binary Words for Fast Place Recognition in Image Sequences. TRO, 2012. bibtex

Our recent publications that use SVO Pro are:

  • Multiple camera SLAM: Juichung Kuo, Manasi Muglikar, Zichao Zhang, Davide Scaramuzza. Redesigning SLAM for Arbitrary Multi-Camera Systems. ICRA, 2020. bibtex
  • Voxel map for visual SLAM: Manasi Muglikar, Zichao Zhang, Davide Scaramuzza. Voxel Map for Visual SLAM. ICRA, 2020. bibtex
  • Tight-coupling of global positional measurements into VIO: Giovanni Cioffi, Davide Scaramuzza. Tightly-coupled Fusion of Global Positional Measurements in Optimization-based Visual-Inertial Odometry. IROS, 2020. bibtex

Install

The code has been tested on

  • Ubuntu 18.04 with ROS Melodic
  • Ubuntu 20.04 with ROS Noetic

Install dependences

Install catkin tools and vcstools if you haven't done so before. Depending on your operating system, run

# For Ubuntu 18.04 + Melodic
sudo apt-get install python-catkin-tools python-vcstool

or

# For Ubuntu 20.04 + Noetic
sudo apt-get install python3-catkin-tools python3-vcstool python3-osrf-pycommon

Install system dependencies and dependencies for Ceres Solver

# system dep.
sudo apt-get install libglew-dev libopencv-dev libyaml-cpp-dev 
# Ceres dep.
sudo apt-get install libblas-dev liblapack-dev libsuitesparse-dev

Clone and compile

Create a workspace and clone the code (ROS-DISTRO=melodic/noetic):

mkdir svo_ws && cd svo_ws
# see below for the reason for specifying the eigen path
catkin config --init --mkdirs --extend /opt/ros/<ROS-DISTRO> --cmake-args -DCMAKE_BUILD_TYPE=Release -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
cd src
git clone [email protected]:uzh-rpg/rpg_svo_pro_open.git
vcs-import < ./rpg_svo_pro_open/dependencies.yaml
touch minkindr/minkindr_python/CATKIN_IGNORE
# vocabulary for place recognition
cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
cd ../../..

There are two types of builds that you can proceed from here

  1. Build without the global map (front-end + sliding window back-end + loop closure/pose graph)

    catkin build
  2. Build with the global map using iSAM2 (all functionalities)

    First, enable the global map feature

    rm rpg_svo_pro_open/svo_global_map/CATKIN_IGNORE

    and in svo_cmake/cmake/Modules/SvoSetup.cmake

    SET(USE_GLOBAL_MAP TRUE)

    Second, clone GTSAM

    git clone --branch 4.0.3 [email protected]:borglab/gtsam.git

    and modify GTSAM compilation flags a bit:

    # 1. gtsam/CMakelists.txt: use system Eigen
    -option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" OFF)
    +option(GTSAM_USE_SYSTEM_EIGEN "Find and use system-installed Eigen. If 'off', use the one bundled with GTSAM" ON)
    # 2. gtsam/cmake/GtsamBuildTypes: disable avx instruction set
    # below the line `list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-march=native")`
    list_append_cache(GTSAM_COMPILE_OPTIONS_PUBLIC "-mno-avx")

    Using the same version of Eigen helps avoid memory issues. Disabling avx instruction set also helps with some segment faults in our experience (this can be however OS and hardware dependent).

    And finally build the whole workspace

    # building GTSAM may take a while
    catkin build

Instructions

Troubleshooting

  1. Weird building issues after some tinkering. It is recommend to

    • clean your workspace (catkin clean --all at the workspace root) and rebuild your workspace (catkin build)
    • or catkin build --force-cmake

    after your have made changes to CMake files (CMakeLists.txt or *.cmake) to make sure the changes take effect.

    Longer explanation Catkin tools can detect changes in CMake files and re-build affected files only. But since we are working with a multi-package project, some changes may not be detected as desired. For example, changing the building flags in `svo_cmake/cmake/Modules/SvoSetup.cmake` will affect all the packages but the re-compiling may not be done automatically (since the files in each package are not changed). Also, we need to keep the linking (e.g., library version) and compiling flags consistent across different packages. Therefore, unless you are familiar with how the compilation works out, it is the safest to re-build the whole workspace. `catkin build --force-cmake` should also work in most cases.
  2. Compiling/linking error related to OpenCV: find find_package(OpenCV REQUIRED) in the CMakeLists.txt files in each package (in rpg_common, svo_ros, svo_direct, vikit/vikit_common and svo_online_loopclosing) and replace it with

    # Ubuntu 18.04 + Melodic
    find_package(OpenCV 3 REQUIRED)
    # Ubuntu 20.04 + Noetic
    find_package(OpenCV 4 REQUIRED)
    Longer explanation First, ROS is built against OpenCV 3 on Ubuntu 18.04 and OpenCV 4 on Ubuntu 20.04. It is desired to keep the OpenCV version linked in SVO consistent with the ROS one, since in `svo_ros` we need to link everything with ROS. Second, The original `CMakeLists.txt` files will work fine if you only have the default OpenCV installed. But if you have some customized version of OpenCV installed (e.g., from source), it is recommended to explicitly specify the version of OpenCV that should be used (=the version ROS uses) as mentione above.
  3. Visualization issues with the PointCloud2: Using Points to visualize PointCloud2 in RVIZ seems to be problematic in Ubuntu 20.04. We use other visualization types instead of Points per default. However, it is good to be aware of this if you want to customize the visualization.

  4. Pipeline crashes with loop closure enabled: If the pipeline crashes calling svo::loadVoc(), did you forgot to download the vocabulary files as mentioned above?

    cd rpg_svo_pro_open/svo_online_loopclosing/vocabularies && ./download_voc.sh
  5. Inconsistent Eigen versions during compilation: The same Eigen should be used across the whole project (which should be system Eigen, since we are also using ROS). Check whether eigen_catkin and gtsam find the same version of Eigen:

    # for eigen_catkin
    catkin build eigen_catkin --force-cmake --verbose
    # for gtsam
    catkin build gtsam --force-cmake --verbose
    Longer explanation One common pitfall of using Eigen in your projects is have different libraries compiled against different Eigen versions. For SVO, eigen_catkin (https://github.com/ethz-asl/eigen_catkin) is used to keep the Eigen version same, which should be the system one (under /usr/include) on 18.04 and 20.04. For GTSAM, system Eigen is found via a cumstomized cmake file (https://github.com/borglab/gtsam/blob/develop/cmake/FindEigen3.cmake#L66). It searches for `/usr/local/include` first, which may contain Eigen versions that are manually installed. Therefore, we explicitly specifies `EIGEN_INCLUDE_PATH` when configuring the workspace to force GTSAM to find system Eigen. If you still encounter inconsistent Eigen versions, the first thing to check is whether different versions of Eigen are still used.

Acknowledgement

Thanks to Simon Klenk, Manasi Muglikar, Giovanni Cioffi and Javier Hidalgo-Carrió for their valuable help and comments for the open source code.

The work is made possible thanks to the efforts of many contributors from RPG. Apart from the authors listed in the above papers, Titus Cieslewski and Henri Rebecq made significant contributions to the visual front-end. Jeffrey Delmerico made great efforts to apply SVO on different real robots, which in turn helped improve the pipeline. Many PhD and master students and lab engineers have also contributed to the code.

The Ceres-based optimization back-end is based on code developed at Zurich-eye, a spin-off from RPG. Jonathan Huber is the main contributor that integrated the back-end with SVO. Kunal Shrivastava (now CEO of SUIND) developed the loop closure module during his semester project and internship at RPG. The integration of the iSAM2-based global map was developed by Zichao Zhang.

We would like to thank our collaborators at Prophesee for pointing out several bugs in the visual front-end. Part of the code was developed during a funded project with Huawei.

Comments
  • fix a [-Werror=uninitialized] problem

    fix a [-Werror=uninitialized] problem

    Hi, I encountered a [-Werror=uninitialized] compilation problem when compiling svo_common/frame.cpp

    ------------------------------------------------------------------------------------------------
    Profile:                     default
    Extending:        [explicit] /opt/ros/noetic
    Workspace:                   /home/llm/ROS/learning/SVO-Pro
    ------------------------------------------------------------------------------------------------
    Build Space:        [exists] /home/llm/ROS/learning/SVO-Pro/build
    Devel Space:        [exists] /home/llm/ROS/learning/SVO-Pro/devel
    Install Space:      [unused] /home/llm/ROS/learning/SVO-Pro/install
    Log Space:          [exists] /home/llm/ROS/learning/SVO-Pro/logs
    Source Space:       [exists] /home/llm/ROS/learning/SVO-Pro/src
    DESTDIR:            [unused] None
    ------------------------------------------------------------------------------------------------
    Devel Space Layout:          linked
    Install Space Layout:        None
    ------------------------------------------------------------------------------------------------
    Additional CMake Args:       -DCMAKE_BUILD_TYPE=Release -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
    Additional Make Args:        None
    Additional catkin Make Args: None
    Internal Make Job Server:    True
    Cache Job Environments:      False
    ------------------------------------------------------------------------------------------------
    Whitelisted Packages:        None
    Blacklisted Packages:        None
    ------------------------------------------------------------------------------------------------
    Workspace configuration appears valid.
    ------------------------------------------------------------------------------------------------
    [build] Found '36' packages in 0.0 seconds.                                                                                                    
    [build] Package table is up to date.                                                                                                           
    Starting  >>> catkin_simple                                                                                                                    
    Starting  >>> gtsam                                                                                                                            
    Starting  >>> rqt_svo                                                                                                                          
    Starting  >>> svo_msgs                                                                                                                         
    Starting  >>> vikit_py                                                                                                                         
    Finished  <<< vikit_py                                     [ 0.2 seconds ]                                                                     
    Finished  <<< svo_msgs                                     [ 0.3 seconds ]                                                                     
    Finished  <<< catkin_simple                                [ 0.2 seconds ]                                                                     
    Starting  >>> cmake_external_project_catkin                                                                                                    
    Starting  >>> eigen_catkin                                                                                                                     
    Starting  >>> fast                                                                                                                             
    Starting  >>> gflags_catkin                                                                                                                    
    Starting  >>> rpg_trajectory_evaluation                                                                                                        
    Starting  >>> svo_cmake                                                                                                                        
    Finished  <<< rqt_svo                                      [ 0.1 seconds ]                                                                     
    Finished  <<< svo_cmake                                    [ 0.1 seconds ]                                                                     
    Finished  <<< fast                                         [ 0.2 seconds ]                                                                     
    Finished  <<< gflags_catkin                                [ 0.2 seconds ]                                                                     
    Starting  >>> glog_catkin                                                                                                                      
    Finished  <<< rpg_trajectory_evaluation                    [ 0.1 seconds ]                                                                     
    Finished  <<< eigen_catkin                                 [ 0.2 seconds ]                                                                     
    Starting  >>> opengv                                                                                                                           
    Finished  <<< cmake_external_project_catkin                [ 0.2 seconds ]                                                                     
    Starting  >>> dbow2_catkin                                                                                                                     
    Finished  <<< glog_catkin                                  [ 0.2 seconds ]                                                                     
    Starting  >>> ceres_catkin                                                                                                                     
    Starting  >>> eigen_checks                                                                                                                     
    Starting  >>> vikit_solver                                                                                                                     
    Finished  <<< ceres_catkin                                 [ 0.2 seconds ]                                                                     
    Finished  <<< vikit_solver                                 [ 0.2 seconds ]                                                                     
    Finished  <<< opengv                                       [ 0.5 seconds ]                                                                     
    Finished  <<< eigen_checks                                 [ 0.2 seconds ]                                                                     
    Starting  >>> minkindr                                                                                                                      
    Finished  <<< dbow2_catkin                                 [ 1.7 seconds ]                                                                     
    Finished  <<< gtsam                                        [ 3.2 seconds ]                                                                     
    Finished  <<< minkindr                                     [ 0.1 seconds ]                                                                     
    Starting  >>> minkindr_conversions                                                                                                             
    Starting  >>> rpg_common                                                                                                                       
    Starting  >>> vikit_common                                                                                                                     
    Finished  <<< minkindr_conversions                         [ 0.1 seconds ]                                                                     
    Finished  <<< rpg_common                                   [ 0.2 seconds ]                                                            
    Finished  <<< vikit_common                                 [ 10.3 seconds ]                                                                    
    Starting  >>> vikit_cameras                                                                                                                    
    Starting  >>> vikit_ros                                                                                  
    Finished  <<< vikit_ros                                    [ 10.8 seconds ]                                                                    
    Finished  <<< vikit_cameras                                [ 10.7 seconds ]                                                                    
    Starting  >>> svo_common                                                                                                                       
    _______________________________________________________________________________________________________________________________________________
    Errors     << svo_common:make /home/llm/ROS/learning/SVO-Pro/logs/svo_common/build.make.005.log                                                
    In file included from /usr/include/eigen3/Eigen/Core:455,
                     from /home/llm/ROS/learning/SVO-Pro/src/rpg_svo_pro_open/vikit/vikit_common/include/vikit/math_utils.h:6,
                     from /home/llm/ROS/learning/SVO-Pro/src/rpg_svo_pro_open/svo_common/include/svo/common/frame.h:14,
                     from /home/llm/ROS/learning/SVO-Pro/src/rpg_svo_pro_open/svo_common/src/frame.cpp:9:
    /usr/include/eigen3/Eigen/src/Core/DenseStorage.h: In constructor ‘svo::Frame::Frame(const CameraPtr&, const cv::Mat&, int64_t, svo::size_t)’:
    /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:194:66: error: ‘<anonymous>.Eigen::DenseStorage<double, 3, 3, 1, 0>::m_data’ is used uninitialized in this function [-Werror=uninitialized]
      194 |     DenseStorage(const DenseStorage& other) : m_data(other.m_data) {
          |                                                                  ^
    cc1plus: all warnings being treated as errors
    make[2]: *** [CMakeFiles/svo_common.dir/build.make:63:CMakeFiles/svo_common.dir/src/frame.cpp.o] 错误 1
    make[2]: *** 正在等待未完成的任务....
    make[1]: *** [CMakeFiles/Makefile2:425:CMakeFiles/svo_common.dir/all] 错误 2
    make: *** [Makefile:141:all] 错误 2
    cd /home/llm/ROS/learning/SVO-Pro/build/svo_common; catkin build --get-env svo_common | catkin env -si  /usr/bin/make --jobserver-auth=3,4; cd -
    
    ...............................................................................................................................................
    Failed     << svo_common:make                              [ Exited with code 2 ]                                                              
    Failed    <<< svo_common                                   [ 21.4 seconds ]                                                                    
    Abandoned <<< svo_pgo                                      [ Unrelated job failed ]                                                            
    Abandoned <<< svo_online_loopclosing                       [ Unrelated job failed ]                                                            
    Abandoned <<< svo_vio_common                               [ Unrelated job failed ]                                                            
    Abandoned <<< svo_global_map                               [ Unrelated job failed ]                                                            
    Abandoned <<< svo_test_utils                               [ Unrelated job failed ]                                                            
    Abandoned <<< svo_direct                                   [ Unrelated job failed ]                                                            
    Abandoned <<< svo_img_align                                [ Unrelated job failed ]                                                            
    Abandoned <<< svo_tracker                                  [ Unrelated job failed ]                                                            
    Abandoned <<< svo                                          [ Unrelated job failed ]                                                            
    Abandoned <<< svo_ceres_backend                            [ Unrelated job failed ]                                                            
    Abandoned <<< svo_ros                                      [ Unrelated job failed ]                                                            
    Abandoned <<< svo_benchmarking                             [ Unrelated job failed ]                                                            
    [build] Summary: 23 of 36 packages succeeded.                                                                                                  
    [build]   Ignored:   None.                                                                                                                     
    [build]   Warnings:  4 packages succeeded with warnings.                                                                                       
    [build]   Abandoned: 12 packages were abandoned.                                                                                               
    [build]   Failed:    1 packages failed.                                                                                                        
    [build] Runtime: 46.8 seconds total.
    

    I fixed this problem by modifing the "Frame" class constructors.

    Frame::Frame(
        const CameraPtr& cam,
        const cv::Mat& img,
        const int64_t timestamp_ns,
        size_t n_pyr_levels)
      : id_(frame_counter_++) // TEMPORARY
      , cam_(cam)
      , key_pts_(5, std::make_pair(-1, BearingVector::Zero()))
      , timestamp_(timestamp_ns)
    {
      initFrame(img, n_pyr_levels);
    }
    
    Frame::Frame(
        const int id,
        const int64_t timestamp_ns,
        const CameraPtr& cam,
        const Transformation& T_world_cam)
      : id_(id)
      , cam_(cam)
      , T_f_w_(T_world_cam.inverse())
      , key_pts_(5, std::make_pair(-1, BearingVector::Zero()))
      , timestamp_(timestamp_ns)
    {}
    

    please check if these modifications is right.

    opened by LiuLimingCode 1
  • mask file was missing from fisheye example

    mask file was missing from fisheye example

    I added the mask file that was missing from the fisheye example. Running the example failed without the image present. I added it to svo_ros/param/calib which is where it was in the rpg_svo_example repo

    opened by sudo-robot-destroy 1
  • svo_ros compilatoin failed: variable templates only available with -std=c++14 or -std=gnu++14

    svo_ros compilatoin failed: variable templates only available with -std=c++14 or -std=gnu++14

    Hi.

    I am trying to compile svo_ros inside a docker container on a Jetson Xavier NX, but I am getting the following error

    Errors << svo_ros:make /root/catkin_ws/logs/svo_ros/build.make.000.log         
    In file included from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/include/svo_ros/visualizer.h:23:0,
                     from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/src/visualizer.cpp:6:
    /opt/ros/melodic/include/pcl_ros/point_cloud.h:303:27: error: variable templates only available with -std=c++14 or -std=gnu++14 [-Werror]
         constexpr static bool pcl_uses_boost = true;
                               ^~~~~~~~~~~~~~
    In file included from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/include/svo_ros/visualizer.h:23:0,
                     from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/src/svo_interface.cpp:6:
    /opt/ros/melodic/include/pcl_ros/point_cloud.h:303:27: error: variable templates only available with -std=c++14 or -std=gnu++14 [-Werror]
         constexpr static bool pcl_uses_boost = true;
                               ^~~~~~~~~~~~~~
    In file included from /root/catkin_ws/src/rpg_svo_pro_open/svo_ceres_backend/include/svo/ceres_backend_publisher.hpp:10:0,
                     from /root/catkin_ws/src/rpg_svo_pro_open/svo_ceres_backend/include/svo/ceres_backend_interface.hpp:11,
                     from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/include/svo_ros/ceres_backend_factory.h:5,
                     from /root/catkin_ws/src/rpg_svo_pro_open/svo_ros/src/ceres_backend_factory.cpp:1:
    /opt/ros/melodic/include/pcl_ros/point_cloud.h:303:27: error: variable templates only available with -std=c++14 or -std=gnu++14 [-Werror]
         constexpr static bool pcl_uses_boost = true;
                               ^~~~~~~~~~~~~~
    cc1plus: all warnings being treated as errors
    make[2]: *** [CMakeFiles/svo_ros.dir/src/ceres_backend_factory.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    cc1plus: all warnings being treated as errors
    make[2]: *** [CMakeFiles/svo_ros.dir/src/visualizer.cpp.o] Error 1
    cc1plus: all warnings being treated as errors
    make[2]: *** [CMakeFiles/svo_ros.dir/src/svo_interface.cpp.o] Error 1
    
    make[1]: *** [CMakeFiles/svo_ros.dir/all] Error 2
    make: *** [all] Error 2
    cd /root/catkin_ws/build/svo_ros; catkin build --get-env svo_ros | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -
    

    Any idea on what could be the problem ?

    Using Ubuntu 18 + ROS Melodic,cmake version 3.10.2, g++ (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0 Thanks in advance.

    opened by mzahana 1
  • Compilation in arm64 fails because Vikit

    Compilation in arm64 fails because Vikit

    Errors << vikit_common:make /home/imother/svo_ws/logs/vikit_common/build.make.000.log c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-mssse3’ c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? c++: error: unrecognized command line option ‘-mssse3’ c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-mssse3’ c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-mssse3’ c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? c++: error: unrecognized command line option ‘-mssse3’ make[2]: *** [CMakeFiles/vikit_common.dir/build.make:104: CMakeFiles/vikit_common.dir/src/performance_monitor.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? make[2]: *** [CMakeFiles/vikit_common.dir/build.make:90: CMakeFiles/vikit_common.dir/src/math_utils.cpp.o] Error 1 c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? c++: error: unrecognized command line option ‘-mmmx’ c++: error: unrecognized command line option ‘-msse’; did you mean ‘-fdse’? c++: error: unrecognized command line option ‘-msse2’ c++: error: unrecognized command line option ‘-msse3’ c++: error: unrecognized command line option ‘-mssse3’ c++: error: unrecognized command line option ‘-mno-avx’; did you mean ‘-Wno-abi’? make[2]: *** [CMakeFiles/vikit_common.dir/build.make:76: CMakeFiles/vikit_common.dir/src/homography.cpp.o] Error 1

    opened by FPSychotic 1
  • Installation error caused by yaml-cpp

    Installation error caused by yaml-cpp

    Was not able to build everything, since the yaml-cpp files weren't compatible. Example error message:

    undefined reference to YAML::detail::

    The solution was to downgrade the yaml installation. The working version was "yaml-cpp-0.6.0" With that version, everything compiled fine

    opened by TheFrey222 0
  • global map run EuRoc MH01  error about gtsam,help,thank you!

    global map run EuRoc MH01 error about gtsam,help,thank you!

    when i run MH01 euroc dataser use svo pro,it happens error like this,have you encount? Indeterminant linear system detected while working near variable 8646911284551353336 (Symbol: x1016).

    Thrown when a linear system is ill-posed. The most common cause for this error is having underconstrained variables. Mathematically, the system is underdetermined. See the GTSAM Doxygen documentation at http://borg.cc.gatech.edu/ on gtsam::IndeterminantLinearSystemException for more information. crash in update: 4 terminate called after throwing an instance of 'gtsam::IndeterminantLinearSystemException' what():
    Indeterminant linear system detected while working near variable 8646911284551353336 (Symbol: x1016).

    Thrown when a linear system is ill-posed. The most common cause for this error is having underconstrained variables. Mathematically, the system is underdetermined. See the GTSAM Doxygen documentation at http://borg.cc.gatech.edu/ on gtsam::IndeterminantLinearSystemException for more information.

    opened by DEARsunshine 0
  • Minimum computation requirement

    Minimum computation requirement

    Dear sir, Thank you for opensourcing great piece of work i know it may be too much to ask but will it be possible to run svo_pro in jetson nano single board computer especially the vio ceres backend. Thank you

    opened by poudyalbot 0
  • Does the current version work with Multi-Camera arrays?

    Does the current version work with Multi-Camera arrays?

    Hello Authors (@Manasi94 ), I am interested to use SVO_PRO for performing SLAM on multi-camera data (>2). I have looked into the code and tried to make it work by extending on the mono and stereo setups and using existing code stubs. But, it is failing at the initialization stage. When I probed deeper into the code I found that the Initialization method for camera arrays (ArrayInitGeometric and ArrayInitOptimization) are nlot implemented. Particularly the addFrameBundle() methods of these init classes have commented code and some methods that dont exisit (eg, trackBundleFeatures). Is there a way for the code to work with multi-camera arrays? or is it a future release? Any info on this would be great!

    Thanks, Pushyami

    opened by PushyamiKaveti 0
  • Installation Error

    Installation Error

    I followed the installation guide in the documentation these are the following error i found:

    • The git clone link tells there is public key error, so i had to clone it and it solved
    • The dependencies .yaml gives me the same public key error, though I have to search for induvial repos, is there a way it can be done automatically?
    opened by siddarth09 0
  • Which part of the code contains the 'adaptive exposure control

    Which part of the code contains the 'adaptive exposure control"

    Hi,

    I'm working on the active exposure control algorithm in Zichao Zhang's ICRA 2017 paper and I find this repo might contain the implementation of this algorithm. However, I cannot find it in this repo. Could you please point out where I can find the code for this algorithm in this repo?

    Best Taoyi

    opened by wtyytw0 2
  • How to transform pose from camera frame to world frame?

    How to transform pose from camera frame to world frame?

    topic /pose_cam/0 outputs camera pose obviously under camera frame. This note says that "The camera position in world coordinates must be obtained by inversion". However in visualizer.cpp where topic /pose_cam/0 is published, I tried to adapt inversion, but nothing changed. This is how I code: `void Visualizer::publishCameraPoses(const FrameBundlePtr& frame_bundle, const int64_t timestamp_nanoseconds) { vk::output_helper::publishTfTransform( frame_bundle->at(0)->T_cam_world(), ros::Time().fromNSec(timestamp_nanoseconds), "cam_pos", kWorldFrame, br_);

    for (size_t i = 0; i < frame_bundle->size(); ++i) { // if (pub_cam_poses_.at(i).getNumSubscribers() == 0) // return; VLOG(100) << "Publish camera pose " << i;

    const FramePtr& frame = frame_bundle->at(i);
    Transformation T_world_from_cam(frame->T_f_w_.inverse());
    Eigen::Quaterniond q =
        T_world_from_cam.getRotation().toImplementation();
    Eigen::Vector3d p = T_world_from_cam.getPosition();
    geometry_msgs::PoseStampedPtr msg_pose(new geometry_msgs::PoseStamped);
    msg_pose->header.seq = trace_id_;
    msg_pose->header.stamp = ros::Time().fromNSec(timestamp_nanoseconds);
    msg_pose->header.frame_id = "cam" + std::to_string(i);
    msg_pose->pose.position.x = p[0];
    msg_pose->pose.position.y = p[1];
    msg_pose->pose.position.z = p[2];
    msg_pose->pose.orientation.x = q.x();
    msg_pose->pose.orientation.y = q.y();
    msg_pose->pose.orientation.z = q.z();
    msg_pose->pose.orientation.w = q.w();
    pub_cam_poses_.at(i).publish(msg_pose);
    

    } }`

    And, if I get it right, its original code that uses function T_world_cam() performed transformation already. So why the outputs were not so? And it seems like publisher of /pose_cam/0 only appeared in visualizer.cpp.

    How to transform the camera pose to world frame? Which file should I edit? Or which topic should I look up to?

    opened by Tina-Lau 0
  • svo node died

    svo node died

    when I run the code of "roslaunch svo_ros run_from_bag.launch cam_name:=svo_test_pinhole", svo node died. Why?????

    [svo-2] process has died [pid 9465, exit code -11, cmd /home/han/Desktop/code/svo_ws/devel/lib/svo_ros/svo_node __name:=svo __log:=/home/han/.ros/log/cae6b4da-e626-11ec-81b1-54bf643636fb/svo-2.log]. log file: /home/han/.ros/log/cae6b4da-e626-11ec-81b1-54bf643636fb/svo-2*.log

    opened by HanG-CS 1
Owner
Robotics and Perception Group
Robotics and Perception Group
I Found these Xenomai 3 exercises I completed and wrote up for a project a few years ago

I Found these Xenomai 3 exercises I completed and wrote up for a project a few years ago. Decided to put it up onto git in case anyone else finds this useful

null 3 Apr 24, 2022
Decentralized architecture for loss tolerant semi-autonomous robotics

gestalt-arch Decentralized architecture for loss tolerant semi-autonomous robotics Objective We demonstrate a decentralized robot control architecture

null 4 Dec 18, 2021
RRxIO - Robust Radar Visual/Thermal Inertial Odometry: Robust and accurate state estimation even in challenging visual conditions.

RRxIO - Robust Radar Visual/Thermal Inertial Odometry RRxIO offers robust and accurate state estimation even in challenging visual conditions. RRxIO c

Christopher Doer 63 Dec 20, 2022
A distribution of the cFS that includes the cfe-eds-framework which includes NASA's core Flight Executive(cFE) and CCSDS Electronic Data Sheets(EDS) support.

core Flight System(cFS) Application Toolkit(cFSAT) - Beta Release A distribution of the cFS that includes the cfe-eds-framework which includes NASA's

OpenSatKit 13 Jul 3, 2022
Best practices, conventions, and tricks for ROS. Do you want to become a robotics master? Then consider graduating or working at the Robotics Systems Lab at ETH in Zürich!

ROS Best Practices, Conventions and Tricks Best practices for ROS2 in the making. See the Foxy branch in the meanwhile. This is a loose collection of

Robotic Systems Lab - Legged Robotics at ETH Zürich 1.2k Jan 5, 2023
The QPEP-Enhanced Direct Sparse Odometry (DSO) with Loop Closure

QPEP-DSO: Quadratic Pose Estimation Problems (QPEP) Enhanced Direct Sparse Odometry with Loop Closure Code Arch The codes are motivated by DSO (https:

Jin Wu 8 Jun 23, 2022
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds

Direct LiDAR Odometry: Fast Localization with Dense Point Clouds DLO is a lightweight and computationally-efficient frontend LiDAR odometry solution w

VECTR at UCLA 369 Dec 30, 2022
Current and past resources for the UNSW courses I have tutored.

James' tutoring resources The home for the code/solutions/etc. from my tutorials, as well as any other resources as I see fit. Table of contents Cours

James Davidson 19 Oct 4, 2022
JeVois-Pro People Counter : Implement people counter on JeVois-Pro Deep Learning Smart Camera

JeVois-Pro People Counter Refer to the OpenCV People Counter article to implement a people counter on the JeVois-Pro Deep Learning Smart Camera. First

On-Device AI Co., Ltd. 1 Nov 10, 2021
LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping

LVI-SAM This repository contains code for a lidar-visual-inertial odometry and mapping system, which combines the advantages of LIO-SAM and Vins-Mono

Tixiao Shan 1.1k Jan 8, 2023
VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation

VID-Fusion VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation Authors: Ziming Ding , Tiankai Yang, Kunyi Zhan

ZJU FAST Lab 86 Nov 18, 2022
Continuous-Time Spline Visual-Inertial Odometry

Continuous-Time Spline Visual-Inertial Odometry Related Publications Direct Sparse Odometry, J. Engel, V. Koltun, D. Cremers, In IEEE Transactions on

Minnesota Interactive Robotics and Vision Laboratory 71 Dec 7, 2022
Visual-inertial-wheel fusion odometry, better performance in scenes with drastic changes in light

VIW-Fusion An visual-inertial-wheel fusion odometry VIW-Fusion is an optimization-based viusla-inertial-wheel fusion odometry, which is developed as a

庄庭达 261 Dec 30, 2022
Mario Kart 7 semi-primary exploit for the Nintendo 3DS.

kartdlphax kartdlphax is a semiprimary exploit for the download play mode of Mario Kart 7. It can be used to run an userland payload in an unmodified

PabloMK7 44 Jan 3, 2023
A Semi Automatic Chessboard Corner Extraction Class

This program realizes semi-automatic chessboard corner extraction, the interface is simple, and the accuracy of corner extraction is guaranteed.

null 1 Oct 6, 2021
A tool for [(semi-){un-(tethered jailbreak)}] of iOS 10.3.x 32-bit devices with checkm8 BootROM exploit.

p0insettia A tool for [(semi-){un-(tethered jailbreak)}] of iOS 10.3.4 32-bit devices iPhone 5 with checkm8 BootROM exploit. Note All at your own risk

dora2ios 30 Jan 1, 2023
A comprehensive guide to 50 years of evolution of strict C programming, a tribute to Dennis Ritchie's language

42 School Cheat Sheet by agavrel ?? Intended for 42 alumni, current students and candidates Truth can only be found in one place: the code – Robert C.

Antonin GAVREL 1.1k Jan 3, 2023
New lateral movement technique by abusing Windows Perception Simulation Service to achieve DLL hijacking code execution.

BOF - Lateral movement technique by abusing Windows Perception Simulation Service to achieve DLL hijacking ServiceMove is a POC code for an interestin

Chris Au 190 Nov 14, 2022
Multi-sensor perception for autonomous vehicles

Multi-Sensor Fusion for Perception -- 多传感器融合感知 Maintained by Ge Yao, [email protected] Up & Running Overview 本Repo为基于ROS melodic @ Ubuntu 18.04的Mul

Ge Yao 5 Dec 2, 2022