generated from tier4/ros2-project-template
-
Notifications
You must be signed in to change notification settings - Fork 51
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
feat(hesai): add a ring section filter to Hesai sensors #182
Open
mojomex
wants to merge
69
commits into
tier4:develop
Choose a base branch
from
mojomex:hesai-ring-section-filter
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…an cutting The new scan cutting mechanism filters points based on the corrected angle. This changes the points contained/filtered out at the edges of the scan cut.
mojomex
force-pushed
the
hesai-ring-section-filter
branch
from
August 30, 2024 08:12
6c94123
to
34f0336
Compare
mojomex
force-pushed
the
hesai-ring-section-filter
branch
from
August 30, 2024 08:37
34f0336
to
fe23c3c
Compare
mojomex
force-pushed
the
hesai-ring-section-filter
branch
from
September 4, 2024 12:11
6b2d904
to
bf361dc
Compare
… 360deg FoV) to avoid publishing pointclouds later than necessary.
… angle at FoV end in order to publish pointclouds as soon as possible after comletion
…ensor's number of channels
mojomex
force-pushed
the
hesai-ring-section-filter
branch
from
September 5, 2024 07:38
bf361dc
to
5d20af3
Compare
… filters are enabled Signed-off-by: Max SCHMELLER <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Type
Related Links
Description
This PR introduces a simple and extendable framework to implement per-point filters in Nebula. The first filter, also added in this PR, is a ring section filter.
Point Filters
A point filter has one member function
bool excluded(const NebulaPoint &)
which is called per point, right after that point has been fully decoded (including angle correction). The point is excluded from the pointcloud as soon as any of the configured filters excludes it. Filters run sequentially and later filters are not executed if an earlier filter has exluded the point already.The filter pipeline is configured via JSON, in a format like
{"filter1": filter_params1, "filter2": filter_params2}
and each filter type can only appear once.Ring Section Filter
The filter can be configured to cut out zero or more sections of each ring, each section having a start and end angle.
The configuration looks like this:
[[channel_id, start_deg, end_deg], [channel_id, start_deg, end_deg], ...]
. Not all channels have to be specified, and channels can be specified multiple times. The start and end values are floating-point, so precise angles can be defined. Sections can overlap, but no optimizations are done on Nebula's side to merge overlapping regions.Angles greater than 360deg and smaller than 0deg can be specified and will be auto-normalized by Nebula. Sections spanning over the 360/0 boundary are also handled correctly.
Performance
This is a fairly naive implementation:
To measure performance overhead, the following runs have been performed:
All runs have been performed with the maximum possible number of points per cloud (all the filtering code, even for invalid points was commented out).
As can be seen in the figure, one filter per channel has no performance impact. 50 filters per channel increase the average runtime by about +160% compared to the baseline. As there will be a very small number of sections in the real world, this should not be a performance bottleneck in real-world operation.
Review Procedure
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