MIT-SPARK / Kimera-VIO

Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
BSD 2-Clause "Simplified" License
1.56k stars 418 forks source link

UndistorterRectifier.cpp:119 Check failed: map_x_.size == img.size (480 x 752 vs. ) #226

Closed mcguiremichael closed 8 months ago

mcguiremichael commented 8 months ago

Description:

I installed the Kimera API in docker. I downloaded the Euroc dataset. I bind mounted the downloaded data into docker and ran the command for launching stereo VIO. Ultimately it crashes immediately, no matter what dataset gets passed in.

Command:

./scripts/stereoVIOEuroc.bash -p /data/euroc-spark-20240205T154915Z-001/euroc-spark/MH_01_easy

The final command run by this bash script is

../build/stereoVIOEuroc --dataset_type=0 --dataset_path=/data/euroc-spark-20240205T154915Z-001/euroc-spark/MH_01_easy --initial_k=50 --final_k=10000 --params_folder_path=../params/Euroc --use_lcd=0 --vocabulary_path=../vocabulary/ORBvoc.yml --flagfile=../params/Euroc/flags/stereoVIOEuroc.flags --flagfile=../params/Euroc/flags/Mesher.flags --flagfile=../params/Euroc/flags/VioBackend.flags --flagfile=../params/Euroc/flags/RegularVioBackend.flags --flagfile=../params/Euroc/flags/Visualizer3D.flags --logtostderr=1 --colorlogtostderr=1 --log_prefix=1 --v=0 --vmodule=Pipeline*=00 --log_output=0 --log_euroc_gt_data=0 --save_frontend_images=1 --visualize_frontend_images=1 --output_path=../output_logs

Console output:


Using dataset at path: /data/euroc-spark-20240205T154915Z-001/euroc-spark/MH_01_easy
 Launching:

            ██╗  ██╗██╗███╗   ███╗███████╗██████╗  █████╗
            ██║ ██╔╝██║████╗ ████║██╔════╝██╔══██╗██╔══██╗
            █████╔╝ ██║██╔████╔██║█████╗  ██████╔╝███████║
            ██╔═██╗ ██║██║╚██╔╝██║██╔══╝  ██╔══██╗██╔══██║
            ██║  ██╗██║██║ ╚═╝ ██║███████╗██║  ██║██║  ██║
            ╚═╝  ╚═╝╚═╝╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝

I0205 17:40:19.474455   410 EurocDataProvider.cpp:89] Parsing Euroc dataset...
W0205 17:40:19.601708   410 EurocDataProvider.cpp:745] Value for final_k, 10000 is larger than total number of frames in dataset 3682
W0205 17:40:19.601729   410 EurocDataProvider.cpp:748] Using final_k = 3682
I0205 17:40:19.605307   410 RegularVioBackend.cpp:115] Using Regular VIO Backend.
I0205 17:40:19.606783   410 PipelineModule.h:451] MISO Pipeline Module: Display has no output queue registered.
I0205 17:40:19.606930   410 Pipeline.cpp:352] Pipeline Modules launched (parallel_run set to 1).
I0205 17:40:19.607020   431 Pipeline.cpp:102] Spinning Kimera-VIO.
I0205 17:40:19.607049   432 Pipeline.cpp:167] Shutting down VIO pipeline once processing has finished.
I0205 17:40:19.607059   432 Pipeline.cpp:180] 
I0205 17:40:19.616988   430 EurocDataProvider.cpp:126] Running dataset between frame 50 and frame 3682
W0205 17:40:19.617218   426 NonMaximumSuppression.cpp:44] No keypoints for non-max suppression...
W0205 17:40:19.617233   426 FeatureDetector.cpp:160] No corners extracted for frame with id: 51
F0205 17:40:19.617251   426 UndistorterRectifier.cpp:119] Check failed: map_x_.size == img.size (480 x 752 vs. ) 
*** Check failure stack trace: ***
    @     0x7f08d72ea1c3  google::LogMessage::Fail()
    @     0x7f08d72ef25b  google::LogMessage::SendToLog()
    @     0x7f08d72e9ebf  google::LogMessage::Flush()
    @     0x7f08d72ea6ef  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f08d78d780e  VIO::UndistorterRectifier::undistortRectifyImage()
    @     0x7f08d78aaa25  VIO::StereoCamera::undistortRectifyStereoFrame()
    @     0x7f08d78b5bc0  VIO::StereoMatcher::sparseStereoReconstruction()
    @     0x7f08d78bae4a  VIO::StereoVisionImuFrontend::processFirstStereoFrame()
    @     0x7f08d78bb149  VIO::StereoVisionImuFrontend::bootstrapSpinStereo()
    @     0x7f08d78c11eb  VIO::StereoVisionImuFrontend::bootstrapSpin()
    @     0x7f08d78d9ca6  VIO::VisionImuFrontend::spinOnce()
    @     0x7f08d78dd085  VIO::PipelineModule<>::spin()
    @     0x7f08d6bcedf4  (unknown)
    @     0x7f08d6ce4609  start_thread
    @     0x7f08d6a0a353  clone
./scripts/stereoVIOEuroc.bash: line 110:   410 Aborted                 (core dumped) $BUILD_PATH/stereoVIOEuroc --dataset_type="$DATASET_TYPE" --dataset_path="$DATASET_PATH" --initial_k=50 --final_k=10000 --params_folder_path="$PARAMS_PATH" --use_lcd="$USE_LCD" --vocabulary_path="$VOCABULARY_PATH/ORBvoc.yml" --flagfile="$PARAMS_PATH/flags/stereoVIOEuroc.flags" --flagfile="$PARAMS_PATH/flags/Mesher.flags" --flagfile="$PARAMS_PATH/flags/VioBackend.flags" --flagfile="$PARAMS_PATH/flags/RegularVioBackend.flags" --flagfile="$PARAMS_PATH/flags/Visualizer3D.flags" --logtostderr=1 --colorlogtostderr=1 --log_prefix=1 --v=0 --vmodule=Pipeline*=00 --log_output="$LOG_OUTPUT" --log_euroc_gt_data="$LOG_OUTPUT" --save_frontend_images=1 --visualize_frontend_images=1 --output_path="$OUTPUT_PATH"

Additional files:

Dataset link: https://drive.google.com/open?id=1_kwqHojvBusHxilcclqXh6haxelhJW0O

Please give also the following information:

mcguiremichael commented 8 months ago

The issue was the way the dataset was downloaded. I did a large batch download of all datasets from google drive, which spread each subdataset across each chunk. After only downloading one dataset and moving it to the right location, it worked.