GithubHelp home page GithubHelp logo

uz-slamlab / orb_slam3 Goto Github PK

View Code? Open in Web Editor NEW
6.1K 125.0 2.4K 178.98 MB

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

License: GNU General Public License v3.0

Shell 0.05% CMake 0.97% C++ 97.96% Python 1.02%
slam-algorithms

orb_slam3's Introduction

ORB-SLAM3

V1.0, December 22th, 2021

Authors: Carlos Campos, Richard Elvira, Juan J. Gómez Rodríguez, José M. M. Montiel, Juan D. Tardos.

The Changelog describes the features of each version.

ORB-SLAM3 is the first real-time SLAM library able to perform Visual, Visual-Inertial and Multi-Map SLAM with monocular, stereo and RGB-D cameras, using pin-hole and fisheye lens models. In all sensor configurations, ORB-SLAM3 is as robust as the best systems available in the literature, and significantly more accurate.

We provide examples to run ORB-SLAM3 in the EuRoC dataset using stereo or monocular, with or without IMU, and in the TUM-VI dataset using fisheye stereo or monocular, with or without IMU. Videos of some example executions can be found at ORB-SLAM3 channel.

This software is based on ORB-SLAM2 developed by Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel and Dorian Galvez-Lopez (DBoW2).

ORB-SLAM3

Related Publications:

[ORB-SLAM3] Carlos Campos, Richard Elvira, Juan J. Gómez Rodríguez, José M. M. Montiel and Juan D. Tardós, ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM, IEEE Transactions on Robotics 37(6):1874-1890, Dec. 2021. PDF.

[IMU-Initialization] Carlos Campos, J. M. M. Montiel and Juan D. Tardós, Inertial-Only Optimization for Visual-Inertial Initialization, ICRA 2020. PDF

[ORBSLAM-Atlas] Richard Elvira, J. M. M. Montiel and Juan D. Tardós, ORBSLAM-Atlas: a robust and accurate multi-map system, IROS 2019. PDF.

[ORBSLAM-VI] Raúl Mur-Artal, and Juan D. Tardós, Visual-inertial monocular SLAM with map reuse, IEEE Robotics and Automation Letters, vol. 2 no. 2, pp. 796-803, 2017. PDF.

[Stereo and RGB-D] Raúl Mur-Artal and Juan D. Tardós. ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras. IEEE Transactions on Robotics, vol. 33, no. 5, pp. 1255-1262, 2017. PDF.

[Monocular] Raúl Mur-Artal, José M. M. Montiel and Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163, 2015. (2015 IEEE Transactions on Robotics Best Paper Award). PDF.

[DBoW2 Place Recognition] Dorian Gálvez-López and Juan D. Tardós. Bags of Binary Words for Fast Place Recognition in Image Sequences. IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188-1197, 2012. PDF

1. License

ORB-SLAM3 is released under GPLv3 license. For a list of all code/library dependencies (and associated licenses), please see Dependencies.md.

For a closed-source version of ORB-SLAM3 for commercial purposes, please contact the authors: orbslam (at) unizar (dot) es.

If you use ORB-SLAM3 in an academic work, please cite:

