-
Notifications
You must be signed in to change notification settings - Fork 656
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
Concatenate node algorithm didn't work the same as it described #6832
Comments
@vividf according to possible solutions without specifying the main_pointcloud, what happens if there are multiple pointcloud drops and when does the timer start, is it after getting the third pointcloud into the buffer? |
@palas21 |
This pull request has been automatically marked as stale because it has not had recent activity. |
This PR #8300 solves the issue and will be merged soon. |
Checklist
Description
In the concatenate node description, it describes that if one sensor (pointcloud) fails, the node will still concatenate the remaining pointcloud. (see the last 5 pointcloud in the diagram shown below)
However, the algorithm implementation doesn't work as in the diagram. In the scenario when one of the
Pointcloud C
doesn't come, and thePointcloud D
, which already exists in the buffer, arrives at the node, the timer will reset (start) with the periodtimeout_sec
. In this case, the timeout won't happen int3
as the timer just starts again. Finally, Pointcloud F arrives and the current algorithm will concatenatePointcloud D, E, F
, and discardPointcloud A, B
.In some scenarios (imagine we have top, left, and right lidars) we can control the publish time of each Lidar. We will set the most important pointcould (top) as the last-coming pointcloud. In this case, the current algorithm works fine because if the left and the right pointcloud
(Pointcloud A, B)
come and the top pointcloud(Pointcloud C)
doesn't come. It is better to discard the left and the right pointcloud(Pointcloud A, B)
as the concatenate pointcloud (without top pointcloud) might cause problems to the perception module. However, in this case, we probably need to add a parameter/algorithm that indicates which lidar is the main lidar, and when the main lidar doesn't arrive, we won't concatenate the pointcloud.reference:
https://github.com/autowarefoundation/autoware.universe/blob/main/sensing/pointcloud_preprocessor/docs/concatenate-data.md
Purpose
Provide a more robust algorithm for concatenating pointlcloud.
Possible approaches
This is the current algorithm of the concatenate node.
Possible approach:
main_pointcloud_topic
, which we don't concatenate the pointcloud if the pointcloud buffer lacks themain_pointcloud
.timeout_sec
when receivingPointcloud D
, we do the concatenate if the main_pointcloud is in the bufferExample
Pointcloud C
is main_pointcloud, then do the same thing as the current algorithm does.Pointcloud C
is not the main_pointcloud, we wait until the timeout then we publish. Or we receivePointcloud D
before the timeout, we also concatenate the pointcloud.Definition of done
The concatenate node can handle scenarios that are required.
The text was updated successfully, but these errors were encountered: