-
Notifications
You must be signed in to change notification settings - Fork 58
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
fix(velodyne_decoder): overflow handling in vls128 #111
Conversation
The timestamps in the vls128 were still relative to the last pointcloud, which was producing some errors Additionally, when entire scans were dropped, the overflow was not being handled correctly (this bug was also present in the awf velodyne driver) Signed-off-by: Kenzo Lobos-Tsunekawa <[email protected]>
Signed-off-by: Kenzo Lobos-Tsunekawa <[email protected]>
Codecov ReportAttention:
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## main #111 +/- ##
=========================================
+ Coverage 6.43% 11.37% +4.94%
=========================================
Files 136 60 -76
Lines 10901 5563 -5338
Branches 854 802 -52
=========================================
- Hits 701 633 -68
+ Misses 9624 4376 -5248
+ Partials 576 554 -22
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
nebula_decoders/src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
Show resolved
Hide resolved
nebula_decoders/src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
Outdated
Show resolved
Hide resolved
Signed-off-by: Kenzo Lobos-Tsunekawa <[email protected]>
…puted time is higher than the next measured one... Signed-off-by: Kenzo Lobos-Tsunekawa <[email protected]>
nebula_decoders/src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
Outdated
Show resolved
Hide resolved
nebula_decoders/src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
Outdated
Show resolved
Hide resolved
…ecoder.cpp Co-authored-by: Benjamin Gilby <[email protected]>
nebula_decoders/src/nebula_decoders_velodyne/decoders/vls128_decoder.cpp
Outdated
Show resolved
Hide resolved
…ecoder.cpp Co-authored-by: Benjamin Gilby <[email protected]>
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.
Looks good. Tested on my end with 3 rosbags with XX1 data. The rosbags used and videos of results can be found at the below link:
The timestamps in the vls128 were still relative to the last pointcloud, which was producing some errors Additionally, when entire scans were dropped, the overflow was not being handled correctly (this bug was also present in the awf velodyne driver)
PR Type
Related Links
TIER IV INTERNAL LINK (discussion)
TIER IV INTERNAL LINK (footage)
Description
2 bugs were discovered and addressed related to the handling of time stamps during pointcloud overflow between scans.
Context:
Nebula-only problem:
Although only the non-overflow points are OK, if we use algorithms that integrate timestamps from all the points starting from the beginning (overflow points), it will cause big errors. This was particularly observed in the distortion correction algorithm (see the provided videos)
The solution simply consists of using as global timestamp the stamp of the overflow points (some conversions were required).
Nebula & old vls driver problem:
For this problem, the proposed solution is that we first detect dropped packages using a rough stamp criteria, and then just ignore the last pointcloud's overflow when necessary (since there are abut 600 packages per scan, we are only loosing 360 * 1 / 600 degrees of information)
Review Procedure
A good way to check that the timestamps are being computed correctly, is comparing the raw_pointcloud with the output of the distortion corrector of autoware.
For example, it would be convenient to compare the behavior of the output of the distortion correction before/after this PR
(additionally, the fix for the original vls implementation also serves as a good baseline https://github.com/knzo25/awf_velodyne/tree/fix/drop_packages_fix )
Remarks
Pre-Review Checklist for the PR Author
PR Author should check the checkboxes below when creating the PR.
Checklist for the PR Reviewer
Reviewers should check the checkboxes below before approval.
Post-Review Checklist for the PR Author
PR Author should check the checkboxes below before merging.
CI Checks