@article{ORBSLAM3_TRO,
  title={{ORB-SLAM3}: An Accurate Open-Source Library for Visual, Visual-Inertial 
           and Multi-Map {SLAM}},
  author={Campos, Carlos AND Elvira, Richard AND G\´omez, Juan J. AND Montiel, 
          Jos\'e M. M. AND Tard\'os, Juan D.},
  journal={IEEE Transactions on Robotics}, 
  volume={37},
  number={6},
  pages={1874-1890},
  year={2021}
 }

2. Prerequisites

We have tested the library in Ubuntu 16.04 and 18.04, but it should be easy to compile in other platforms. A powerful computer (e.g. i7) will ensure real-time performance and provide more stable and accurate results.

C++11 or C++0x Compiler

We use the new thread and chrono functionalities of C++11.

Pangolin

We use Pangolin for visualization and user interface. Dowload and install instructions can be found at: https://github.com/stevenlovegrove/Pangolin.

OpenCV

We use OpenCV to manipulate images and features. Dowload and install instructions can be found at: http://opencv.org. Required at leat 3.0. Tested with OpenCV 3.2.0 and 4.4.0.

Eigen3

Required by g2o (see below). Download and install instructions can be found at: http://eigen.tuxfamily.org. Required at least 3.1.0.

DBoW2 and g2o (Included in Thirdparty folder)

We use modified versions of the DBoW2 library to perform place recognition and g2o library to perform non-linear optimizations. Both modified libraries (which are BSD) are included in the Thirdparty folder.

Python

Required to calculate the alignment of the trajectory with the ground truth. Required Numpy module.

ROS (optional)

We provide some examples to process input of a monocular, monocular-inertial, stereo, stereo-inertial or RGB-D camera using ROS. Building these examples is optional. These have been tested with ROS Melodic under Ubuntu 18.04.

3. Building ORB-SLAM3 library and examples

Clone the repository:

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3

We provide a script build.sh to build the Thirdparty libraries and ORB-SLAM3. Please make sure you have installed all required dependencies (see section 2). Execute:

cd ORB_SLAM3
chmod +x build.sh
./build.sh

This will create libORB_SLAM3.so at lib folder and the executables in Examples folder.

4. Running ORB-SLAM3 with your camera

Directory Examples contains several demo programs and calibration files to run ORB-SLAM3 in all sensor configurations with Intel Realsense cameras T265 and D435i. The steps needed to use your own camera are:

  1. Calibrate your camera following Calibration_Tutorial.pdf and write your calibration file your_camera.yaml

  2. Modify one of the provided demos to suit your specific camera model, and build it

  3. Connect the camera to your computer using USB3 or the appropriate interface

  4. Run ORB-SLAM3. For example, for our D435i camera, we would execute:

./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml

5. EuRoC Examples

EuRoC dataset was recorded with two pinhole cameras and an inertial sensor. We provide an example script to launch EuRoC sequences in all the sensor configurations.

  1. Download a sequence (ASL format) from http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

  2. Open the script "euroc_examples.sh" in the root of the project. Change pathDatasetEuroc variable to point to the directory where the dataset has been uncompressed.

  3. Execute the following script to process all the sequences with all sensor configurations:

./euroc_examples

Evaluation

EuRoC provides ground truth for each sequence in the IMU body reference. As pure visual executions report trajectories centered in the left camera, we provide in the "evaluation" folder the transformation of the ground truth to the left camera reference. Visual-inertial trajectories use the ground truth from the dataset.

Execute the following script to process sequences and compute the RMS ATE:

./euroc_eval_examples

6. TUM-VI Examples

TUM-VI dataset was recorded with two fisheye cameras and an inertial sensor.

  1. Download a sequence from https://vision.in.tum.de/data/datasets/visual-inertial-dataset and uncompress it.

  2. Open the script "tum_vi_examples.sh" in the root of the project. Change pathDatasetTUM_VI variable to point to the directory where the dataset has been uncompressed.

  3. Execute the following script to process all the sequences with all sensor configurations:

./tum_vi_examples

Evaluation

In TUM-VI ground truth is only available in the room where all sequences start and end. As a result the error measures the drift at the end of the sequence.

Execute the following script to process sequences and compute the RMS ATE:

./tum_vi_eval_examples

7. ROS Examples

Building the nodes for mono, mono-inertial, stereo, stereo-inertial and RGB-D

Tested with ROS Melodic and ubuntu 18.04.

  1. Add the path including Examples/ROS/ORB_SLAM3 to the ROS_PACKAGE_PATH environment variable. Open .bashrc file:
gedit ~/.bashrc

and add at the end the following line. Replace PATH by the folder where you cloned ORB_SLAM3:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS
  1. Execute build_ros.sh script:
chmod +x build_ros.sh
./build_ros.sh

Running Monocular Node

For a monocular input from topic /camera/image_raw run node ORB_SLAM3/Mono. You will need to provide the vocabulary file and a settings file. See the monocular examples above.

rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

Running Monocular-Inertial Node

For a monocular input from topic /camera/image_raw and an inertial input from topic /imu, run node ORB_SLAM3/Mono_Inertial. Setting the optional third argument to true will apply CLAHE equalization to images (Mainly for TUM-VI dataset).

rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE [EQUALIZATION]	

Running Stereo Node

For a stereo input from topic /camera/left/image_raw and /camera/right/image_raw run node ORB_SLAM3/Stereo. You will need to provide the vocabulary file and a settings file. For Pinhole camera model, if you provide rectification matrices (see Examples/Stereo/EuRoC.yaml example), the node will recitify the images online, otherwise images must be pre-rectified. For FishEye camera model, rectification is not required since system works with original images:

rosrun ORB_SLAM3 Stereo PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION

Running Stereo-Inertial Node

For a stereo input from topics /camera/left/image_raw and /camera/right/image_raw, and an inertial input from topic /imu, run node ORB_SLAM3/Stereo_Inertial. You will need to provide the vocabulary file and a settings file, including rectification matrices if required in a similar way to Stereo case:

rosrun ORB_SLAM3 Stereo_Inertial PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION [EQUALIZATION]	

Running RGB_D Node

For an RGB-D input from topics /camera/rgb/image_raw and /camera/depth_registered/image_raw, run node ORB_SLAM3/RGBD. You will need to provide the vocabulary file and a settings file. See the RGB-D example above.

rosrun ORB_SLAM3 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE

Running ROS example: Download a rosbag (e.g. V1_02_medium.bag) from the EuRoC dataset (http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets). Open 3 tabs on the terminal and run the following command at each tab for a Stereo-Inertial configuration:

roscore
rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml true
rosbag play --pause V1_02_medium.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu

Once ORB-SLAM3 has loaded the vocabulary, press space in the rosbag tab.

Remark: For rosbags from TUM-VI dataset, some play issue may appear due to chunk size. One possible solution is to rebag them with the default chunk size, for example:

rosrun rosbag fastrebag.py dataset-room1_512_16.bag dataset-room1_512_16_small_chunks.bag

8. Running time analysis

A flag in include\Config.h activates time measurements. It is necessary to uncomment the line #define REGISTER_TIMES to obtain the time stats of one execution which is shown at the terminal and stored in a text file(ExecTimeMean.txt).

9. Calibration

You can find a tutorial for visual-inertial calibration and a detailed description of the contents of valid configuration files at Calibration_Tutorial.pdf

orb_slam3's People

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

orb_slam3's Issues

ORB-SLAM3 crash when run with kitti datasets

Hi authors,

Thank you for excellent work and public your code.

I'm a big fan of ORB-SLAM2 and studying ORB-SLAM3. The results from stereo-inertial SLAM + TUM datasets are awesome, obviously better than filter-based approach MSCKF-VIO, which I'm using. But I'm facing with this issues :

When run ORB-SLAM3 with Kitti datasets, the program crashed after new map created.

Backtrace :

#0  0x00007f679f40cfe4 in ORB_SLAM3::EdgeSE3ProjectXYZOnlyPose::computeError() ()
    at /ORB_SLAM3/lib/libORB_SLAM3.so
#1  0x00007f679d2eed61 in g2o::SparseOptimizer::computeActiveErrors() ()
    at /ORB_SLAM3/Thirdparty/g2o/lib/libg2o.so
#2  0x00007f679d2f831e in g2o::OptimizationAlgorithmLevenberg::solve(int, bool) ()
    at /ORB_SLAM3/Thirdparty/g2o/lib/libg2o.so
#3  0x00007f679d2f02ad in g2o::SparseOptimizer::optimize(int, bool) ()
    at /ORB_SLAM3/Thirdparty/g2o/lib/libg2o.so
#4  0x00007f679f3d2d29 in ORB_SLAM3::Optimizer::PoseOptimization(ORB_SLAM3::Frame*) ()
    at /ORB_SLAM3/lib/libORB_SLAM3.so
#5  0x00007f679f322a2e in ORB_SLAM3::Tracking::TrackReferenceKeyFrame() () at /ORB_SLAM3/lib/libORB_SLAM3.so

I would be nice if you guys or someone help me to overcome this issues. I also commented this issue in #3 , but I think a ticket should be created for the issue.

Many thanks in advance.

Regards,
Michael

error in build_ros.sh

/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:83:23: error: ‘SLAM’ was not declared in this scope
viewerAR.SetSLAM(&SLAM);
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc: In member function ‘void ImageGrabber::GrabImage(const ImageConstPtr&)’:
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:151:19: error: ‘mpSLAM’ was not declared in this scope
cv::Mat Tcw = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:12: error: ‘MapPoint’ is not a member of ‘ORB_SLAM2’
vector<ORB_SLAM2::MapPoint*> vMPs = mpSLAM->GetTrackedMapPoints();
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:12: note: suggested alternative:
In file included from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/FrameDrawer.h:24:0,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/Viewer.h:23,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/Tracking.h:27,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/System.h:32,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:31:
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/MapPoint.h:41:7: note: ‘ORB_SLAM3::MapPoint’
class MapPoint
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:12: error: ‘MapPoint’ is not a member of ‘ORB_SLAM2’
vector<ORB_SLAM2::MapPoint*> vMPs = mpSLAM->GetTrackedMapPoints();
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:12: note: suggested alternative:
In file included from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/FrameDrawer.h:24:0,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/Viewer.h:23,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/Tracking.h:27,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/System.h:32,
from /home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:31:
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/../../../include/MapPoint.h:41:7: note: ‘ORB_SLAM3::MapPoint’
class MapPoint
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:32: error: template argument 1 is invalid
vector<ORB_SLAM2::MapPoint*> vMPs = mpSLAM->GetTrackedMapPoints();
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/AR/ros_mono_ar.cc:153:32: error: template argument 2 is invalid
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:40:18: error: ‘ORB_SLAM2’ has not been declared
ImageGrabber(ORB_SLAM2::System* pSLAM):mpSLAM(pSLAM){}
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:40:35: error: expected ‘)’ before ‘’ token
ImageGrabber(ORB_SLAM2::System
pSLAM):mpSLAM(pSLAM){}
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:44:5: error: ‘ORB_SLAM2’ does not name a type
ORB_SLAM2::System* mpSLAM;
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc: In function ‘int main(int, char**)’:
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:62:5: error: ‘ORB_SLAM2’ has not been declared
ORB_SLAM2::System SLAM(argv[1],argv[2],ORB_SLAM2::System::STEREO,true);
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:64:23: error: ‘SLAM’ was not declared in this scope
ImageGrabber igb(&SLAM);
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc: In member function ‘void ImageGrabber::GrabStereo(const ImageConstPtr&, const ImageConstPtr&)’:
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:161:9: error: ‘mpSLAM’ was not declared in this scope
mpSLAM->TrackStereo(imLeft,imRight,cv_ptrLeft->header.stamp.toSec());
^
/home/t450/orb_slam3_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src/ros_stereo.cc:165:9: error: ‘mpSLAM’ was not declared in this scope
mpSLAM->TrackStereo(cv_ptrLeft->image,cv_ptrRight->image,cv_ptrLeft->header.stamp.toSec());
^
CMakeFiles/MonoAR.dir/build.make:200: recipe for target 'CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o' failed
make[2]: *** [CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o] Error 1
make[2]: *** 正在等待未完成的任务....
CMakeFiles/MonoAR.dir/build.make:119: recipe for target 'CMakeFiles/MonoAR.dir/src/AR/ros_mono_ar.cc.o' failed
make[2]: *** [CMakeFiles/MonoAR.dir/src/AR/ros_mono_ar.cc.o] Error 1
CMakeFiles/Makefile2:820: recipe for target 'CMakeFiles/MonoAR.dir/all' failed
make[1]: *** [CMakeFiles/MonoAR.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
CMakeFiles/Mono.dir/build.make:119: recipe for target 'CMakeFiles/Mono.dir/src/ros_mono.cc.o' failed
make[2]: *** [CMakeFiles/Mono.dir/src/ros_mono.cc.o] Error 1
CMakeFiles/Makefile2:718: recipe for target 'CMakeFiles/Mono.dir/all' failed
make[1]: *** [CMakeFiles/Mono.dir/all] Error 2
CMakeFiles/RGBD.dir/build.make:119: recipe for target 'CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o' failed
make[2]: *** [CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/RGBD.dir/all' failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
CMakeFiles/Stereo.dir/build.make:119: recipe for target 'CMakeFiles/Stereo.dir/src/ros_stereo.cc.o' failed
make[2]: *** [CMakeFiles/Stereo.dir/src/ros_stereo.cc.o] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/Stereo.dir/all' failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

"Update contains a nan for vertex xxxx" during local BA

When I testing ORB_SLAM3 on KITTI datasets as stereo mode, and on TUM RGB-D as RGB-D mode, I get following warnings:

...
void g2o::SparseOptimizer::update(const double*): Update contains a nan for vertex xxxx
void g2o::SparseOptimizer::update(const double*): Update contains a nan for vertex xxxx
void g2o::SparseOptimizer::update(const double*): Update contains a nan for vertex xxxx
....
computeActiveErrors(): found NaN in error for edge xxxx
computeActiveErrors(): found NaN in error for edge xxxx
computeActiveErrors(): found NaN in error for edge xxxx
computeActiveErrors(): found NaN in error for edge xxxx
...

These warnings occurred during local BA. I have checked all local key frames', fixed key frames' pose and local map points' position, no one has nan. I know that building system in release mode can disable these warnings, but it can not really solve this problem.

Any one knows why nan was produced? I will appreciate to your help.


My environmental information:

OS: Ubuntu 20.04 LTS
GNU GCC/G++: 10.0.1
cmake: 3.16.3
GNU make: 4.2.1

Pangolin: commit 86eb497
OpenCV: 3.2.0
Eigen: 3.2.10

Running in a custom camera

How do I create the global map from a monocular camera and imu? How do I use the map for realtime localization?

Does anyone run the demo without 'Segmentation fault (core dumped)' error?

Does anyone run the demo without 'Segmentation fault (core dumped)' error?

Seems like an issue with the OpenCV version (currently OpenCV3.4 and Ubuntu18.04).

Is there anyone here tested it successfully with Ubuntu18.04 and OpenCV3.4?

### Anyone knows how to fix it or have no issue running the demos please share your experience here, it looks like a common issue for this segmentation fault.
Thank you!

Camera+IMU calibration

Hi

How can get custom camera + imu calibration setting values?
Please let me know if anybody know some link or method.
Thank you in advance!

Changing brief descriptor from 256 bits to 128 bits, faced problem

I am trying to let ORBSLAM3 use descriptor of 128 bits rather than 256 bits hopping to save some time.

ORBextractor.cc:
for (int i = 0; i < 16; ++i, pattern += 16) // edited ori: 32
static int bit_pattern_31_[128*4] = // edited, ori: 256
const int npoints = 256; // edited, ori:512
descriptors = Mat::zeros((int)keypoints.size(), 16, CV_8UC1); // edited, ori:32
_descriptors.create(nkeypoints, 16, CV_8U); // edited, ori:32
Mat desc = cv::Mat(nkeypointsLevel, 16, CV_8U); // edited: ori:32

ORBmatcher.cc
int bestDist=128; // edited, ori:256
for(int i=0; i<4; i++, pa++, pb++)//edited, ori:i<8
const int ORBmatcher::TH_HIGH = 60;
const int ORBmatcher::TH_LOW = 30;

Then I get this
Annotation 2020-08-16 024845

Features points showing in the frame indicates tracking is still good. But it seems that ORBSLAM3 can get to know the rotation of the camera well but can't get the right translation (thus the camera always stays at the same place.) I don't know where else I need to change also. Thanks.

ROS

When you run the build_ros.sh file, you get a lot of errors

in ros save map?

What can I do to save and load maps under ROS, and realize odometer under ROS

Where can I find `TUM_VI.yaml`?

Within the script tum_vi_example.sh, the TUM_VI.yaml should be the configuration file.
Where can I find it? Is it called TUM_512.yaml now?

Running with my own sequence.

Hi.

I'm using a stereo camera. I based myself on the EuRoC dataset to form my own sequences. I saved frames, timestamps and I also have the camera calibration parameters.
Here is the organization of my folders:

MH01
   |---- mav0
          |---- cam0
                |---- data
                       |---- photos of the left side (timestamp.png)
          |---- cam1
                |---- data
                       |---- photos of the right side (timestamp.png)
   |---- timestamps.txt (timestamp timestamp.png )
   |---- config.yalm

Running the command:

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt path/MH01/config.yaml path/MH01 path/MH01/timestamps.txt dataset-MH01_stereo

I have the error:

.
.
.
Failed to load image at: /path/MH01/mav0/cam0/data/1403636579763555584.png

It is looking for the original dataset, so I assumed this is not the appropriate way, right? Can anyone help me with the right command to run ORBSLAM3 with my own sequence?

Tks in advance.

Run Euroc MH05 dataset

/home/long/Project/ORB_SLAM3-master/Examples/Monocular-Inertial/mono_inertial_euroc ../../Vocabulary/ORBvoc.txt EuRoC.yaml /home/long/MH_05_difficult ./EuRoC_TimeStamps/MH05.txt
num_seq = 1
Loading images for sequence 0...LOADED!
Loading IMU for sequence 0...LOADED!

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular-Inertial

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:

Camera Parameters:

  • fx: 458.65399169921875
  • fy: 457.29598999023438
  • cx: 367.21499633789062
  • cy: 248.375
  • bf: 0
  • k1: -0.28340810537338257
  • k2: 0.073959067463874817
  • p1: 0.00019359000725671649
  • p2: 1.7618711353861727e-05
  • fps: 20
  • color order: RGB (ignored if grayscale)

ORB Extractor Parameters:

  • Number of Features: 1000
  • Scale Levels: 8
  • Scale Factor: 1.2000000476837158
  • Initial Fast Threshold: 20
  • Minimum Fast Threshold: 7

Left camera to Imu Transform (Tbc):
[0.014865543, -0.99988091, 0.004140297, -0.021640146;
0.99955726, 0.014967213, 0.02571553, -0.064676985;
-0.025774436, 0.0037561883, 0.99966073, 0.0098107308;
0, 0, 0, 1]

IMU frequency: 200 Hz
IMU gyro noise: 0.00016999999934341758 rad/s/sqrt(Hz)
IMU gyro walk: 1.9392999092815444e-05 rad/s^2/sqrt(Hz)
IMU accelerometer noise: 0.0020000000949949026 m/s^2/sqrt(Hz)
IMU accelerometer walk: 0.0030000000260770321 m/s^3/sqrt(Hz)
init extractor
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
init extractor
last KF is empty!
First KF:0; Map init KF:0
New Map created with 309 points

Process finished with exit code 0

stop at
void Optimizer::BundleAdjustment(const vector<KeyFrame *> &vpKFs, const vector<MapPoint > &vpMP,
int nIterations, bool
pbStopFlag, const unsigned long nLoopKF, const bool bRobust)
optimizer.optimize(nIterations);

opencv4 & cv.h

Opencv/cv.h file was cancelled in opencv4, I used opencv2/opencv.hpp instead, but in PnPsolver.h and PnPsolver.cc, cvMat is used for svd calculation. Because opencv2 cancels the definitions of cvMat and cvSVD, So if opencv4 is used, how to solve these problems?
I think you are using opencv3.2. There should be the same problem. How did you solve it?

ORB-SLAM3, make error

Hi:
when i made the ORB-SLAM3, the following errors have occurred!
Anyone who can answer my problems? Thank you !


/home/xy/ORB-SLAM3/ORB_SLAM3/src/LocalMapping.cc:1455:12: warning: unused variable ‘t_inertial_only’ [-Wunused-variable]
double t_inertial_only = std::chrono::duration_cast<std::chrono::duration >(t1 - t0).count();
^
CMakeFiles/ORB_SLAM3.dir/build.make:110: recipe for target 'CMakeFiles/ORB_SLAM3.dir/src/LocalMapping.cc.o' failed
make[2]: *** [CMakeFiles/ORB_SLAM3.dir/src/LocalMapping.cc.o] Error 1
CMakeFiles/Makefile2:400: recipe for target 'CMakeFiles/ORB_SLAM3.dir/all' failed
make[1]: *** [CMakeFiles/ORB_SLAM3.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2


The implementation of EdgeAccRW is right?

void computeError(){ const VertexGyroBias* VG1= static_cast<const VertexGyroBias*>(_vertices[0]); const VertexGyroBias* VG2= static_cast<const VertexGyroBias*>(_vertices[1]); _error = VG2->estimate()-VG1->estimate(); }
why still VG1 & VG2 instead of VA1 & VA2?

Low numbers of matched features when running in IMU_STEREO mode with KITTI raw data

Hi,

Thanks for this amazing work.

I've tried to config and run the code with KITTI raw data (unsynced & unrectified data) in which the IMU data is available (it is not available in KITTI evaluation dataset). However, I faced the issue of low numbers of matched features when running the code. Please refer to the log below:

...
mnFirstFrameId = 101
mnInitialFrameId = 99
72 Frames had been set to lost
last KF is empty!
not IMU meas
last KF is empty!
First KF:31; Map init KF:30
New Map created with 128 points
Matches Inliners: 48 | Matching ratio: 48/1010
Fail to track local map!
IMU is not or recently initialized. Reseting active map...
LM: Active map reset recieved
LM: Active map reset, waiting...
LM: Reseting current map in Local Mapping...
LM: End reseting Local Mapping...
LM: Reset free the mutex
LM: Active map reset, Done!!!
mnFirstFrameId = 105
mnInitialFrameId = 103
74 Frames had been set to lost
last KF is empty!
not IMU meas
last KF is empty!
First KF:32; Map init KF:31
New Map created with 133 points
Matches Inliners: 43 | Matching ratio: 43/1005
Fail to track local map!
IMU is not or recently initialized. Reseting active map...
LM: Active map reset recieved
LM: Active map reset, waiting...
LM: Reseting current map in Local Mapping...
LM: End reseting Local Mapping...
LM: Reset free the mutex
LM: Active map reset, Done!!!
mnFirstFrameId = 108
mnInitialFrameId = 106
76 Frames had been set to lost
last KF is empty!
not IMU meas
last KF is empty!
First KF:33; Map init KF:32
New Map created with 121 points
Matches Inliners: 43 | Matching ratio: 43/1006
Fail to track local map!
IMU is not or recently initialized. Reseting active map...
LM: Active map reset recieved
LM: Active map reset, waiting...
LM: Reseting current map in Local Mapping...
LM: End reseting Local Mapping...
LM: Reset free the mutex
LM: Active map reset, Done!!!
mnFirstFrameId = 111
mnInitialFrameId = 109
78 Frames had been set to lost
last KF is empty!
not IMU meas

Saving trajectory to f_kitti_0001.txt ...

The number of features is lower than 50 (which is set in the code as the threshold for a successfully tracking). This made the program repeatedly failed in the tracking stage and the tracking map kept resetting all the time.

One of the sources for the issue that I could think of is the wrong parameters in my configuration file. The camera and IMU calibration were carefully calculated.

Please let me know if you spot any issue in the code.

The code could be found at https://github.com/biendltb/ORB_SLAM3/tree/FEAT/kitti_raw_imu_stereo

Thank you and best wishes,

Bien

How to solve this error produced during make

Hi, Thanks for sharing your great work. And I met some errors when I used 'make -j8' to build the project.
It output like below:
ORB_SLAM3/include/Map.h:140:33: error: ‘list’ has not been declared
void printReprojectionError(list<KeyFrame*> &lpLocalWindowKFs, KeyFrame* mpCurrentKF, string &name, string &name_folder);
^
/ORB_SLAM3/include/Map.h:140:37: error: expected ‘,’ or ‘...’ before ‘<’ token
void printReprojectionError(list<KeyFrame*> &lpLocalWindowKFs, KeyFrame* mpCurrentKF, string &name, string &name_folder);

All the dependencies have been installed correctly.

I am really confused by the errors and hope someone could help me!

Loop Closure Problem

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Stereo

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:

Camera Parameters:

  • fx: 707.091
  • fy: 707.091
  • cx: 601.887
  • cy: 183.11
  • bf: 379.815
  • k1: 0
  • k2: 0
  • p1: 0
  • p2: 0
  • fps: 10
  • color order: RGB (ignored if grayscale)

ORB Extractor Parameters:

  • Number of Features: 2000
  • Scale Levels: 8
  • Scale Factor: 1.2
  • Initial Fast Threshold: 12
  • Minimum Fast Threshold: 7

Depth Threshold (Close/Far Points): 21.486


Start processing sequence ...
Images in the sequence: 1101

First KF:0; Map init KF:0
New Map created with 803 points
BoW: 162 matches between 878 points with coarse Sim3
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.9) /home/user/Opencv-3.4.9/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

Aborted (core dumped)

Every time a loop closure occurs I get this error and the program terminates. Running this on KITTI Stereo Dataset. Works good for sequences with no loop closure like sequence 03, 04, 10.

My system configuration:
Ubuntu 18.04
OpenCV 3.4.9
Eigen 3.3

Anybody else ran into the same problem?

Different results of running orbslam3 on the same data set

Hi many thanks for the great contribution! After running my own recorded data experiment on orbslam3 many times (stereo-only experience), the map results obtained by using the evo tool to analyze are different. What is the reason for this (multi-threading will have a certain impact on the selection of key frames)? Does this belong to the normal error range? I got the same conclusion in orb-slam2.
image1

Running ORB_SLAM3 on gazebo failed

I'm trying to run ORB_SLAM3 on gazebo. The program can run and show the figure that taken by virtual camera. But it can not extract feature points and estimate camera pose.
Bildschirmfoto vom 2020-08-11 14-50-22
Here is the information of rostopic /camera/rgb/camera_info:
Bildschirmfoto vom 2020-08-11 14-56-24
And yaml file:

%YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 277.19135641132203
Camera.fy: 277.19135641132203
Camera.cx: 160.5
Camera.cy: 120.5

Camera.k1: 0
Camera.k2: 0
Camera.p1: 0
Camera.p2: 0

Camera.width: 320 
Camera.height: 240 

# Camera frames per second 
Camera.fps: 30.0

# IR projector baseline times fx (aprox.)
Camera.bf: 13.8595

# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1

# Close/Far threshold. Baseline times.
ThDepth: 50.0

# Deptmap values factor 
DepthMapFactor: 1000.0

#--------------------------------------------------------------------------------------------
# ORB Parameters
#--------------------------------------------------------------------------------------------

# ORB Extractor: Number of features per image
ORBextractor.nFeatures: 1000

# ORB Extractor: Scale factor between levels in the scale pyramid 	
ORBextractor.scaleFactor: 1.2

# ORB Extractor: Number of levels in the scale pyramid	
ORBextractor.nLevels: 8

# ORB Extractor: Fast threshold
# Image is divided in a grid. At each cell FAST are extracted imposing a minimum response.
# Firstly we impose iniThFAST. If no corners are detected we impose a lower value minThFAST
# You can lower these values if your images have low contrast			
ORBextractor.iniThFAST: 20
ORBextractor.minThFAST: 7

#--------------------------------------------------------------------------------------------
# Viewer Parameters
#--------------------------------------------------------------------------------------------
Viewer.KeyFrameSize: 0.05
Viewer.KeyFrameLineWidth: 1
Viewer.GraphLineWidth: 0.9
Viewer.PointSize:2
Viewer.CameraSize: 0.08
Viewer.CameraLineWidth: 3
Viewer.ViewpointX: 0
Viewer.ViewpointY: -0.7
Viewer.ViewpointZ: -1.8
Viewer.ViewpointF: 500

And I got this:
Framebuffer with requested attributes not available. Using available framebuffer. You may see visual artifacts.
Bildschirmfoto vom 2020-08-11 15-04-54
Does anyone have any idea? Thanks

Failed to load image at: /Datasets/MH01/......Segmentation fault (core dumped)

I tried to run ./euroc_examples.sh in the root folder and set the path to the dataset actually uncompressed. But the program output a error message:

Failed to load image at: /Datasets/MH01/mav0/cam0/data/1403636579763555584.png
./euroc_examples.sh: line 7: 12029 Segmentation fault      (core dumped) ./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH01 ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
Launching MH02 with Monocular sensor
num_seq = 1

The file name contained in the timestamp file does not match with the real file name in the corresponding dataset folder. Is this the real reason for such error ?

Any help will be appreciate.

building issue

I am trying to build it using ./build.sh and i got this type of error:
note that i am using ubuntu 20.04
/home/beraru/ORB_SLAM3/src/Optimizer.cc: In static member function ‘static void ORB_SLAM3::Optimizer::MergeInertialBA(ORB_SLAM3::KeyFrame*, ORB_SLAM3::KeyFrame*, bool*, ORB_SLAM3::Map*, ORB_SLAM3::LoopClosing::KeyFrameAndPose&)’:
/home/beraru/ORB_SLAM3/src/Optimizer.cc:7015:19: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wdangling-else]
7015 | if(!pMP->isBad())
| ^
/home/beraru/ORB_SLAM3/src/Optimizer.cc: In static member function ‘static int ORB_SLAM3::Optimizer::PoseInertialOptimizationLastKeyFrame(ORB_SLAM3::Frame*, bool)’:
/home/beraru/ORB_SLAM3/src/Optimizer.cc:7706:10: warning: unused variable ‘bOut’ [-Wunused-variable]
7706 | bool bOut = false;
| ^~~~
/home/beraru/ORB_SLAM3/src/LocalMapping.cc: In member function ‘void ORB_SLAM3::LocalMapping::KeyFrameCulling()’:
/home/beraru/ORB_SLAM3/src/LocalMapping.cc:1057:48: warning: ‘last_ID’ may be used uninitialized in this function [-Wmaybe-uninitialized]
1057 | if((bInitImu && (pKF->mnId<last_ID) && t<3.) || (t<0.5))
| ^~~~~~~
make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:102: CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o] Error 1
/home/beraru/ORB_SLAM3/src/Tracking.cc: In member function ‘void ORB_SLAM3::Tracking::Track()’:
/home/beraru/ORB_SLAM3/src/Tracking.cc:1155:13: warning: ‘bOK’ may be used uninitialized in this function [-Wmaybe-uninitialized]
1155 | if(bOK)
| ^~
make[2]: *** [CMakeFiles/ORB_SLAM3.dir/build.make:232: CMakeFiles/ORB_SLAM3.dir/src/Optimizer.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:390: CMakeFiles/ORB_SLAM3.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

While executing TUM2 and TUM1 dataset in RGB-D mode,it is interrupted with "Segmentation fault (core dump) "

~/src/ORB_SLAM3$ ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml /home/zd/src/ORB_SLAM3/data/rgbd_dataset_freiburg1_room /home/zd/src/ORB_SLAM3/Examples/RGB-D/associations.txt

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: RGB-D

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:

Camera Parameters:

  • fx: 517.306
  • fy: 516.469
  • cx: 318.643
  • cy: 255.314
  • bf: 40
  • k1: 0.262383
  • k2: -0.953104
  • p1: -0.005358
  • p2: 0.002628
  • k3: 1.16331
  • fps: 30
  • color order: RGB (ignored if grayscale)

ORB Extractor Parameters:

  • Number of Features: 1000
  • Scale Levels: 8
  • Scale Factor: 1.2
  • Initial Fast Threshold: 20
  • Minimum Fast Threshold: 7

Depth Threshold (Close/Far Points): 3.09294


Start processing sequence ...
Images in the sequence: 1352

First KF:0; Map init KF:0
New Map created with 852 points
BoW: 248 matches between 683 points with coarse Sim3
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.3.0) /home/zd/app/opencv-4.3.0/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

Segmentation fault (core dump)

When executing tum3, it is all right. I don't know why.

Problem of reading dataset file path

I try to run the example of mono_inertial_tum_vi, but error come out when start the .sh file.

The data is Euroc / DSO 512x512 dataset
link :

http://vision.in.tum.de/tumvi/exported/euroc/512_16/dataset-room4_512_16.tar

The error like below:

sph@sph-System-Product-Name:~/Documents/ORB_SLAM3$ ./tum_vi.sh 
Launching Room 4 with Monocular-Inertial sensor
num_seq = 1
file name: dataset-room4_512_monoi
Loading images for sequence 0.../home/sph/Downloads/dataset-room4_512_16/mav0/cam0/data
Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt
LOADED!
Loading IMU for sequence 0...LOADED!

-------

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular-Inertial

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name: dataset-room4_512_monoi

Camera Parameters: 
- fx: 190.97846984863281
- fy: 190.97331237792969
- cx: 254.93170166015625
- cy: 256.89743041992188
- bf: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- k3: -0.0020532361231744289
- fps: 20
- color order: RGB (ignored if grayscale)

ORB Extractor Parameters: 
- Number of Features: 1500
- Scale Levels: 8
- Scale Factor: 1.2000000476837158
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7

Left camera to Imu Transform (Tbc): 
[-0.99952501, 0.0075019184, -0.029890131, 0.045574836;
 0.029615344, -0.03439736, -0.99896932, -0.071161799;
 -0.008522328, -0.99938005, 0.034158852, -0.044681255;
 0, 0, 0, 1]

