autowarefoundation / autoware.universe

https://autowarefoundation.github.io/autoware.universe/
Apache License 2.0
876 stars 566 forks source link

Concatenate node algorithm didn't work the same as it described #6832

Open vividf opened 2 months ago

vividf commented 2 months ago

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) image

However, the algorithm implementation doesn't work as in the diagram. In the scenario when one of the Pointcloud Cdoesn't come, and the Pointcloud D, which already exists in the buffer, arrives at the node, the timer will reset (start) with the period timeout_sec. In this case, the timeout won't happen in t3 as the timer just starts again. Finally, Pointcloud F arrives and the current algorithm will concatenate Pointcloud D, E, F, and discard Pointcloud 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.

concatenode drawio (1)

Possible approach:

Example

Definition of done

The concatenate node can handle scenarios that are required.

vividf commented 1 month ago

Possible solution diagram concatenate drawio (3)

palas21 commented 1 week ago

@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?

vividf commented 1 week ago

@palas21 Thanks for your question. The solution won't be the one described above. I will provide the decided solution later :)