ROS 2 package for bidirectional conversion between 3D point clouds and 2D laser scans.
pointcloud_to_laserscan is a ROS 2 package that converts 3D point cloud data into 2D laser scans and vice versa. It solves the problem of interoperability between 3D sensors (like depth cameras or LiDAR) and 2D navigation systems that expect laser scan inputs, enabling robots to use 3D perception data in 2D-based algorithms.
ROS 2 developers and roboticists working on perception, navigation, or sensor fusion who need to bridge 3D and 2D sensor data pipelines.
Developers choose this package because it provides a reliable, configurable, and ROS 2-native solution for bidirectional conversion, ported from the widely used ROS 1 version, ensuring compatibility and ease of integration in robotic systems.
Converts a 3D Point Cloud into a 2D laser scan.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports both PointCloud to LaserScan and LaserScan to PointCloud conversions, enabling seamless data flow between 3D and 2D systems, as shown by the two separate node components in the README.
Offers fine-grained control via parameters like min_height, max_height, angle ranges, and range limits, allowing precise adaptation to different sensor setups and environments, detailed in the parameter lists.
Includes target_frame and transform_tolerance parameters to handle coordinate transformations before conversion, ensuring data consistency in complex robotic systems, as specified in the README.
Ported from the widely used ROS 1 version, ensuring reliability and compatibility with ROS 2 ecosystems, making it a trusted choice for migration and integration.
The conversion uses basic height-based projection without handling occlusion or complex 3D geometries, which can lead to inaccurate scans in cluttered or dynamic environments.
Defaults like min_height (2.2e-308) and max_height (1.8e+308) are extreme and require manual configuration to avoid processing irrelevant data or missing critical points, as noted in the README.
Nodes only process input if there's at least one subscriber to the output topic, which could silently drop data if subscriptions are not properly managed, a limitation mentioned in the subscribed topics section.
The README lacks details on error handling for malformed inputs or transformation failures, potentially leading to crashes or undefined behavior in production systems.