IMU frequency: 200 Hz
IMU gyro noise: 0.00015999999595806003 rad/s/sqrt(Hz)
IMU gyro walk: 2.2000000171829015e-05 rad/s^2/sqrt(Hz)
IMU accelerometer noise: 0.00279999990016222 m/s^2/sqrt(Hz)
IMU accelerometer walk: 0.00085999997099861503 m/s^3/sqrt(Hz)

.pnged to load image at: /home/sph/Downloads/dataset-room4_512_16/mav0/cam0/data/1520531124150444163
./tum_vi.sh: line 17: 11368 Segmentation fault      (core dumped) ./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM_512.yaml "$pathDatasetTUM_VI"/dataset-room4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-room4_512.txt dataset-room4_512_monoi
sph@sph-System-Product-Name:~/Documents/ORB_SLAM3$ ./tum_vi.sh 
Launching Room 4 with Monocular-Inertial sensor
num_seq = 1
file name: dataset-room4_512_monoi
Loading images for sequence 0.../home/sph/Downloads/dataset-room4_512_16/mav0/cam0/data
Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt
LOADED!
Loading IMU for sequence 0...LOADED!

-------

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular-Inertial

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name: dataset-room4_512_monoi

Camera Parameters: 
- fx: 190.97846984863281
- fy: 190.97331237792969
- cx: 254.93170166015625
- cy: 256.89743041992188
- bf: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- k3: -0.0020532361231744289
- fps: 20
- color order: RGB (ignored if grayscale)

