-
Notifications
You must be signed in to change notification settings - Fork 310
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
Refactor KissICP pipeline to mantain just 1 pose instead of full trajectory. Fixes #122 #318
Conversation
725e57f
to
0b5311d
Compare
@tizianoGuadagnino @benemer this is ready for a real round of reviews. I modified the PR description, title, etc so please re-read. |
Now I like it even better. The `pipeline` is in charge of managing the trajectory of poses, as the KISS ICP method is invariant to this.
Regarding the naming, I would vote for |
Regarding Deskewing, I think we can just keep one with the delta/velocity and compute it on the Python side in the MotionCompensator when calling |
Executed now what was current became last, and I also feel now the flow it is more clear |
Didn't fully get what you mean here @benemer |
I was referring to this Todo list's point:
I now removed the deskewing that takes start and end pose because it was not used anyway. |
Given that the performance is not affected (Tiziano and I will check later), I am now happy with the changes! |
While I review this I'll split the diffs in different PRs to keep a cleaner changelog and for future criminology purposes :) great work guys thanks! |
@nachovizzo I think the log is quite clear, we wanted to use a single pose rather then a vector -> Consequence we need to change the Any other change is collateral and minor, from my point of view. I would rather add more comments and discussions here than have you do different PR now, which is more time consumed for you and probably more confusion for me and Ben later on. Lets make a more detailed log here and move forward. |
FYI we will give the final answer about the new |
PS: we discuss with @benemer and ATE change goes in fact in a different PR because we are still in the process of getting it right. Ben is working on splitting this, after that we can merge |
This reverts commit af201c4.
New PR with the ATE change is now at #324 I reverted it here 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Confirmed that the results do not change significantly in any of the datasets we tested with @benemer. We can proceed to merge this.
The idea of this PR is to provide a solution to #122 that also improves the whole KISS-ICP implementation
General Idea
I think I'm happy in general with moving away to maintaining an infinite list of poses just to always use the current one (
current_pose_
) and the difference to the last (current_delta_
). So I think the system is benefiting from this change as we don't add extra stuff just because. It models better the problem we are trying to solve and expresses more clearly what we need to keep track of to solve that problem with our approachWhat we changed
std::vector<Sophus::SE3d>
poses_ member from the C++ pipeline.current_pose_
(name to be defined) andcurrent_delta_
(as this is the only variable we were generating from theposes_[N-2]
delta
estimation instead of the start/end poses.(this was not overloaded in the Python module)done in a8c39f6HasMoved
, etc utility functionsImportant
The Python pipeline will be now the only system that contains the full trajectory. As the C++ one is mainly consumed in ROS it's trivial to create a trajectory by just subscribing to the
kiss/odometry
topic in generalUpdate: a8c39f6 shows how this trajectory should be handled in the "application" and not in the KISS ICP mehotd itself, making the kiss_icp.py even more similar to the C++ evil twin
To do
delta
Is a bit generic,current_pose
is the current, the last, which pose? I putpose
since the moment you ask Kiss for this data member will give you the current estimate it has. Shoulddelta
be renamed toprediction
? I dunno