lidar-odometry

Configure lidar-based ego-motion estimation using rf2o_laser_odometry or KISS-ICP in ROS 2.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Estimating robot motion from laser scans is difficult when wheel odometry slips or drifts, and choosing between scan-matching packages, tuning their parameters, and fusing their output into an EKF requires scattered documentation. This Skill consolidates setup, configuration, and troubleshooting guidance for lidar odometry in ROS 2. ## Core Features & Use Cases - Package selection guidance: Compares rf2o_laser_odometry (2D LaserScan), kiss-icp (3D PointCloud2), and scan_matcher_karto with CPU, accuracy, and latency trade-offs. - Ready-to-use configuration: Provides YAML parameter blocks and a Python launch file for rf2o, plus KISS-ICP tuning parameters like voxel size and adaptive thresholds. - EKF fusion patterns: Shows robot_localization configurations for using lidar odometry as a differential supplement to wheel odometry or as a full replacement. - Use Case: A robot drifts in a long corridor during autonomous navigation. Use this Skill to configure rf2o with differential EKF fusion and diagnose why corridor drift persists. ## Quick Start Set up rf2o_laser_odometry on my ROS 2 robot to publish odometry from the /scan topic and fuse it with wheel odometry in the EKF.

Frequently Asked Questions about lidar-odometry

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

FAQPage Schema
How do I set up rf2o_laser_odometry in ROS 2?

Launch the rf2o_laser_odometry_node with parameters for laser_scan_topic, odom_topic, base_frame_id, and odom_frame_id. Set publish_tf to false if an EKF handles transforms, and ensure a TF from the laser frame to base_link exists via robot_state_publisher.

rf2o vs KISS-ICP: which lidar odometry package should I use?

rf2o works with 2D LaserScan input, uses about 5% CPU, and suits lightweight robots. KISS-ICP requires 3D PointCloud2 from sensors like Ouster or Velodyne, uses 10-20% CPU, and delivers better accuracy in feature-rich environments.

How do I fuse lidar odometry with wheel odometry in robot_localization?

Add the lidar odometry topic as a second odom input in the EKF config with differential mode enabled, fusing x, y, and yaw positions. Keep wheel odometry as the primary velocity source and ensure covariances are realistic so the EKF weights both correctly.

Why does lidar odometry drift in long corridors?

Parallel corridor walls constrain motion in only one axis, so scan matching cannot correct drift along the corridor direction. This is a fundamental limitation; supplement with wheel odometry through EKF fusion to compensate.

Why does rf2o output zero odometry?

Zero output usually means the TF transform from the laser frame to base_link is missing. Verify that robot_state_publisher publishes the laser-to-base_link transform and that the laser_scan_topic name matches the actual scan topic.