Visual-inertial-wheel fusion odometry, better performance in scenes with drastic changes in light

Overview

VIW-Fusion

An visual-inertial-wheel fusion odometry

VIW-Fusion is an optimization-based viusla-inertial-wheel fusion odometry, which is developed as a part of my master thesis. First of all, I need to thank HKUST Aerial Robotics Group led by Prof. Shaojie Shen for their outstanding work VINS-Fusion. VIW-Fusion is developed based on VINS-Fusion. Features:

  • multiple sensors support (stereo cameras+IMU+wheel / mono camera+IMU+wheel)
  • wheel enhanced visual-inertial initialization
  • online spatial calibration (transformation between camera, IMU and wheel)
  • online wheel intrinsic calibration
  • online temporal calibration (time offset between camera, IMU and wheel)
  • plane constraint

Performance in the scene with challenge light

We tested Mono VIWO in scenes with drastic changes in light, and the parameters between different scenes remained unchanged. The video is below, if you can't access youtube, please try bilibili: visual-inertial-wheel fusion odometry We compare the VIWO with Mono VIO. The trajectory estimated by Mono VIO is completely different from the real trajectory, while the trajectory estimated by Mono VIWO is in good agreement with the real trajectory.

We align the trajectory with the entrance door and exit door to further compare VIWO and Stereo VIO, the trajectory estimated by Mono VIWO is also more reasonable.

-------------------- separation line----------------------------

VINS-Fusion

An optimization-based multi-sensor state estimator

VINS-Fusion is an optimization-based multi-sensor state estimator, which achieves accurate self-localization for autonomous applications (drones, cars, and AR/VR). VINS-Fusion is an extension of VINS-Mono, which supports multiple visual-inertial sensor types (mono camera + IMU, stereo cameras + IMU, even stereo cameras only). We also show a toy example of fusing VINS with GPS. Features:

  • multiple sensors support (stereo cameras / mono camera+IMU / stereo cameras+IMU)
  • online spatial calibration (transformation between camera and IMU)
  • online temporal calibration (time offset between camera and IMU)
  • visual loop closure

We are the top open-sourced stereo algorithm on KITTI Odometry Benchmark (12.Jan.2019).

Authors: Tong Qin, Shaozu Cao, Jie Pan, Peiliang Li, and Shaojie Shen from the Aerial Robotics Group, HKUST

Videos:

VINS

Related Paper: (paper is not exactly same with code)

  • Online Temporal Calibration for Monocular Visual-Inertial Systems, Tong Qin, Shaojie Shen, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS, 2018), best student paper award pdf

  • VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator, Tong Qin, Peiliang Li, Shaojie Shen, IEEE Transactions on Robotics pdf

If you use VINS-Fusion for your academic research, please cite our related papers. bib

1. Prerequisites

1.1 Ubuntu and ROS

Ubuntu 64-bit 16.04 or 18.04. ROS Kinetic or Melodic. ROS Installation

1.2. Ceres Solver

Follow Ceres Installation.

2. Build VINS-Fusion

Clone the repository and catkin_make:

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

(if you fail in this step, try to find another computer with clean system or reinstall Ubuntu and ROS)

3. EuRoC Example

Download EuRoC MAV Dataset to YOUR_DATASET_FOLDER. Take MH_01 for example, you can run VINS-Fusion with three sensor types (monocular camera + IMU, stereo cameras + IMU and stereo cameras). Open four terminals, run vins odometry, visual loop closure(optional), rviz and play the bag file respectively. Green path is VIO odometry; red path is odometry under visual loop closure.

3.1 Monocualr camera + IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

3.2 Stereo cameras + IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

3.3 Stereo cameras

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
    rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

4. KITTI Example

4.1 KITTI Odometry (Stereo)

