pointcloud-processing

Filter, downsample, and project PointCloud2 data in ROS 2 with PCL.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill pointcloud-processing-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pointcloud-processing
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/pointcloud-processing
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill pointcloud-processing-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Working with raw 3D point clouds in ROS 2 requires understanding the packed binary PointCloud2 format and configuring the right PCL filters, which is error-prone without a reference. This Skill provides the message structure, filter configurations, and projection setup needed to process point clouds for navigation. ## Core Features & Use Cases - PointCloud2 Format Reference: Explains the binary buffer layout, common field arrangements (XYZ, XYZRGB, XYZI), and how to read points in Python with sensor_msgs_py or in C++ with pcl_conversions. - PCL Filter Configurations: Ready-to-use YAML parameters for VoxelGrid downsampling, PassThrough cropping, StatisticalOutlierRemoval denoising, and CropBox robot-body removal. - 3D-to-2D Projection: Configures pointcloud_to_laserscan to convert depth camera clouds into virtual LaserScan messages consumable by Nav2 costmaps. - Use Case: A robot with a depth camera needs obstacle detection in Nav2. Use this Skill to downsample the cloud, strip the floor and robot body, then project it to a LaserScan registered as a costmap observation source. ## Quick Start Ask the assistant to configure a pointcloud_to_laserscan pipeline that filters a depth camera cloud and feeds it into the Nav2 costmap.

Frequently Asked Questions about pointcloud-processing

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I read PointCloud2 messages in Python ROS 2?

Use sensor_msgs_py.point_cloud2.read_points with field_names like ('x', 'y', 'z') and skip_nans=True to iterate over points. In C++, use sensor_msgs::PointCloud2Iterator or pcl_conversions to convert to pcl::PointCloud.

How do I convert a point cloud to LaserScan for Nav2?

Use the pointcloud_to_laserscan node, which projects a 3D cloud into a 2D LaserScan by taking the nearest point per angular bin. Set target_frame to base_link, configure min_height and max_height to exclude floor and ceiling, then add the scan as a costmap observation source.

What is the difference between PassThrough and CropBox filters?

PassThrough crops points along a single axis using min and max limits, while CropBox operates on a full 3D box with an optional input frame. CropBox with negative=true is useful for removing points inside a box, such as the robot body.

Why does my point cloud projection fail with TF errors?

The pointcloud_to_laserscan node transforms the cloud to target_frame before projection, so TF must exist between the camera optical frame and base_link. Publish the transform via URDF static transforms and check transform_tolerance if frames are delayed.

How do I reduce point cloud size without losing structure?

Apply the VoxelGrid filter, which divides space into voxels of leaf_size and replaces each voxel's points with their centroid. A leaf size around 0.05 meters typically reduces point count dramatically while preserving overall geometry.