Skip to content

Removal of PCL point struct header in public API #16

@rcp1-beg

Description

@rcp1-beg

Dear users of @bosch-engineering/off_highway_sensor_drivers,

we recently had an internal discussion regarding the current build_export dependency on libpcl-dev and whether it is justified, given that it is not needed at runtime.

As you may know, ROS tooling does not differentiate between development and runtime dependencies for major platform packaging (like Debian). Consequently, the build_export dependency results in a Debian dependency even though libpcl-dev is not required for the drivers' runtime. Unfortunately, the PCL does not separate its development packages into components (there is no libpcl-common-dev), which means that the Debian packages of the off_highway_sensor_drivers automatically install the full PCL, including its large sized tooling (a full JDK). This poses a significant challenge for resource-constrained systems.

The build_export is only necessary because we provide the point struct definition in pcl_point_xxx.hpp as part of our public API. This allows subsequent dependent packages to use this definition and parse the sensor's point cloud data message more easily in C++.

We argue that the sensor_msgs::msgs::PointCloud2 already contains all the information to parse it correctly (field information etc.), and the additional header struct is - strictly speaking - not needed. Therefore, we plan to deprecate pcl_point_xxx.hpp first and remove it in future releases.

Instead, we would use the sensor_msgs built-in tools to fill and parse the PointCloud2 message, e.g. sensor_msgs::PointCloud2Modifier.

As you may know, we are currently developing the driver for the series release of the Radar Off-Highway Premium. For this new driver, we have already decided not to provide the point struct in our public API.

Please note that the current runtime dependencies to pcl_ros and pcl_conversions (which again depend on libpcl-dev) will be cleaned up and reduced to only build and test dependencies, so they can be excluded from this discussion, afaik.

Before proceeding in this direction for the already existing and published drivers, we would like to gather your feedback here. Please respond:

  • If you currently rely on the point struct header.
  • If you always install and use PCL in your system for other purposes, so the large dependency does not matter to you.
  • Whether you use the ROS tooling for bundling packages in production or build anyhow from source

In summary: We plan to deprecate the pcl_point_xxx.hpp, if you have any objections, please respond.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions