ekf-sensor-fusion

Configure robot_localization EKF to fuse odometry, IMU, and GPS sensor data.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Fusing multiple robot sensors (wheel odometry, IMU, GPS, visual odometry) into one consistent state estimate is error-prone: misconfigured boolean vectors cause oscillation, drift, or double-fused dimensions. This Skill provides correct, explained configuration patterns for the ROS robot_localization ekf_filter_node. ## Core Features & Use Cases - 15-Dimension State Configuration: Explains the EKF state vector and how to write per-source 15-element boolean config vectors for odom, imu, pose, and twist inputs. - Differential Drive + IMU Pattern: Provides a validated configuration where wheel odometry fuses velocities only and the IMU fuses absolute yaw, yaw rate, and forward acceleration, avoiding double-fusing. - Complete YAML Template: Ships a full ekf_filter_node parameter file including frame setup, two_d_mode, process noise covariance, and initial estimate covariance. - Use Case: A robotics engineer setting up localization on a differential-drive ground robot can copy the YAML, adjust topic names, and get a stable fused /odometry/filtered output without fighting TF extrapolation or drift issues. ## Quick Start Ask the AI to generate a robot_localization EKF configuration for a differential-drive robot with wheel odometry on odom/unfiltered and an IMU on imu/data.

Frequently Asked Questions about ekf-sensor-fusion

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

FAQPage Schema
How do I configure robot_localization EKF for a differential drive robot?

Configure wheel odometry to fuse only vx and vyaw velocities, and the IMU to fuse absolute yaw, vyaw, and ax acceleration. Enable two_d_mode to lock z, roll, and pitch to zero, and set world_frame to odom for a local-frame filter.

What is the 15-element config vector in robot_localization?

Each input source declares a 15-element boolean vector matching the EKF state vector: x, y, z, roll, pitch, yaw, their velocities, and linear accelerations. True values mark which dimensions that sensor contributes to the filter.

Should I fuse wheel odometry position or velocity in the EKF?

Fuse velocities only, not positions. The EKF integrates velocities into position internally, so fusing raw odometry position makes the filter fight between its own integration and the measurement, causing oscillation.

Why does my EKF output oscillate or drift when stationary?

Oscillation usually means the same dimension is fused as absolute values from two sources; switch one to differential mode or remove it. Stationary drift typically comes from IMU acceleration bias, fixed by enabling imu0_remove_gravitational_acceleration and calibrating at rest.

How do I fix TF extrapolation warnings from robot_localization?

Enable predict_to_current_time so the filter forward-predicts state to the current time, or increase transform_time_offset to future-date the published transform. These reduce perceived lag between sensor timestamps and the EKF output.