Giter VIP home page Giter VIP logo

viw-fusion's Introduction

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

Updates

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.

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.

Version: 1.14.0

1.3 Sophus

git clone https://github.com/strasdat/Sophus.git
cd Sophus && git checkout a0fe89a323e20c42d3cecb590937eb7a06b8343a
mkdir build && cd ./build
cmake ..
make -j4
sudo make install

2. Build VIW-Fusion

Clone the repository and catkin_make:

cd ~/catkin_ws/src
git clone https://github.com/TouchDeeper/VIW-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. Example

Download dataset here.

roslaunch vins vins_rviz.launch
rosrun vins viwo_node ~/catkin_ws/src/VIW-Fusion/config/realsense_d435i/realsense_stereo_imu_config_ridgeback.yaml 
(optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VIW-Fusion/config/realsense_d435i/realsense_stereo_imu_config_ridgeback.yaml
rosbag play YOUR_DATASET_FOLDER/ridgeback_dark.bag

4. Citation

If you use this package for your research, a footnote with the link to this repository is appreciated: github.com/TouchDeeper/VIW-Fusion, or for citation with BibTeX:

@misc{ztd2021viwo,
  title={VIW-Fusion: visual-inertial-wheel fusion odometry.},
  author={Tingda Zhuang},
  howpublished={\url{https://github.com/TouchDeeper/VIW-Fusion}},
  year={2021}
}

-------------------- 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>.

viw-fusion's People

Contributors

touchdeeper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

viw-fusion's Issues

关于添加ZUPT约束的一点疑问

请问零速校正要怎么加呢,我的做法是利用轮速计进行零速检测,检测到时,把零速约束加入到优化项中了,同时把视觉约束的方差设置为零,结果是当处于静止状态时,轨迹会漂移然后崩掉。想问下问下我的思路是对的吗?
零速约束是:当前时刻的速度为零。当前时刻与上一时刻的相对位置为零, 当前时刻与上一时刻的相对旋转为单位阵

编译问题

您好,在编译您的代码是出现了下面的编译问题是什么原因?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

关于Z方向上的漂移有点疑问想请教一下

之前有用vins fusion的单目+imu跑过很多数据,Z方向大致是可以收敛的,但是引入了轮速之后发现Z方向的漂移经常会比vins fusion高,不加平面约束的时候不是很理想,不太清楚这个误差是共有的特性还是自己在标定参数时引入的

Worked on Kaist urban dataset?

Hi,
Thank you so much for the great source,
I am going to test the code with a car outdoors like Kaist urban dataset.
Did you successfully test the code with the Kaist dataset?
Bests,

Thesis

Will it be possible to get you thesis.
Thank you

gyroscope bias initial calibration -nan -nan -nan【陀螺仪初始化问题】

我用自己录的数据跑的时候遇到以下问题,请问您是否知道原因。
[ WARN] [1690423697.385804257]: gyroscope bias initial calibration -nan -nan -nan
Sophus ensure failed in function 'void Sophus::SO3Base::normalize() [with Derived = Sophus::SO3]', file '/home/nhy/study/slambook2/3rdparty/Sophus/sophus/so3.hpp', line 320.
Quaternion (-nan nan -nan -nan) should not be close to zero!
已放弃 (核心已转储)

Plane Constraint Problem on OpenLORIS dataset

我在OpenLORIS数据集上测试了您的算法,发现关闭和开启平面约束前后,效果差很大。关闭平面约束时,轨迹正常,开启后直接跑飞了,如图是在office1_5数据集上的开启平面约束前后的结果:
Screenshot from 2023-07-27 17-47-37
Screenshot from 2023-07-27 17-49-20
在office的其他sequence上以及cafe数据上也是相同的结果,开启平面约束后都跑飞了。
我想请教一下是不是有哪个参数我没有配置好?

关于轮速计部分的原理

非常感谢作者优秀的工作!请问轮速计部分的原理能否po一下呢?比如发一下相关的论文或者博客链接~谢谢了

轮速计参数

您好!首先非常感谢您的工作并且进行开源,受益匪浅。我是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
这些是什么参数,表示的是什么意思?您是通过什么标定方法得到的呢?
您的这个开源程序有对应的参考论文吗?期待您的回复

ros-noetic and ros2 version

我改了ros-noetic和ros2的版本,都已经调试完成。
其中,noetic版本用rideback_dark完成了测试,vins_estimator和loop_fusion节点都没有问题。ros2版本是在ubuntu22.04 ros-humble下调试的,由于一些原因,rideback这两个包没能转成ros2 bag的格式,所以我只测试了Euroc数据集,vins_estimator和loop_fusion节点也都没有问题。代码我上传在自己的仓库了,可以看一下noeticros2-humble。在纯净的系统上安装好sophus和ceres之后,应该是很容易编译的。
请问您可以新开两个分支noetic和ros2-humble让我提交pr吗?

单目+IMU+轮式里程计

good job!
有两个问题请教下:
1.单目+IMU+轮式里程计 是否需要良好的初始化?
2.轮式里程计ROS消息的时间戳需要和IMU以及单目对齐吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.