pointcloud_filter is a ROS2 package designed to process and filter 3D point clouds from a LiDAR sensor. It removes unwanted rings (caused by secondary LiDAR reflections) and filters out points belonging to the robot itself. The package also projects the 3D point cloud into a 2D LaserScan message for use in SLAM and mapping.
- Removes unwanted LiDAR rings (caused by secondary pulse returns).
- Filters out points belonging to the robot's own structure.
- Converts a 3D point cloud into a 2D
LaserScanfor navigation and SLAM. - Optimized using C++ & PCL for real-time performance.
- Easily configure via rqt or command line parameters.
- Output frame transform if needed.
- Output frame transform requires that axis are aligned (no rotations between frames)
Navigate to your ROS2 workspace and clone the package.
Build the package using colcon and source the workspace.
Use run or launch to start the node.
ros2 run pointcloud_filter pointcloud_filter
ros2 run pointcloud_filter pointcloud_filter --ros-args -p laser_output_frame:="base_footprint"
ros2 launch pointcloud_filter filterPCL_and_convertLS.launch.py
ros2 launch pointcloud_filter yaml_cfg_filter.launch.py
/ouster/points(sensor_msgs/PointCloud2) - Raw LiDAR point cloud input.
/ouster/points_filtered(sensor_msgs/PointCloud2) - The filtered 3D point cloud./scan(sensor_msgs/LaserScan) - The projected 2D laser scan.
This package requires the following dependencies:
- ROS2 (Humble or later)
- PCL (Point Cloud Library)
sudo apt-get install libpcl-dev - pcl_conversions
- sensor_msgs
- rclcpp
Ensure they are installed before building the package.
Contributions are welcome! Follow these steps:
- Fork the repository on GitHub.
- Clone your fork.
- Create a new branch.
- Make your changes and commit.
- Push and create a Pull Request.
This project is licensed under the Apache-2.0 License.
For issues, feature requests, or questions, open a GitHub Issue or contact:
📩 Email: mahdichalaki@ualberta.ca
📌 GitHub: mahdichalaki