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

how can i use kitti odometry data? #6

Closed
dongfangzhou1108 opened this issue Dec 22, 2021 · 6 comments
Closed

how can i use kitti odometry data? #6

dongfangzhou1108 opened this issue Dec 22, 2021 · 6 comments

Comments

@dongfangzhou1108
Copy link

hi,appreciate your great work,
but when i use kitti data,which have no distortion in http://www.cvlibs.net/datasets/kitti/eval_odometry.php,
that is mean there is no use to Update keypoints when run CT_ICP_GN() function,
and i aslo think we do not need to use pose and velocity constraint in the paper,
what should i do to modify the code?

thanks a lot

@GraceMelon
Copy link

I have a similar question. Since you mentioned the following for Kitti-corrected dataset:
"The frames are motion-compensated (no relative-timestamps) and the Continuous-Time aspect of CT-ICP will not work on this dataset."
How to set the config file or modify the code to achieve the results you reported in your paper for Kitti-corrected dataset? I have a kitti-corrected dataset at hand. I tried to set the dataset_options.dataset to Kitti, the result is worse than the one reported in the paper. But when I set to Kitti-raw, the result is close to the one reported in the paper. That's quite confusing.

Another question, one of the dataset I downloaded from Kitti website the synced lidar data is stored in .bin format while the raw lidar data is stored in .txt format. How to transform the .txt format to .ply?
Thanks!

@pdell-kitware
Copy link
Collaborator

I have a similar question. Since you mentioned the following for Kitti-corrected dataset: "The frames are motion-compensated (no relative-timestamps) and the Continuous-Time aspect of CT-ICP will not work on this dataset." How to set the config file or modify the code to achieve the results you reported in your paper for Kitti-corrected dataset? I have a kitti-corrected dataset at hand. I tried to set the dataset_options.dataset to Kitti, the result is worse than the one reported in the paper. But when I set to Kitti-raw, the result is close to the one reported in the paper. That's quite confusing.

Another question, one of the dataset I downloaded from Kitti website the synced lidar data is stored in .bin format while the raw lidar data is stored in .txt format. How to transform the .txt format to .ply? Thanks!

Hi,

To run CT-ICP on the KITTI corrected dataset,
Which are motion corrected, you should specify the following options, in the YAML config file

odometry_options:
motion_compensation: NONE

This will result in using the standard point to plane error (which optimizes on one pose as parameter),
Instead of the two in our Continuous ICP.

I will check, but normally you should have the same / close results as in our paper.

For the PLY files you can directly download the KITTI ply files we propose in the download link.

@GraceMelon
Copy link

hi,appreciate your great work, but when i use kitti data,which have no distortion in http://www.cvlibs.net/datasets/kitti/eval_odometry.php, that is mean there is no use to Update keypoints when run CT_ICP_GN() function, and i aslo think we do not need to use pose and velocity constraint in the paper, what should i do to modify the code?

thanks a lot

Please correct me if I'm wrong.
Update keypoints part in CT_ICP_GN() function is transforming the points to the map coordinate and is necessary for the next iteration.
I also doubt the improvement of adding pose and velocity constraint. I tried to comment Line 891 to Line 909 in ct_icp.cpp, the result doesn't make a big difference.

@pdell-kitware
Copy link
Collaborator

hi,appreciate your great work, but when i use kitti data,which have no distortion in http://www.cvlibs.net/datasets/kitti/eval_odometry.php, that is mean there is no use to Update keypoints when run CT_ICP_GN() function, and i aslo think we do not need to use pose and velocity constraint in the paper, what should i do to modify the code?
thanks a lot

Please correct me if I'm wrong. Update keypoints part in CT_ICP_GN() function is transforming the points to the map coordinate and is necessary for the next iteration. I also doubt the improvement of adding pose and velocity constraint. I tried to comment Line 891 to Line 909 in ct_icp.cpp, the result doesn't make a big difference.