Download KITTI Odometry dataset to YOUR_DATASET_FOLDER. Take sequences 00 for example, Open two terminals, run vins and rviz respectively. (We evaluated odometry on KITTI benchmark without loop closure funtion)

    roslaunch vins vins_rviz.launch
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml
    rosrun vins kitti_odom_test ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/ 

4.2 KITTI GPS Fusion (Stereo + GPS)

Download KITTI raw dataset to YOUR_DATASET_FOLDER. Take 2011_10_03_drive_0027_synced for example. Open three terminals, run vins, global fusion and rviz respectively. Green path is VIO odometry; blue path is odometry under GPS global fusion.

    roslaunch vins vins_rviz.launch
    rosrun vins kitti_gps_test ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/ 
    rosrun global_fusion global_fusion_node

5. VINS-Fusion on car demonstration

Download car bag to YOUR_DATASET_FOLDER. Open four terminals, run vins odometry, visual loop closure(optional), rviz and play the bag file respectively. Green path is VIO odometry; red path is odometry under visual loop closure.

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/vi_car/vi_car.yaml 
    rosbag play YOUR_DATASET_FOLDER/car.bag

6. Run with your devices

VIO is not only a software algorithm, it heavily relies on hardware quality. For beginners, we recommend you to run VIO with professional equipment, which contains global shutter cameras and hardware synchronization.

6.1 Configuration file

Write a config file for your device. You can take config files of EuRoC and KITTI as the example.

6.2 Camera calibration

VINS-Fusion support several camera models (pinhole, mei, equidistant). You can use camera model to calibrate your cameras. We put some example data under /camera_models/calibrationdata to tell you how to calibrate.

cd ~/catkin_ws/src/VINS-Fusion/camera_models/camera_calib_example/
rosrun camera_models Calibrations -w 12 -h 8 -s 80 -i calibrationdata --camera-model pinhole

7. Docker Support

To further facilitate the building process, we add docker in our code. Docker environment is like a sandbox, thus makes our code environment-independent. To run with docker, first make sure ros and docker are installed on your machine. Then add your account to docker group by sudo usermod -aG docker $YOUR_USER_NAME. Relaunch the terminal or logout and re-login if you get Permission denied error, type:

cd ~/catkin_ws/src/VINS-Fusion/docker
make build

Note that the docker building process may take a while depends on your network and machine. After VINS-Fusion successfully built, you can run vins estimator with script run.sh. Script run.sh can take several flags and arguments. Flag -k means KITTI, -l represents loop fusion, and -g stands for global fusion. You can get the usage details by ./run.sh -h. Here are some examples with this script:

# Euroc Monocualr camera + IMU
./run.sh ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

# Euroc Stereo cameras + IMU with loop fusion
./run.sh -l ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml

# KITTI Odometry (Stereo)
./run.sh -k ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

# KITTI Odometry (Stereo) with loop fusion
./run.sh -kl ~/catkin_ws/src/VINS-Fusion/config/kitti_odom/kitti_config00-02.yaml YOUR_DATASET_FOLDER/sequences/00/

#  KITTI GPS Fusion (Stereo + GPS)
./run.sh -kg ~/catkin_ws/src/VINS-Fusion/config/kitti_raw/kitti_10_03_config.yaml YOUR_DATASET_FOLDER/2011_10_03_drive_0027_sync/

In Euroc cases, you need open another terminal and play your bag file. If you need modify the code, simply re-run ./run.sh with proper auguments after your changes.

8. Acknowledgements

We use ceres solver for non-linear optimization and DBoW2 for loop detection, a generic camera model and GeographicLib.

9. License

The source code is released under GPLv3 license.

We are still working on improving the code reliability. For any technical issues, please contact Tong Qin <qintonguavATgmail.com>.

For commercial inquiries, please contact Shaojie Shen <eeshaojieATust.hk>.

You might also like...
Tightly coupled GNSS-Visual-Inertial system for locally smooth and globally consistent state estimation in complex environment.
Tightly coupled GNSS-Visual-Inertial system for locally smooth and globally consistent state estimation in complex environment.

