lidar-filtering

Configure laser_filters chains to clean LaserScan data for ROS2 robots.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Raw LIDAR scans contain chassis self-hits, shadow artifacts at object edges, speckle noise, and out-of-range readings that corrupt Nav2 costmaps and obstacle detection. This Skill provides ready-to-use laser_filters configurations that clean sensor_msgs/msg/LaserScan data before downstream consumption. ## Core Features & Use Cases - Angular and Box Filtering: Remove readings where the LIDAR sees the robot's own chassis using LaserScanAngularBoundsFilter or LaserScanBoxFilter in a TF frame. - Noise Removal: Apply LaserScanShadowsFilter and LaserScanSpeckleFilter to eliminate edge shadow artifacts and isolated noise points. - Complete Filter Chain: A production-ready five-stage YAML chain (angular bounds, range, shadows, speckle) plus launch file integration with topic remapping. - Use Case: Your indoor robot's costmap flickers with phantom obstacles near its rear support brackets. Use this Skill to configure angular bounds filters that exclude those sectors, then verify in RViz that walls remain clean. ## Quick Start Ask the AI to generate a laser_filters chain YAML that removes chassis self-hits between 120 and 140 degrees and filters speckle noise from the /scan_raw topic.

Frequently Asked Questions about lidar-filtering

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

FAQPage Schema
How do I filter LIDAR data in ROS2?

Use the laser_filters package, which applies a chain of configurable filter plugins to sensor_msgs/msg/LaserScan messages. Define filters in a YAML file, then run the scan_to_scan_filter_chain node with topic remappings from your raw scan to a filtered output topic.

How to remove LIDAR readings that hit the robot chassis?

Use LaserScanAngularBoundsFilter to set readings within the chassis angular range to NaN, or LaserScanBoxFilter to remove points inside a 3D box defined in the base_link frame. Multiple filter instances can exclude several chassis regions.

What is the difference between shadow and speckle LIDAR filters?

LaserScanShadowsFilter removes artifacts at object edges where grazing beams create false intermediate-range points, detected via angle changes between adjacent readings. LaserScanSpeckleFilter removes isolated noise points whose range differs from all neighbors beyond a threshold.

Does filter order matter in a laser_filters chain?

Yes. Apply cheap angular and range filters first to remove large chunks of data, then run shadow and speckle filters on the remaining valid points. Placing speckle filtering before range filtering wastes computation on out-of-range readings.

Why does my filtered LIDAR scan rate drop?

The filter chain should publish at the same rate as the input; verify with ros2 topic hz on the filtered topic. A rate drop indicates excessive filter load, so reorder filters to discard invalid points early or reduce filter window sizes.