Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Computed T_pivot_end about latest new added laser in window not used ? #72

Open
narutojxl opened this issue Jun 30, 2020 · 1 comment
Open

Comments

@narutojxl
Copy link

narutojxl commented Jun 30, 2020

Hi @hyye. Thanks for your awesome code first.
In initialized phase:
We call BuildLocalMap to build local map, from [pivot, end] lasers in window. For the end laser frame, which is new added into window, in ProcessImu use imu meas predict the end frame pose in b0(IMU world frame) frame. When calling CalculateLaserOdom to process the end frame, calculated transform between pivot and end T_pivot_end stored in local_transforms[estimator_config_.window_size] seems not used by something. Because local_transforms is a local variable, after BuildLocalMap return, the local variable is destoried.
It is my guess: Should we use T_pivot_end(laser to laser relationship) to refine the predicted frame in b0, and then stored in Ps_[estimator_config_.window_size], Rs_[estimator_config_.window_size] for the following module use?
Thanks for your help !

@narutojxl
Copy link
Author

Hi @hyye :) I found the commented out code exactlly matches my above guess. I don't figure out for what reason, you comment the following code: from line 1584 to line 1598 in Estimator.cc. If we don't update the imu predicted new added frame pose in b0, Does it mean that there is no need to iteratively call gassian-newton to calculate the T_pivot_end in CalculateLaserOdom() function?

//      int pivot_idx = int(estimator_config_.window_size - estimator_config_.opt_window_size);
//
//      Twist<double> transform_lb = transform_lb_.cast<double>();
//
//      Eigen::Vector3d Ps_pivot = Ps_[pivot_idx];
//      Eigen::Matrix3d Rs_pivot = Rs_[pivot_idx];
//
//      Quaterniond rot_pivot(Rs_pivot * transform_lb.rot.inverse());
//      Eigen::Vector3d pos_pivot = Ps_pivot - rot_pivot * transform_lb.pos;
//
//      Twist<double> transform_pivot = Twist<double>(rot_pivot, pos_pivot);
//
//      Twist<double> transform_bi = transform_pivot * local_transforms[idx].cast<double>() * transform_lb;
//      Rs_[idx] = transform_bi.rot.normalized();
//      Ps_[idx] = transform_bi.pos;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant