What problem does it solve? Raw 2D lidar scans contain invalid readings (inf, NaN), chassis self-hits, speckle noise, and shadow artifacts that corrupt downstream obstacle detection and costmap generation. This Skill provides the message structure knowledge, conversion math, and filter configurations needed to clean and process LaserScan data in ROS 2. ## Core Features & Use Cases - LaserScan Message Handling: Explains every field of sensor_msgs/msg/LaserScan, including how to compute per-ray angles and validate ranges against range_min/range_max. - Polar-to-Cartesian Conversion: Provides the math and Python snippets to convert valid range readings into 2D points in the sensor frame. - Filter Chain Configuration: Covers the laser_filters package plugins (angular bounds, range, box, shadows, speckle) with ready-to-adapt YAML and launch integration. - Use Case: A robot's lidar sees its own chassis as permanent close obstacles. Diagnose the fixed points in RViz, then apply a LaserScanAngularBoundsFilter to exclude the affected angular range before feeding the scan to a Nav2 costmap. ## Quick Start Ask the assistant to configure a laser_filters chain that removes chassis self-hits and speckle noise from the /scan topic and republishes it for a Nav2 costmap.