Well, we found that most of the time, these constraints are not needed (when there is enough geometric constraints in the environment),
But sometimes, introducing two poses as parameters introduces too many degrees of freedom, which lead to failed / inconsistent poses.
Think of it as an elastic cord which you hold by the two ends. If your constraints are only at the center of the cord, then there is a lot of positions in which you can place your two hands. If however your constraints are well spread between the beginning, and (where your hands are) and the middle, then you have a much better defined objective.

In our case the constraints are defined by the geometric features of the environment, so when you are in the first case (geometric constraints in the temporal middle of the frame), then these constraints are helpful to prevent misalignments.

Hope this answer your question. If not, I will try to answer the best I can.

We are working hard to improve CT-ICP (notably introducing the ROS wrapping, which should be pushed in later this week)
So thanks for your comments, this will help us improve the interface further.

@dongfangzhou1108
Copy link
Author

hi,appreciate your great work, but when i use kitti data,which have no distortion in http://www.cvlibs.net/datasets/kitti/eval_odometry.php, that is mean there is no use to Update keypoints when run CT_ICP_GN() function, and i aslo think we do not need to use pose and velocity constraint in the paper, what should i do to modify the code?
thanks a lot

Please correct me if I'm wrong. Update keypoints part in CT_ICP_GN() function is transforming the points to the map coordinate and is necessary for the next iteration. I also doubt the improvement of adding pose and velocity constraint. I tried to comment Line 891 to Line 909 in ct_icp.cpp, the result doesn't make a big difference.

Well, we found that most of the time, these constraints are not needed (when there is enough geometric constraints in the environment), But sometimes, introducing two poses as parameters introduces too many degrees of freedom, which lead to failed / inconsistent poses. Think of it as an elastic cord which you hold by the two ends. If your constraints are only at the center of the cord, then there is a lot of positions in which you can place your two hands. If however your constraints are well spread between the beginning, and (where your hands are) and the middle, then you have a much better defined objective.

In our case the constraints are defined by the geometric features of the environment, so when you are in the first case (geometric constraints in the temporal middle of the frame), then these constraints are helpful to prevent misalignments.

Hope this answer your question. If not, I will try to answer the best I can.

We are working hard to improve CT-ICP (notably introducing the ROS wrapping, which should be pushed in later this week) So thanks for your comments, this will help us improve the interface further.

thanks a lot,
can i understand that the elastic constraint is for more accurate lidar points distortion?
i think your great work can perform de-distortion when optimite pose,
after add the well de-distorted cloud to the map, it well perform good because you build more accurate point clound map.

@GraceMelon
Copy link

hi,appreciate your great work, but when i use kitti data,which have no distortion in http://www.cvlibs.net/datasets/kitti/eval_odometry.php, that is mean there is no use to Update keypoints when run CT_ICP_GN() function, and i aslo think we do not need to use pose and velocity constraint in the paper, what should i do to modify the code?
thanks a lot

Please correct me if I'm wrong. Update keypoints part in CT_ICP_GN() function is transforming the points to the map coordinate and is necessary for the next iteration. I also doubt the improvement of adding pose and velocity constraint. I tried to comment Line 891 to Line 909 in ct_icp.cpp, the result doesn't make a big difference.

Well, we found that most of the time, these constraints are not needed (when there is enough geometric constraints in the environment), But sometimes, introducing two poses as parameters introduces too many degrees of freedom, which lead to failed / inconsistent poses. Think of it as an elastic cord which you hold by the two ends. If your constraints are only at the center of the cord, then there is a lot of positions in which you can place your two hands. If however your constraints are well spread between the beginning, and (where your hands are) and the middle, then you have a much better defined objective.

In our case the constraints are defined by the geometric features of the environment, so when you are in the first case (geometric constraints in the temporal middle of the frame), then these constraints are helpful to prevent misalignments.

Hope this answer your question. If not, I will try to answer the best I can.

We are working hard to improve CT-ICP (notably introducing the ROS wrapping, which should be pushed in later this week) So thanks for your comments, this will help us improve the interface further.

Thank you very much for your detailed explanation. Looking forward to the ROS wrapping.

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

3 participants