HKUST-Aerial-Robotics / ESVO

This repository maintains the implementation of "Event-based Stereo Visual Odometry".
433 stars 92 forks source link

esvo_Mapping error #7

Closed robin-shaun closed 3 years ago

robin-shaun commented 3 years ago

Hello, I met the error below both with rpg dataset and upenn dataset. Ubuntu 16.04 + gcc5.4.0 + cmake 3.13.0. Eigen is installed before, the version is 3.2.92. I0103 12:05:16.388438 20419 esvo_Mapping.cpp:234] Initialization is successfully done! esvo_Mapping: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:353: Eigen::DenseCoeffsBase<Derived, 1>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator()(Eigen::Index, Eigen::Index) [with Derived = Eigen::Matrix<int, -1, -1>; Eigen::DenseCoeffsBase<Derived, 1>::Scalar = int; Eigen::Index = long int]: Assertion 'row >= 0 && row < rows() && col >= 0 && col < cols()' failed.

Ethan-Zhou commented 3 years ago

Hmm... Could you please try to locate which line exactly trigger this error? Eigen 3.3.4 is used on my machine by the way.

robin-shaun commented 3 years ago

I change to Eigen 3.3.4 and the result is the same. I will try to locate which line exactly triggers this error.

robin-shaun commented 3 years ago

Hello, when I debugged it on my laptop (workstation before), I met a different problem. The problem is still from esvo_mapping. After Initialization is successfully done, gdb returns the error in esvo_mapping: double free or corruption (out).

Ethan-Zhou commented 3 years ago

Hi, two suggestions for you 1) Slow down the rosbag play as well as the timer which triggers the mapper. Refer to Notes for Good Results (the 4th item). 2) If 1) does not work, please locate which line goes wrong by manually inserting prints with LOG(INFO) << "xxxx".

robin-shaun commented 3 years ago

Thanks a lot. I solved the problem on my laptop (not the workstation before), and it's caused by pcl. I reinstalled pcl and it's ok now.
image Later I will solve the eigen problem on my workstation, and now I'm going to learn how the code works~

Ethan-Zhou commented 3 years ago

Goot to know it's working on your side. Please close the issue once you fix the problem on your workstation. Cheers~

gogojjh commented 3 years ago

This error comes from this operation that the index of the Matrix is out of the range. I located this issue in the match_an_event() in EventBM.cpp: if (camSysPtr_->cam_left_ptr_->UndistortRectify_mask_(x_rect(1), x_rect(0)) <= 125)

I print the x_rect, camera height, and camera width: x_rect: 240.218 36.1435, height: 180, width: 240

This issue can be fixed if the coordinates of x_rect are checked before this operation.

robin-shaun commented 3 years ago

This error comes from this operation that the index of the Matrix is out of the range. I located this issue in the match_an_event() in EventBM.cpp: if (camSysPtr_->cam_left_ptr_->UndistortRectify_mask_(x_rect(1), x_rect(0)) <= 125)

I print the x_rect, camera height, and camera width: x_rect: 240.218 36.1435, height: 180, width: 240

This issue can be fixed if the coordinates of x_rect are checked before this operation.

Ok, thanks a lot.

zeyulong commented 10 months ago

我同样遇到了这个问题。 先说结论:我是因为PCL库的问题。具体来说,自己源码安装的PCL最好不要安装到系统根目录下,也就是默认的/usr/local/下,如果安装到了/usr/local/下,最后链接pcl的库的时候会默认链接到这个路径下的库。但是绝大部分搭建在ros上的工程都是使用ROS自带的pcl-1.8的,这个时候虽然编译可以通过,但是运行的时候会出错。 再说过程:报错信息根本没有PCL这方面的提示,自己根本就不会往这方面想。为了解决这个报错,我花了3天时间,就是解决不了这一个报错。心太累了,昨天已经决定今天重装系统了。天可怜见,还好今天不死心,想再最后挣扎一下。想到有一个代码库指定自己源码安装的opencv会报错,使用find_package(cv_bridge)就不会报错。其他代码库就没有这没问题。要不用ros自带的opencv试试?那其他库ros有没有自带的?都用ros自带的试试?pcl的话ros有没有自带?然后就刷到了这篇博客:https://blog.csdn.net/qq_42731705/article/details/129380907 完美解决!