ORB Extractor Parameters: 
- Number of Features: 1500
- Scale Levels: 8
- Scale Factor: 1.2000000476837158
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7

Left camera to Imu Transform (Tbc): 
[-0.99952501, 0.0075019184, -0.029890131, 0.045574836;
 0.029615344, -0.03439736, -0.99896932, -0.071161799;
 -0.008522328, -0.99938005, 0.034158852, -0.044681255;
 0, 0, 0, 1]

IMU frequency: 200 Hz
IMU gyro noise: 0.00015999999595806003 rad/s/sqrt(Hz)
IMU gyro walk: 2.2000000171829015e-05 rad/s^2/sqrt(Hz)
IMU accelerometer noise: 0.00279999990016222 m/s^2/sqrt(Hz)
IMU accelerometer walk: 0.00085999997099861503 m/s^3/sqrt(Hz)

.pnged to load image at: /home/sph/Downloads/dataset-room4_512_16/mav0/cam0/data/1520531124150444163
./tum_vi.sh: line 17: 11882 Segmentation fault      (core dumped) ./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM_512.yaml "$pathDatasetTUM_VI"/dataset-room4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-room4_512.txt dataset-room4_512_monoi

The tum_vi.sh file is

#!/bin/bash
pathDatasetTUM_VI='/home/sph/Downloads' #Example, it is necesary to change it by the dataset path
#------------------------------------
# Monocular-Inertial Examples
echo "Launching Room 4 with Monocular-Inertial sensor"
./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM_512.yaml "$pathDatasetTUM_VI"/dataset-room4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-room4_512.txt dataset-room4_512_monoi

