wheel-odometry-model

Configure differential drive wheel odometry with encoder calibration and covariance tuning.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires rclpy, nav_msgs, geometry_msgs, tf2_ros.

What problem does it solve? Computing accurate wheel odometry for a differential drive robot requires correct kinematics, careful calibration of wheel parameters, and properly tuned covariance matrices—mistakes in any of these cause drift, arcs instead of straight lines, and poor sensor fusion results. ## Core Features & Use Cases - Differential Drive Kinematics: Derives linear and angular velocity from left/right wheel encoder ticks using wheel separation and diameter. - Pose Integration: Integrates velocities into x, y, yaw pose using the midpoint method for better accuracy on curved paths. - ROS2 Odometry Publishing: Provides a complete Python node skeleton publishing nav_msgs/Odometry with pose/twist covariance and optional TF broadcast. - robot_localization Integration: Shows EKF configuration for fusing wheel odometry with IMU data. - Use Case: When your robot drifts in arcs or reports wrong distances, use this Skill to identify whether wheel_separation, wheel_diameter, or ticks_per_rev is miscalibrated and how to fix it. ## Quick Start Ask the AI to generate a ROS2 differential drive odometry node with calibrated wheel parameters and covariance settings for your robot.

Frequently Asked Questions about wheel-odometry-model

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

FAQPage Schema
How do I compute odometry from wheel encoders in ROS2?

Convert encoder tick deltas to wheel distances using ticks_per_rev and wheel diameter, then derive linear velocity v = (v_right + v_left)/2 and angular velocity omega = (v_right - v_left)/L. Integrate these into x, y, yaw pose and publish as a nav_msgs/Odometry message.

How do I calibrate wheel_separation and wheel_diameter?

Measure wheel diameter under load since the tire compresses, and measure wheel separation center-to-center between tire contact patches, not hubs. A 1% diameter error compounds over distance, and a 2% separation error makes the robot think it turned more or less than reality.

Should my odometry node publish TF when using robot_localization?

No. Set publish_tf to false in the odometry node and let robot_localization publish the odom to base_link transform. Publish your wheel odometry to a topic like odom/unfiltered and reference it in the EKF config as odom0.

Why does my robot drift in arcs instead of driving straight?

Arc drift is typically caused by an incorrect wheel_separation value. Measure it carefully under load and tune it empirically until the robot tracks straight lines accurately.

What covariance values should I set for wheel odometry?

Set twist covariance around 0.01 for vx and 0.03 for vyaw, increasing them if wheels slip or wheel_separation is uncertain. Pose covariance grows over time as integration error accumulates, commonly starting around 0.1 for x/y and 0.05 for yaw.