GVINS GVINS: Tightly Coupled GNSS-Visual-Inertial Fusion for Smooth and Consistent State Estimation. paper link Authors: Shaozu CAO, Xiuyuan LU and Sh

A dataset containing synchronized visual, inertial and GNSS raw measurements.
A dataset containing synchronized visual, inertial and GNSS raw measurements.

GVINS-Dataset Author/Maintainer: CAO Shaozu (shaozu.cao AT gmail.com), LU Xiuyuan (xluaj AT connect.ust.hk) This repository hosts dataset collected du

This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.
This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.

livox_camera_calib livox_camera_calib is a robust, high accuracy extrinsic calibration tool between high resolution LiDAR (e.g. Livox) and camera in t

Decoding light morse code with a light dependent resistor and Arduino board
Decoding light morse code with a light dependent resistor and Arduino board

Morse decoder The project's idea is very simple, the Arduino program has the responsibility to upload the sensor's data to the USB serial port.

My old heavily modified version of bigbase v1, it has an impulse-like scrollbar, ytd header loader, Vector3 fix + gamestate fix and some other misc changes!
My old heavily modified version of bigbase v1, it has an impulse-like scrollbar, ytd header loader, Vector3 fix + gamestate fix and some other misc changes!

Old Bigbase V1 UI This is my old ui for bigbase v1 but i dont need it anymore because the dev of solar mod menu stole it, and the new paragon menu (Fr

My version of psxfunkin with new changes like new story mode, new options,etc
My version of psxfunkin with new changes like new story mode, new options,etc

PSXFunkin Friday Night Funkin' on the PSX LOL Compilation Refer to COMPILE.md here Characters Igor Ver added new characters Like XmasGF,Monster and mu

Visual Leak Detector for Visual C++ 2008-2015

Visual Leak Detector Introduction Visual C++ provides built-in memory leak detection, but its capabilities are minimal at best. This memory leak detec

Fisheye version of VINS-Fusion
Fisheye version of VINS-Fusion

VINS-Fisheye This repository is a Fisheye version of VINS-Fusion with GPU and Visionworks acceleration. It can run on Nvidia TX2 in real-time, also pr

Hands-On example code for Sensor Fusion and Autonomous Driving Stack based on Autoware
Hands-On example code for Sensor Fusion and Autonomous Driving Stack based on Autoware

Autoware "Hands-On" Stanford Lecture AA274 / Graz University of Technology M. Schratter, J. Zubaca, K. Mautner-Lassnig, T. Renzler, M. Kirchengast, S.

Comments
  • 轮速计参数

    轮速计参数

    您好!首先非常感谢您的工作并且进行开源,受益匪浅。我是SLAM小白,关于yaml文件中轮速计的相关参数不太明白,比如: #plane noise #mono:0.01 stereo:0.005 roll_n: 0.01 #mono:0.01 stereo:0.005 pitch_n: 0.01 #mono:0.05 stereo:0.025 zpw_n: 0.01

    wheel intrinsic

    sx: 1.0 sy: 1.0 sw: 1.0 这些是什么参数,表示的是什么意思?您是通过什么标定方法得到的呢? 您的这个开源程序有对应的参考论文吗?期待您的回复

    opened by 2017DEVIL 9
  • Question about download dataset_viwo datasets from google cloud storage

    Question about download dataset_viwo datasets from google cloud storage

    I can't download the ridgeback_light.bag and ridgeback_dark.bag from google cloud storage "https://drive.google.com/drive/folders/1m2msbo3DRGhtINtDE47v-1blyJc0RK0E", "web error" or "download is forbidden" information is usually hinted and the download is stopped, so would you like to share the datasets in baidu cloud storage or other link which can be download easily for us? Thank you very much.

    opened by Jaxon2018 1
  • 编译问题

    编译问题

    您好,在编译您的代码是出现了下面的编译问题是什么原因?In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:62:17: error: expected nested-name-specifier before ‘SE3’ inline typename SE3::Tangent se3_logd(const SE3 &se3) { ^~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:62:20: error: expected initializer before ‘<’ token inline typename SE3::Tangent se3_logd(const SE3 &se3) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:82:8: error: ‘Sophus::SE3 {aka Sophus::SE3Group}’ is not a template inline SE3 se3_expd( ^~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:83:52: warning: ‘Sophus::SE3’ is deprecated [-Wdeprecated-declarations] const Eigen::MatrixBase &upsilon_omega) { ^ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:42:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /opt/ros/kinetic/include/sophus/se3.hpp:35:26: note: declared here typedef SE3Group SE3 EIGEN_DEPRECATED; ^~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘Sophus::SE3 Sophus::se3_expd(const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:89:10: error: ‘Sophus::SE3 {aka Sophus::SE3Group}’ is not a template return SE3(SO3::exp(upsilon_omega.template tail<3>()), ^~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:89:22: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template return SE3(SO3::exp(upsilon_omega.template tail<3>()), ^~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: At global scope: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:106:17: error: expected nested-name-specifier before ‘Sim3’ inline typename Sim3::Tangent sim3_logd(const Sim3 &sim3) { ^~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:106:21: error: expected initializer before ‘<’ token inline typename Sim3::Tangent sim3_logd(const Sim3 &sim3) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:128:8: error: ‘Sophus::Sim3 {aka Sophus::Sim3Group}’ is not a template inline Sim3 sim3_expd( ^~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:129:58: warning: ‘Sophus::Sim3’ is deprecated [-Wdeprecated-declarations] const Eigen::MatrixBase &upsilon_omega_sigma) { ^ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:43:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /opt/ros/kinetic/include/sophus/sim3.hpp:34:27: note: declared here typedef Sim3Group Sim3 EIGEN_DEPRECATED; ^~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘Sophus::Sim3 Sophus::sim3_expd(const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:135:10: error: ‘Sophus::Sim3 {aka Sophus::Sim3Group}’ is not a template return Sim3( ^~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:136:7: error: ‘RxSO3’ was not declared in this scope RxSO3::exp(upsilon_omega_sigma.template tail<4>()), ^~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:136:7: note: suggested alternative: ‘RxSO3f’ RxSO3::exp(upsilon_omega_sigma.template tail<4>()), ^~~~~ RxSO3f /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:135:22: error: expected primary-expression before ‘(’ token return Sim3( ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:136:19: error: expected primary-expression before ‘>’ token RxSO3::exp(upsilon_omega_sigma.template tail<4>()), ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianSO3(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:168:41: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template Eigen::Matrix<Scalar, 3, 3> phi_hat = Sophus::SO3::hat(phi); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:173:27: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:173:27: note: suggested alternative: ‘SophusConstants’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:173:43: error: expected primary-expression before ‘>’ token if (phi_norm2 > Sophus::Constants::epsilon()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:173:46: error: ‘::epsilon’ has not been declared if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:173:46: note: suggested alternatives: In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false_& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianInvSO3(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:208:41: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template Eigen::Matrix<Scalar, 3, 3> phi_hat = Sophus::SO3::hat(phi); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:214:27: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:214:27: note: suggested alternative: ‘SophusConstants’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:214:43: error: expected primary-expression before ‘>’ token if (phi_norm2 > Sophus::Constants::epsilon()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:214:46: error: ‘::epsilon’ has not been declared if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:214:46: note: suggested alternatives: In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false_& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:45:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:46: error: ‘Constants’ is not a member of ‘Sophus’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:46: note: suggested alternative: ‘SophusConstants’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:62: error: expected primary-expression before ‘>’ token BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:65: error: ‘::epsilon’ has not been declared BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) _builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:65: note: suggested alternatives: BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:222:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:224:35: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:224:35: note: suggested alternative: ‘SophusConstants’ if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:224:51: error: expected primary-expression before ‘>’ token if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:224:54: error: ‘::epsilonSqrt’ has not been declared if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::leftJacobianSO3(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:346:41: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template Eigen::Matrix<Scalar, 3, 3> phi_hat = Sophus::SO3::hat(phi); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:351:27: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:351:27: note: suggested alternative: ‘SophusConstants’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:351:43: error: expected primary-expression before ‘>’ token if (phi_norm2 > Sophus::Constants::epsilon()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:351:46: error: ‘::epsilon’ has not been declared if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:351:46: note: suggested alternatives: In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::leftJacobianInvSO3(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:386:41: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template Eigen::Matrix<Scalar, 3, 3> phi_hat = Sophus::SO3::hat(phi); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:392:27: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:392:27: note: suggested alternative: ‘SophusConstants’ if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:392:43: error: expected primary-expression before ‘>’ token if (phi_norm2 > Sophus::Constants::epsilon()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:392:46: error: ‘::epsilon’ has not been declared if (phi_norm2 > Sophus::Constants::epsilon()) { ^~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:392:46: note: suggested alternatives: In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:45:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:46: error: ‘Constants’ is not a member of ‘Sophus’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:46: note: suggested alternative: ‘SophusConstants’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:62: error: expected primary-expression before ‘>’ token BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:65: error: ‘::epsilon’ has not been declared BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) __builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:65: note: suggested alternatives: BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/assert.h:66:43: note: in definition of macro ‘BASALT_LIKELY’ #define BASALT_LIKELY(x) _builtin_expect(x, 1) ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:400:5: note: in expansion of macro ‘BASALT_ASSERT’ BASALT_ASSERT(phi_norm <= M_PI + Sophus::Constants::epsilon()); ^ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:255:10: note: ‘boost::math::tools::epsilon’ inline T epsilon(BOOST_MATH_EXPLICIT_TEMPLATE_TYPE_SPEC(T)) ^~~~~~~ In file included from /usr/include/boost/math/policies/error_handling.hpp:20:0, from /usr/include/boost/math/special_functions/round.hpp:14, from /opt/ros/kinetic/include/ros/time.h:58, from /opt/ros/kinetic/include/ros/serialization.h:34, from /opt/ros/kinetic/include/std_msgs/Header.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:14, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /usr/include/boost/math/tools/precision.hpp:191:10: note: ‘boost::math::tools::detail::epsilon’ inline T epsilon(const mpl::false& BOOST_MATH_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) ^~~~~~~ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/wheel_integration_base.h:13:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/initial_alignment.h:20, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:29, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:402:35: error: ‘Constants’ is not a member of ‘Sophus’ if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:402:35: note: suggested alternative: ‘SophusConstants’ if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~ SophusConstants /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:402:51: error: expected primary-expression before ‘>’ token if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:402:54: error: ‘::epsilonSqrt’ has not been declared if (phi_norm < M_PI - Sophus::Constants::epsilonSqrt()) { ^~~~~~~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianSE3Decoupled(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:443:7: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template Sophus::SO3::exp(omega).inverse().matrix(); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianInvSE3Decoupled(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:473:38: error: ‘Sophus::SO3 {aka Sophus::SO3Group}’ is not a template J.template topLeftCorner<3, 3>() = Sophus::SO3::exp(omega).matrix(); ^~~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianSim3Decoupled(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:503:15: error: ‘RxSO3’ is not a member of ‘Sophus’ Sophus::RxSO3::exp(omega).inverse().matrix(); ^~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:503:15: note: suggested alternative: ‘RxSO3f’ Sophus::RxSO3::exp(omega).inverse().matrix(); ^~~~~ RxSO3f /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:503:27: error: expected primary-expression before ‘>’ token Sophus::RxSO3::exp(omega).inverse().matrix(); ^ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp: In function ‘void Sophus::rightJacobianInvSim3Decoupled(const Eigen::MatrixBase&, const Eigen::MatrixBase&)’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:534:46: error: ‘RxSO3’ is not a member of ‘Sophus’ J.template topLeftCorner<3, 3>() = Sophus::RxSO3::exp(omega).matrix(); ^~~~~ /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:534:46: note: suggested alternative: ‘RxSO3f’ J.template topLeftCorner<3, 3>() = Sophus::RxSO3::exp(omega).matrix(); ^~~~~ RxSO3f /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../initial/../factor/../utility/sophus_utils.hpp:534:58: error: expected primary-expression before ‘>’ token J.template topLeftCorner<3, 3>() = Sophus::RxSO3::exp(omega).matrix(); ^ In file included from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/parameters.h:16:0, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.h:23, from /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:10: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../utility/utility.h: In instantiation of ‘static Eigen::Quaternion<_Scalar> Utility::quaternionAverage(const std::vector<Eigen::Quaternion<_Scalar> >&) [with T = double]’: /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/estimator.cpp:887:61: required from here /home/liuxin/orb_slam_2/catkin_vins_viw_fusion/src/VIW-Fusion-master/vins_estimator/src/estimator/../utility/utility.h:183:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (size_t i=0; i<singularValues.rows(); ++i) VIW-Fusion-master/vins_estimator/CMakeFiles/vins_lib.dir/build.make:86: recipe for target 'VIW-Fusion-master/vins_estimator/CMakeFiles/vins_lib.dir/src/estimator/estimator.cpp.o' failed make[2]: *** [VIW-Fusion-master/vins_estimator/CMakeFiles/vins_lib.dir/src/estimator/estimator.cpp.o] Error 1 CMakeFiles/Makefile2:1975: recipe for target 'VIW-Fusion-master/vins_estimator/CMakeFiles/vins_lib.dir/all' failed make[1]: *** [VIW-Fusion-master/vins_estimator/CMakeFiles/vins_lib.dir/all] Error 2 Makefile:138: recipe for target 'all' failed make: *** [all] Error 2 Invoking "make -j1" failed

    opened by liuxin-SH 1
  • Question about calibration of extrinsic between wheel and IMU

    Question about calibration of extrinsic between wheel and IMU

    I try to use your project to calibrate the extrinsic of wheel and IMU ,the result works well ! so ,I wonder how you calibrate them? Did you use a specific package? and is there any reference paper for this?

    opened by haolihai994 0
Owner
庄庭达
Welcome Robots
庄庭达
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
BAAF-Net - Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021)

Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021) This repository is for BAAF-Net introduce

null 90 Dec 29, 2022
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
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
Harsh Badwaik 1 Dec 19, 2021
A Multi-sensor Fusion Odometry via Smoothing and Mapping.

LVIO-SAM A multi-sensor fusion odometry, LVIO-SAM, which fuses LiDAR, stereo camera and inertial measurement unit (IMU) via smoothing and mapping. The

Xinliang Zhong 152 Dec 24, 2022
MQB steering wheel adapter to retrofit into PQ46 platform (VW Passat b6/b7, CC)

MQB steering wheel adapter (retrofit MQB steering wheel into PQ46 platform - VW Passat b6/b7, CC) The adapter supports on-wheel buttons (media and cru

null 20 Dec 22, 2022
A Robust LiDAR-Inertial Odometry for Livox LiDAR

LIO-Livox (A Robust LiDAR-Inertial Odometry for Livox LiDAR) This respository implements a robust LiDAR-inertial odometry system for Livox LiDAR. The

livox 363 Dec 26, 2022
Livox-Mapping - An all-in-one and ready-to-use LiDAR-inertial odometry system for Livox LiDAR

Livox-Mapping This repository implements an all-in-one and ready-to-use LiDAR-inertial odometry system for Livox LiDAR. The system is developed based

null 257 Dec 27, 2022
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).

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 Robot

Robotics and Perception Group 1k Dec 26, 2022