The exec file is in the git

https://github.com/shanpenghui/my_orbslam3.git

Thanks for helping.

[Mono-Inertial] ERROR: Frame with a timestamp older than previous frame detected!

Hi,

thank you for sharing such a wonderful work.

I have been trying to use the Mono_Inertial node, and found out that it always lost the track with this complain

ERROR: Frame with a timestamp older than previous frame detected!

Could you suggest what could be the potential reasons?

The calibration file is as the following


YAML:1.0

#--------------------------------------------------------------------------------------------
# Camera Parameters. Adjust them!
#--------------------------------------------------------------------------------------------
Camera.type: "PinHole"
# Camera calibration and distortion parameters (OpenCV) 
Camera.fx: 929.562627
Camera.fy: 928.604856
Camera.cx: 487.474037
Camera.cy: 363.165223

Camera.k1: -0.016272
Camera.k2: 0.093492
Camera.p1: 0.000093
Camera.p2: 0.002999
Camera.k3: 0.000000
    
# Camera resolution
Camera.width: 960
Camera.height: 720

# Camera frames per second 
Camera.fps: 30.0

# Color order of the images (0: BGR, 1: RGB. It is ignored if images are grayscale)
Camera.RGB: 1

# Transformation from body-frame (imu) to camera
Tbc: !!opencv-matrix
   rows: 4
   cols: 4
   dt: f
   data: [0.000624762189693373, 0.9987476589604951, 0.05002722651855723, -0.00027498954959967003,
          -0.20874315768809598, -0.048794909164563804, 0.9767524512167998, 0.00021872887165989068,
          0.977970298010431, -0.011053079234071894, 0.20845125485071164, -8.459932530849928e-05,
          0.0, 0.0, 0.0, 1.0]
### 

IMU.NoiseGyro: 0.000187 # rad/s^0.5 
IMU.NoiseAcc: 0.00186 # m/s^1.5
IMU.GyroWalk: 2.66e-05 # rad/s^1.5
IMU.AccWalk: 0.000433 # m/s^2.5
IMU.Frequency: 15

Trajectory alignment problem

First, thanks for your excellent work.

