UZ-SLAMLab / ORB_SLAM3

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
GNU General Public License v3.0
6.64k stars 2.57k forks source link

Segmentation fault (Framebuffer with requested attributes not available.) #870

Open hlin863 opened 8 months ago

hlin863 commented 8 months ago

When running the instruction on running the monotum program with configurations from the file "TUM${fr_code}.yaml", to produce visual estimations of the camera's pose and reconstruct the environment using a single camera:

./Install/bin/mono_tum TUM${fr_code}.yaml ${your_tum_dataset_folder} ${result_file_name}

I encountered a segmentation fault error as following: ORB-SLAM2 Copyright (C) 2014-2016 Raul Mur-Artal, University of Zaragoza. (modifications carried out at UCL, 2022) 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... Using the binary cache file Vocabulary loaded in 0.08s

Camera Parameters:

ORB Extractor Parameters:


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

InitializerLogger Initializer::~Initializer Initializer::~Initializer Initializer::~Initializer Framebuffer with requested attributes not available. Using available framebuffer. You may see visual artifacts.New Map created with 84 points Wrong initialization, reseting... System Reseting Segmentation fault

Which steps should I take to fix the segmentation error?

Thank you!

mjunsen123 commented 8 months ago

try to run it with sudo

hlin863 commented 7 months ago

./Install/bin/mono_tum TUM${fr_code}.yaml ${your_tum_dataset_folder} ${result_file_name}

When running sudo, the command is not found with the message "sudo: ./Install/bin/mono_tum: command not found" for the instruction "sudo ./Install/bin/mono_tum TUM123.yaml /path/to/your/tum/dataset/folder results.txt"

hlin863 commented 7 months ago

try to run it with sudo

The same segmentation error occurs after running with "sudo".

basedball commented 7 months ago

I believe the segfault is being caused by the map being reset in CreateMapMonocular() by:

  if (medianDepth < 0 || pKFcur->TrackedMapPoints(1) < 50) {
    Verbose::PrintMess("Wrong initialization, reseting...", Verbose::VERBOSITY_QUIET);
    RequestResetActiveMap();
    return;
  }

I've found that the system resets are very unstable, and I don't know entirely what caused this one to segfault.

The main issue in your case is that when SLAM functions properly, you should never be entering that if statement. Try to figure out which of the two conditions is true, and see if you can fix that.