Segmentation fault (core dumped) when run with dataset_tum
kintzhao opened this issue · 10 comments
I have Segmentation fault when run:
build/RESLAM config_files/reslam_settings.yaml config_files/dataset_tum1.yaml
yhzhao@yhzhao:~/test_git/RESLAM$ pkg-config --modversion eigen3
3.2.92
yhzhao@yhzhao:~/test_git/RESLAM$ build/RESLAM config_files/reslam_settings.yaml config_files/dataset_tum1.yaml
INF|System.cpp[readSettings,144]: EnableLocalMapping: 1
INF|System.cpp[readSettings,158]: SystemMultiThreading: 0
INF|System.cpp[readSettings,165]: Read: [1, 1, 1.25, 1.5] into 1 1 1.25 1.5
INF|System.cpp[readSensorSettings,90]: InputDatasetFile1: associate.txt
INF|System.cpp[readSensorSettings,92]: InputDatasetFile2: associate.txt
INF|System.cpp[readSensorSettings,106]: InputSkipFirstNFrames: 0
INF|System.cpp[readSensorSettings,112]: InputDepthMin: 0.1 InputDepthMax: 5.2
INF|LocalMapper.cpp[LocalMapper,55]: setThreadReduce: 0xb2c100
INF|Tracker.cpp[Tracker,42]: mCameraMatrix: 517.306 516.469
INF|fernrelocaliser.cpp[FernRelocaliser,297]: imgSize / (1 << levels): [40 x 30] height: 480 width: 640
INF|FernConservatory.cpp[FernConservatory,47]: Generating FernConservatory with: 500 4 [40 x 30] [0, 255] 4 width: 40x h:30
INF|fernrelocaliser.cpp[FernRelocaliser,300]: Creating RelocDatabase!
INF|Tracker.cpp[Tracker,42]: mCameraMatrix: 517.306 516.469
INF|Input.cpp[readGTTrajectory,50]: Reading: /home/yhzhao/dataSets/vslam/tum/rgbd_dataset_freiburg1_desk2/groundtruth.txt
INF|Input.cpp[InputDatasetReader,104]: Reading: /home/yhzhao/dataSets/vslam/tum/rgbd_dataset_freiburg1_desk2/associate.txt
START PANGOLIN!
Input.cpp[readImages,192]: readImages loop!
INF|Input.cpp[getImages,128]: getimages!0
INF|Input.cpp[getImages,132]: mNbReceivedImages!1
INF|System.cpp[startSystem,229]: input is still active!
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 2 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 3
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 4
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 5
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 6
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 7
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 7 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 8
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 9
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 10
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 11
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 12
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 12 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 13
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 14
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 14 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 15
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 15 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,94]: p: 16
INF|ceresloopcloser.cpp[BuildOptimizationProblem,97]: Fixing: 16 flagFixPose: 1
INF|ceresloopcloser.cpp[BuildOptimizationProblem,103]: nFixedPoses: 7
Segmentation fault (core dumped)
Hi,
thanks for your interest in RESLAM.
Others also had this problem and it is related to your Ceres/Eigen version.
It has been already solved in: #2
@fabianschenk which version is need?
Found Ceres version: 1.14.0
Found required Ceres dependency: Eigen version 3.2.92
I tried various versions of Ceres (1.13, 1.14 and 2.0). Do you use the same Eigen version in Ceres and RESLAM? Could you try installing the latest (stable) Eigen version 3.3.7 ?
Thanks. It is ok when i re-install by your latest (stable) Eigen version 3.3.7 .
it is ok on the data: /home/yhzhao/dataSets/vslam/tum/rgbd_dataset_freiburg1_desk2
error on rgbd_dataset_freiburg2_large_with_loop
error on "/home/yhzhao/dataSets/vslam/tum/rgbd_dataset_freiburg2_pioneer_360"
INF|Tracker.cpp[trackFrameOnLvl,765]: (1, 7,0.999294 ): FINISHED pyramid level 1 (last residual reduction too small).
INF|Tracker.cpp[trackFrames,97]: Time for tracking at lvl: 1:4044/4
INF|Tracker.cpp[trackFrames,82]: Tracking level: 0 from 24 to 4755832512519864320
INF|Tracker.cpp[trackFrameOnLvl,718]: Computing rel. transformation between: 0(1311876806.855905) and 88(1311876806.755717) on lvl: 0
INF|Tracker.cpp[trackFrameOnLvl,734]: Transformation before 0: 0.999292 -0.00494103 0.0372881 0.00366753
0.00476046 0.999977 0.00492975 -0.00992683
-0.0373116 -0.00474876 0.999292 -0.0250039
INF|Tracker.cpp[trackFrameOnLvl,765]: (0, 2,0.99992 ): FINISHED pyramid level 0 (last residual reduction too small).
INF|Tracker.cpp[trackFrames,97]: Time for tracking at lvl: 0:1965/1
INF|Tracker.cpp[analyseTrackingResult,811]: opticalFlowThreshold: 0.871777 resInfo good: 1725, 18
INF|System.cpp[trackNewestFrame,327]: Time for tracking: 10382/10
INF|System.cpp[trackNewestFrame,336]: Tracking Status: Ok T_ref_N: 0.999181 -0.0040993 0.0402446 -0.00273555
0.00385844 0.999974 0.00606088 -0.00962771
-0.0402684 -0.00590064 0.999171 -0.0158214
INF|PangolinDSOViewer.cpp[publishCamPose,731]: publishCamPose!89
INF|PangolinDSOViewer.cpp[pushLiveFrame,778]: Time for pushingLiveFrame: 2020
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
Input.cpp[readImages,206]: Got image from sensor!90
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
Input.cpp[readImages,215]: mInputFrameQueue: 1
Input.cpp[readImages,218]: mNbOfImages: 91
INF|System.cpp[startSystem,229]: input is still active!
INF|System.cpp[startSystem,231]: Got frame!
INF|DataStructures.cpp[computeOptimizationStructure,141]: Adding distancetransform for frame: 1311876806.956004
Input.cpp[readImages,192]: readImages loop!
INF|Input.cpp[getImages,128]: getimages!91
INF|Input.cpp[getImages,132]: mNbReceivedImages!92
INF|System.cpp[trackNewestFrame,313]: Time for computing poses: 3
INF|Tracker.cpp[trackFrames,78]: initPose: 0.996727 -0.00843261 0.080398 -0.00606612
0.00746956 0.999897 0.0122719 -0.0193616
-0.0804932 -0.0116312 0.996687 -0.0314627
INF|Tracker.cpp[trackFrames,82]: Tracking level: 2 from 24 to 4755832512519864320
INF|Tracker.cpp[trackFrameOnLvl,718]: Computing rel. transformation between: 0(1311876806.956004) and 88(1311876806.755717) on lvl: 2
INF|Tracker.cpp[trackFrameOnLvl,734]: Transformation before 2: 0.996727 -0.00843261 0.080398 -0.00606612
0.00746956 0.999897 0.0122719 -0.0193616
-0.0804932 -0.0116312 0.996687 -0.0314627
INF|Tracker.cpp[trackFrameOnLvl,777]: (2, 5): FINISHED pyramid level 2 (stepsize too small).
INF|Tracker.cpp[trackFrames,97]: Time for tracking at lvl: 2:920/0
INF|Tracker.cpp[trackFrames,82]: Tracking level: 1 from 24 to 4755832512519864320
INF|Tracker.cpp[trackFrameOnLvl,718]: Computing rel. transformation between: 0(1311876806.956004) and 88(1311876806.755717) on lvl: 1
INF|Tracker.cpp[trackFrameOnLvl,734]: Transformation before 1: 0.997057 -0.0141979 0.0753427 -0.00150326
0.0152135 0.999801 -0.0129226 0.00316986
-0.0751442 0.0140308 0.997074 -0.0620407
INF|Tracker.cpp[trackFrameOnLvl,765]: (1, 6,0.999562 ): FINISHED pyramid level 1 (last residual reduction too small).
INF|Tracker.cpp[trackFrames,97]: Time for tracking at lvl: 1:865/0
INF|Tracker.cpp[trackFrames,82]: Tracking level: 0 from 24 to 4755832512519864320
INF|Tracker.cpp[trackFrameOnLvl,718]: Computing rel. transformation between: 0(1311876806.956004) and 88(1311876806.755717) on lvl: 0
INF|Tracker.cpp[trackFrameOnLvl,734]: Transformation before 0: 0.997155 -0.00615544 0.0751272 0.00946236
0.00649213 0.99997 -0.00423817 -0.0127139
-0.0750988 0.00471385 0.997165 -0.0696723
INF|Tracker.cpp[trackFrameOnLvl,777]: (0, 3): FINISHED pyramid level 0 (stepsize too small).
INF|Tracker.cpp[trackFrames,97]: Time for tracking at lvl: 0:688/0
INF|Tracker.cpp[analyseTrackingResult,811]: opticalFlowThreshold: 1.20053 resInfo good: 1336, 407
INF|System.cpp[trackNewestFrame,327]: Time for tracking: 2889/2
INF|System.cpp[trackNewestFrame,336]: Tracking Status: NewKeyframe T_ref_N: 0.996845 -0.00659775 0.0790944 0.00204792
0.00714771 0.999952 -0.00667207 -0.000315638
-0.0790466 0.00721637 0.996845 -0.0442528
INF|Mapper.cpp[addKeyFrameHeaderAndId,394]: addKeyFrameHeaderAndId timestamp: 1311876806.956004
INF|DataStructures.cpp[makeKeyFrame,99]: Making 1311876806.956004 to keyframe with id: 4755832512519864320
INF|DataStructures.cpp[computeValidEdgePixels,207]: computingValidEdgePixels for 1311876806.956004
INF|DataStructures.cpp[computeValidEdgePixels,235]: Time for edge list computation: 842 size: 1575
INF|Mapper.cpp[addKeyFrameToAll,454]: addKeyFrameHeaderAndId4755832512519864320 timestamp: 1311876806.956004
INF|Mapper.cpp[addKeyFrameToAll,459]: lock addKeyFrameToAll frames mode!
INF|LocalMapper.cpp[flagFramesForMarginalization,1005]: flagFramesForMarginalization7
INF|WindowedOptimizer.cpp[takeData,246]: takeData: 25 = 25
INF|LocalMapper.cpp[addNewResidualsForOldPoints,88]: addNewResidualsForOldPoints!
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x4eff640fh->id: 18 25 90goodE: 0
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x4ee5320fh->id: 19 25 90goodE: 0
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x46789a0fh->id: 20 25 90goodE: 0
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x7dd0900fh->id: 21 25 90goodE: 0
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x4e76760fh->id: 22 25 90goodE: 99
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x5872660fh->id: 23 25 90goodE: 119
INF|LocalMapper.cpp[addNewResidualsForOldPoints,93]: refFrameNew: 0x2a80ae0 fh1 0x4e66f40fh->id: 24 25 90goodE: 0
INF|LocalMapper.cpp[activatePointsMT,943]: Making new distance map for refFrameNew25
INF|LocalMapper.cpp[activateEdges_Reductor,929]: Added: 37 out of 46 immature points to active points
INF|LocalMapper.cpp[activatePointsMT,973]: optEdgePixels.size: 46 newEdgePixels: 46
INF|LocalMapper.cpp[localMappingLinear,601]: Window poses before optimize:
INF|LocalMapper.cpp[linearizeAll,483]: linearizeAll! 611
ERR|LocalMapper.cpp[optimize,259]: Time for linearize and calcEnergy: 101 lastEnergy: 136.744 0 0
ERR|LocalMapper.cpp[optimize,266]: Time for applyRes_Reductor: 21
INF|LocalMapper.cpp[optimize,276]: Start Energy: 136.744 0 0 lastEnergyL: 0
INF|LocalMapper.cpp[optimize,282]: Iteration: 0 lastX: -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan -nan
Sophus ensure failed in function 'static Sophus::SO3<Scalar_> Sophus::SO3<Scalar_, Options>::expAndTheta(const Tangent&, Sophus::SO3<Scalar_, Options>::Scalar*) [with Scalar_ = double; int Options = 0; Sophus::SO3<Scalar_, Options>::Tangent = Eigen::Matrix<double, 3, 1>; Sophus::SO3<Scalar_, Options>::Scalar = double]', file '/home/yhzhao/test_git/RESLAM/thirdparty/Sophus/sophus/so3.hpp', line 563.
SO3::exp failed! omega: nan nan nan, real: nan, img: nan
Aborted (core dumped)
I'm currently a bit busy and will try to run the sequences in the evening.
Hi,
I looked at rgbd_dataset_freiburg2_large_with_loop
and this sequence cannot work with RESLAM as we need a depth map to initialize the edges. For example, the depth map 1311875592.200814
of rgbd_dataset_freiburg2_large_with_loop
contains nearly no valid depths. The problem is that (nearly) all RGBD sensors cannot estimate depth for surfaces far away from the sensor (around > 6 m) due to their small baseline. To process such sequences, you would need a system that can handle either monocular images (without depth) or one the can also estimate the depth of edges without initialization from the depth sensor.
Regarding the crash, there seems there is a bug in RESLAM that causes some problems after repeated tracking losses. Sadly, I don't have time to look into the problem at the moment since I'm not employed by the university anymore.
Thanks for pointing me to this error and I hope I'll find time in the future to fix it.
Another segmentation fault was found while running RESLAM with "rgbd_dataset_freiburg1_floor" repeatedly at the sequence of "1305033560.376140.png". Have you finished fixing the aforementioned bugs in the system? Looking forward to improvements.
Thanks and regards.
Hi,
thanks for pointing that out.
I was pretty busy the last months but since everything is a bit slower these days due to Coronavirus I might have time to look into it at the end of next week. I remember that rgbd_dataset_freiburg1_floor
ran through on my system at some point. Strange that it stopped working. I'll investigate also next week.
Best
Fabian