Now I use EuRoc Monocular-Inertial dataset to generate the frame trajectory (Twb) and evaluate this trajectory based on the pipeline (rpg_trajectory_evaluation: https://github.com/uzh-rpg/rpg_trajectory_evaluation). However, the trajectory is not aligned with the groundtruth data provided by EuRoc. Here are the trajectory results:

image
image

On the other hand, using your evaluation tool provided by this repo is correctly aligned.
image

Is there any extra coordinate transformation when using rpg_trajectory_evaluation?

Many thanks.

Error when running with mono dataset

Hey
I am running with my own monocular datasets (TUM form). The datasets can be run successfully in ORB-SLAM2. But in ORB-SLAM3 it will meet trouble:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM3.yaml ceiling_1_enhance 

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name: 

Camera Parameters: 
- fx: 535.4
- fy: 539.2
- cx: 320.1
- cy: 247.6
- bf: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 30
- color order: RGB (ignored if grayscale)

ORB Extractor Parameters: 
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7

-------
Start processing sequence ...
Images in the sequence: 1592
Segmentation fault (core dumped)

Is any one knows how to fix this problem? Thank you

stereo-rosnode has too high latency and the program died

Thank you for your work.I have test the stereo_rosnode,and have some problems:
1.The latency is very low at first, and the program runs for 2-3 seconds and then gets higher and higher, with a delay of about 4-5 seconds. And the CPU utilization gradually increases, and the program crashes when the camera moves too fast or the map is rebuilt..My hardware devices are as follows:
Intel® Core™ i7-7700K CPU @ 4.20GHz × 8
GeForce GTX 1080/PCIe/SSE2
Is my hardware device not able to run in real time? But can run ORBSLAM2 in real time, I am confused about this.

"Segmentation fault (core dump)" is reported when executing TUM_VI dataset

When I run the dataset-room4_512_16 dataset, I encounter the problem:

Segmentation fault      (core dumped)

The whole message is:

sph@sph-System-Product-Name:~/Documents/ORB_SLAM3_Fixed$ ./tum_vi.sh 
Launching Room 4 with Monocular-Inertial sensor
num_seq = 1
file name: dataset-room4_512_monoi
Loading images for sequence 0.../home/sph/Downloads/dataset-room4_512_16/mav0/cam0/data
Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt
LOADED!
Loading IMU for sequence 0...LOADED!
vstrImageFilenames[seq].size() = 2228

-------

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular-Inertial

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name: dataset-room4_512_monoi

Camera Parameters: 
- fx: 190.97846984863281
- fy: 190.97331237792969
- cx: 254.93170166015625
- cy: 256.89743041992188
- bf: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- k3: -0.0020532361231744289
- fps: 20
- color order: RGB (ignored if grayscale)

ORB Extractor Parameters: 
- Number of Features: 1500
- Scale Levels: 8
- Scale Factor: 1.2000000476837158
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7

Left camera to Imu Transform (Tbc): 
[-0.99952501, 0.0075019184, -0.029890131, 0.045574836;
 0.029615344, -0.03439736, -0.99896932, -0.071161799;
 -0.008522328, -0.99938005, 0.034158852, -0.044681255;
 0, 0, 0, 1]

IMU frequency: 200 Hz
IMU gyro noise: 0.00015999999595806003 rad/s/sqrt(Hz)
IMU gyro walk: 2.2000000171829015e-05 rad/s^2/sqrt(Hz)
IMU accelerometer noise: 0.00279999990016222 m/s^2/sqrt(Hz)
IMU accelerometer walk: 0.00085999997099861503 m/s^3/sqrt(Hz)
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
init extractor
First KF:0; Map init KF:0
New Map created with 386 points
start inserting MPs
./tum_vi.sh: line 17: 10817 Segmentation fault      (core dumped) ./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM_512.yaml "$pathDatasetTUM_VI"/dataset-room4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-room4_512.txt dataset-room4_512_monoi

My tum_vi.sh file is:

#!/bin/bash
pathDatasetTUM_VI='/home/sph/Downloads' #Example, it is necesary to change it by the dataset path
#------------------------------------
# Monocular-Inertial Examples
echo "Launching Room 4 with Monocular-Inertial sensor"
./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Examples/Monocular-Inertial/TUM_512.yaml "$pathDatasetTUM_VI"/dataset-room4_512_16/mav0/cam0/data Examples/Monocular-Inertial/TUM_TimeStamps/dataset-room4_512.txt Examples/Monocular-Inertial/TUM_IMU/dataset-room4_512.txt dataset-room4_512_monoi

I use gdb to find where is dumped, I found that:

warning: Unexpected size of section `.reg-xstate/8693' in core file.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./Examples/Monocular-Inertial/mono_inertial_tum_vi Vocabulary/ORBvoc.txt Exampl'.
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Unexpected size of section `.reg-xstate/8693' in core file.
#0  0x00007fe0aa1bbd8d in Eigen::DenseStorage<double, 4, 4, 1, 0>::DenseStorage (other=..., this=0x42780000ffffffff)
    at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:194
194	    DenseStorage(const DenseStorage& other) : m_data(other.m_data) {
[Current thread is 1 (Thread 0x7fe0aa69ce80 (LWP 8693))]

Can someone help? Thank you very very very very much ~~~

The bias value of ImuTypes is always 0

Hello.
I am converting kitti data to euroc type and testing it.
However, I'm always getting segmentation errors.
The reason seems to be a problem because the bias of ImuTypes is always 0.

If there is someone who can help you when the bias value is set, please help.

ORB_SLAM3 ROS ERROR!!!!

fox@YangTianM6201c-00:~/catkin_kinect$ rosrun ORB_SLAM3 RGBD ORBvoc.txt Asus_d435i.yaml

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: RGB-D

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:

Camera Parameters:

  • fx: 614.859
  • fy: 614.964
  • cx: 325.856
  • cy: 228.775
  • bf: 30.7429
  • k1: 0
  • k2: 0
  • p1: 0
  • p2: 0
  • fps: 30
  • color order: RGB (ignored if grayscale)

ORB Extractor Parameters:

  • Number of Features: 1000
  • Scale Levels: 8
  • Scale Factor: 1.2
  • Initial Fast Threshold: 20
  • Minimum Fast Threshold: 7

Depth Threshold (Close/Far Points): 2.5
First KF:0; Map init KF:0
New Map created with 289 points
段错误 (核心已转储)

IMU initalization is too late.

Hi , thank you for your work.

We are testing with Intel's T-265 sensor and VI sensor.

Overall these sensors seem to work fine with ORB SLAM3.

The screenshot below is the result of the sensor experiment.

Screenshot from 2020-07-28 20-11-47

Screenshot from 2020-07-30 16-48-51

By the way, when we tested with the T-265 sensor, the initialization is always late with the message'IMU is not initialized. Reset Active Map' (below photo)

Screenshot from 2020-07-30 16-57-23

We have experimented with both the stereo IMU and mono IMU versions of your algorithm. And the results of both are the same. (late initialize with T-265)

Why is initialization so late? How to quickly complete initialization?

Can not correct the loop?

Hi, thanks for your great work!
When I test orbslam3 using my own fisheye camera in MONOCULOR mode, the system can run successfully. But it can not correct the loop. In other words, it often fails. However the system is not broken, continue to execute. I guess the system does not detect the loop, or can not correct the loop. What should I do?

"terminate called after throwing an instance of 'cv::Exception'" occurs after "BoW: xxx matches between xxx points with coarse Sim3"

I have tried the Monocular version with customized streaming sequences, which worked well with ORB-SLAM2. However, with ORB-SLAM3, for some sequences, whenever "BoW: xxx matches between xxx points with coarse Sim3" occurs, the system throws a cv exception as below:

BoW: 276 matches between 635 points with coarse Sim3
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.4.0-pre) /home/qi/opencv_build/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
Aborted (core dumped)

I can confirm that the file exists and is not corrupted. By printing the loaded image, we can see that the exception may happen at different frame ids of the same sequence and the image was loaded successfully in mono_euroc.cc. I assume it might be a cvtColor exception in LoopClosing.cc? Please find in below two error printings when running the same sequence:

Screenshot from 2020-08-13 10-33-31

Screenshot from 2020-08-13 10-43-55

Failed to initialize monocular slam

Hi,
When I run monocular ORB-SLAM on my camera, it always fails to be initialized successfully. I found that most of the time because the value of nsimilar is equal to 2 so that cannot reconstruct fundamental matrix.
I'm sure I have correct camera intrinsic. And besides, is there any other parameters needs to modify?
Can you tell me what should I do?
Thank you very much.

real-time running issue

Hey guys,

I've changed the code in stereo_inertial_euroc.cc to make the code running for real-time on my current MYNT D stereo camera. But I found the running speed on my laptop is pretty slow say 2-4 fps and I can tell the obvious latency between 2 continuous frames. And once I move more aggressively, the code would lose tracking and generate following info

Fail to track local map!
IMU is not or recently initialized. Reseting active map...
LM: Active map reset recieved
LM: Active map reset, waiting...
FAIL LOCAL-INERTIAL BA!!!!
LM: Reseting current map in Local Mapping...
LM: End reseting Local Mapping...
LM: Reset free the mutex
LM: Active map reset, Done!!!
mnFirstFrameId = 594
mnInitialFrameId = 8503
0 Frames set to lost
not IMU meas
not enough acceleration
not enough acceleration
First KF:496; Map init KF:483
New Map created with 738 points

Issue when the loop closing is processed

Hey!
I am running with my own monocular datasets (TUM form). The first issue I have reported in #21 is solved, Thank you! But I have met a new problem, when the system detect the loop, I meet "Segmentation fault (core dump)" again, the issue is:

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM4.yaml ceiling_1_enhance 

ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Monocular

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name: 

Camera Parameters: 
- fx: 726.287
- fy: 726.287
- cx: 354.65
- cy: 186.466
- bf: 0
- k1: 0
- k2: 0
- p1: 0
- p2: 0
- fps: 10
- color order: RGB (ignored if grayscale)

ORB Extractor Parameters: 
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7

-------
Start processing sequence ...
Images in the sequence: 1592

First KF:0; Map init KF:0
New Map created with 243 points
Point distribution in KeyFrame: left-> 243 --- right-> 0
BoW: 165 matches between 1189 points with coarse Sim3
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(3.4.10) /home/gxytcrc/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

Segmentation fault (core dumped)

I find the issue is in line 4001 of Optimizer.cc

    cv::Mat img1 = cv::imread(pKF1->mNameFile, CV_LOAD_IMAGE_UNCHANGED);
    cv::cvtColor(img1, img1, CV_GRAY2BGR);

The img1 returns empty value, and this cause the system crash.

is anyone met the same issue? or do anyone has the solution?

using webcam error

when I using webcam as MONOCULAR camera, error occurs:
image
it seems that the code collapses at the Tracking.cc
image

does anyone know the reasons?

How to run in real time with stereo/mono camera + imu ?

Thank you for your work. 1. Is this program currently only able to run data sets and cannot be run in real time with the camera (rgbd/stereo/mono)? If possible, which programs need to be modified.
2. Do you have a plan to complete the function of saving the map.
3.Whether the map can be used for navigation, as far as I know, sparse maps cannot be used for navigation and obstacle avoidance.
Looking forward to receiving your reply~

"Segmentation fault (core dump)" is reported when executing Kitti dataset

When i executted Kitti dataset, it meet a trouble like this:
Segmentation fault (core dumped)
Have someone meet this toruble like me and how to deal with ? tkanks!
All the thing like this:
`./stereo_kitti /home/jinln/jinln/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/jinln/jinln/ORB_SLAM3/Examples/Stereo/KITTI03.yaml /home/jinln/jinln/DATASET/kitti/03
ORB-SLAM3 Copyright (C) 2017-2020 Carlos Campos, Richard Elvira, Juan J. Gómez, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
ORB-SLAM2 Copyright (C) 2014-2016 Raúl Mur-Artal, José M.M. Montiel and Juan D. Tardós, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.

Input sensor was set to: Stereo

Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!

Creation of new map with id: 0
Creation of new map with last KF id: 0
Seq. Name:

Camera Parameters:

  • fx: 721.538
  • fy: 721.538
  • cx: 609.559
  • cy: 172.854
  • bf: 387.574
  • k1: 0
  • k2: 0
  • p1: 0
  • p2: 0
  • fps: 20
  • color order: RGB (ignored if grayscale)

ORB Extractor Parameters:

  • Number of Features: 3000
  • Scale Levels: 8
  • Scale Factor: 1.2
  • Initial Fast Threshold: 20
  • Minimum Fast Threshold: 7

Depth Threshold (Close/Far Points): 21.486


Start processing sequence ...
Images in the sequence: 801

First KF:0; Map init KF:0
New Map created with 1315 points
Segmentation fault (core dumped)
`

make failed

"CMakeFiles/ORB_SLAM3.dir/build.make:101: recipe for target 'CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o' failed
make[2]: *** [CMakeFiles/ORB_SLAM3.dir/src/LoopClosing.cc.o] Error 1
CMakeFiles/Makefile2:183: recipe for target 'CMakeFiles/ORB_SLAM3.dir/all' failed"

Dose anyone encountered this problem? Thank you very much for help

./build.sh

CMakeFiles/Makefile2:400: recipe for target 'CMakeFiles/ORB_SLAM3.dir/all' failed
make[1]: *** [CMakeFiles/ORB_SLAM3.dir/all] Error 2

Running Stereo with fisheye camera failed

Hi,did anyone runs the stereo camera without using IMU, i got my dataset by two cameras looking upwards and located as left and right.
I finished to run my dataset by each single camera but failed when running stereo. The problem is listed below:

  1. KeyFrames are too few and tracking always gets lost and thus go to start a new map;
  2. I changed the conditions in NeedNewKeyFrame() from
    bNeedToInsertClose = (nTrackedClose<100) && (nNonTrackedClose>70) to
    bNeedToInsertClose = (nTrackedClose < nTotalClosedPoints*0.8) && (nNonTrackedClose>nTotalClosedPoints*0.7).
    and nTotalClosedPoints is all the close points whose depth is between 0 and mThDepth.
    After changed this line, i can get a whole map or sometimes two submaps.
    But it seems that the trajectory is not in a horizon plane while my cameras stay at the same level in the dataset.

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.