|
Autoware.Auto
|
|
To properly separate concerns and make it easier to reuse data (i.e. prerecorded bag data, or from the simulator), we need to separate the transforming and filtering data from the drivers into separate nodes.
In particular, we require a boilerplate wrapper around our algorithm, which is implemented as a library. This boilerplate node wrapper allows us to communicate with the rest of Autoware.Auto.
There is one instance of these nodes for the PointCloud2 message type for visualization and open source support.
The point_cloud_filter_transform_node_exe and point_block_filter_transform_node_exe are wrappers around the DistanceFilter, AngleFilter, and StaticTransformer with the following executing order:
DistanceFilter and AngleFilterStaticTransformerThe implementation doesn't allow dynamic thresholds for distance and angle filters. It also doesn't support dynamic transformation during runtime. The thresholds and the transform parameters can only be loaded while constructing the nodes.
These nodes have the following basic structure:
Input:
PointCloud2 directly from driver nodes)Output:
PointCloud2)On top of this, the nodes can be configured either programmatically or via parameter file on construction.
Most error handling occurs inside rclcpp.
The only explicit error handling that occurs in these nodes is catching errors in the runtime loop.
If such an error is caught, then the node will simply transition to a "failed state", log this fact, and attempt to continue running.
TBD by a security specialist.