arclab-hku / ESVIO

ESVIO: Event-based Stereo Visual Inertial Odometry
https://github.com/arclab-hku/Event_based_VO-VIO-SLAM
GNU General Public License v3.0
25 stars 3 forks source link

Stereo_processVisual() doesn't use event data? #2

Closed gyubeomim closed 3 months ago

gyubeomim commented 3 months ago

Hello authors,

Thank you for sharing such an impressive project. I was really impressed by your work.

I have one question about the code when I ran roslaunch esvio_estimator esvio.launch

In estimator.cpp, link

void Estimator::Stereo_processVisual(const map<int, vector<pair<int, Eigen::Matrix<double, 7, 1>>>> &image, // image features
                                     const map<int, vector<pair<int, Eigen::Matrix<double, 7, 1>>>> &event, // event features
                                     const std_msgs::Header &header) {

Stereo_processVisual function should process the optimization using image and event data because there is a solveOdometry_esvio function inside of it. But as far as I know, there is no code to utilize the event feature data and even when I debug it, the event feature data seems never be used.

Is it the right way of Stereo_processVisual to use? or did I miss something?

Thanks in advance!

cpymaple commented 3 months ago

Hi, thanks for your interest. For the "event feature data" problem.

  1. You can find that in the solveOdometry_esvio(), we use both image and event data for triangulation (such as, f_manager.Event_triangulateStereo(); f_manager.Stereo_Event_triangulate(Ps, tic, ric);).

  2. The function optimizationesvio(); is the actual optimization thread that uses the Ceres library. In this function, you can also find that we use both event and image data(such as, problem.AddResidualBlock(f_td, loss_function, para_Pose[imu_i], para_Pose[imu_j], para_Ex_Pose[1], para_EventFeature[Event_feature_index], para_Td[0]);)

gyubeomim commented 3 months ago

@cpymaple Thank you for the reply!

I tried to put the cout code in here

std::cout << "Stereo Event Feature " << Stereo_Event_feature.size() << std::endl; 

But it always print out the size '0' when I ran roslaunch esvio_estimator esvio.launch code. Is there something that I miss??

Thanks in advance!

cpymaple commented 3 months ago

@cpymaple Thank you for the reply!

I tried to put the cout code in here

std::cout << "Stereo Event Feature " << Stereo_Event_feature.size() << std::endl; 

But it always print out the size '0' when I ran roslaunch esvio_estimator esvio.launch code. Is there something that I miss??

Thanks in advance!

Hi, We fix some bugs. And now it can print out normally, maybe you can try again.

gyubeomim commented 3 months ago

@cpymaple Thank you for the quick reply. It's working very well now :-) Have a good day