sensor-fusion
Expert skill for multi-sensor fusion and state estimation using Kalman filtering. Implement EKF/UKF, configure robot_localization, fuse IMU, GPS, odometry, and visual sensors for robust localization.
npx skills add a5c-ai/babysitter --skill sensor-fusion --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Describes a specialized skill for multi-sensor fusion and state estimation using Kalman filtering and factor graph optimization. It enables implementing Extended Kalman Filter (EKF) for state estimation and configuring an Unscented Kalman Filter (UKF), along with robot_localization setup, IMU preintegration and bias estimation, GPS/RTK integration, wheel odometry fusion with slip compensation, visual odometry integration, outlier rejection, covariance tuning, and sensor delay compensation.
How it works
- Provides ROS2 robot_localization configuration for EKF/UKF, including two example YAML blocks: one for continuous odometry using IMU and wheel odometry, and another for global localization combining odometry and GPS. It specifies frames, frequencies, input topics, and which state elements to fuse, plus process and initial covariances.
- Describes a Two-EKF setup: one EKF for continuous odometry (odom frame) and another for global/localization (map/world frame) with specific fusion of IMU, odometry, and GPS data.
- Includes a NavSat transform node configuration to broadcast GPS in a usable frame, with parameters for delays, yaw, and transforms.
- Includes a Custom EKF implementation (Python) with a 12-state vector [x, y, z, roll, pitch, yaw, vx, vy, vz, wx, wy, wz], with predict step using a constant velocity model and Jacobian computation, update steps for IMU, odometry, and GPS measurements, and a protected GPS outlier rejection based on Mahalanobis distance.
- Provides an IMU Preintegration class for factor-graph optimization, handling delta_R, delta_v, delta_p, and covariance, with bias handling and Jacobian updates.
- Contains a Noise Covariance Tuning function template for autocalibration of Q and R through innovation analysis, including a skeleton for processing a data log and computing NEES over measurements.
When to use it
- Use when developing robust robot localization with multiple sensors (IMU, wheel odometry, GPS, visual data) in ROS2 environments.
- Use when you need EKF/UKF variants, IMU preintegration, and outlier rejection for GPS measurements.
- Use when configuring robot_localization with precise frame mappings and timing settings, and when you require tuning guidance for process and measurement noise covariances.
What it can touch
- robot_localization configuration through YAML parameters (ekf_filter_node, ekf_filter_node_odom, ekf_filter_node_map).
- navsat_transform_node parameters for GPS integration.
- Custom Python modules: RobotEKF (state estimation), IMUPreintegration (preintegration), and tune_noise_covariances function (noise calibration).
- Input topics such as /imu/data, /wheel_odom, /odometry/filtered, /gps/odom.
Caveats
- Requires ROS2 with robot_localization package and calibrated sensors (IMU, cameras, wheel encoders).
- Original text includes extensive YAML examples and Python code snippets; actual outcomes depend on real sensor data and proper tuning.
- GPS outlier rejection uses a fixed Mahalanobis distance threshold (5.0) as shown in the code.
- The IMU preintegration implementation provides a simplified covariance propagation and may need adaptation for production-grade factor graphs.
# sensor-fusion You are **sensor-fusion** - a specialized skill for multi-sensor fusion and state estimation using Kalman filtering and factor graph optimization. ## Overview This skill enables AI-powered sensor fusion including: - Implementing Extended Kalman Filter (EKF) for state estimation - Configuring Unscented Kalman Filter (UKF) for nonlinear systems - Setting up robot_localization package configuration - Implementing IMU preintegration and bias estimation - Configuring GPS/RTK integration with local coordinate frames - Implementing wheel odometry fusion with slip compensation - Setting up visual odometry integration - Configuring outlier rejection (Mahalanobis, chi-squared) - Tuning process and measurement noise covariances - Implementing sensor delay compensation ## Prerequisites - ROS2 with robot_localization package - Calibrated sensors (IMU, cameras, wheel encoders) - Understanding of coordinate frames (REP-105) - Sensor noise characteristics ## Capabilities ### 1. robot_localization Configuration Configure the ROS2 robot_localization package for EKF/UKF: ```yaml # ekf_localization.yaml ekf_filter_node: ros__parameters: # Coordinate frames map_frame: map odom_frame: od
- Overview
- Prerequisites
- Capabilities
- 1. robotlocalization Configuration
- 2. Two-EKF Setup (Odom + Map Frames)
- 3. Custom EKF Implementation
- 4. IMU Preintegration
- 5. Noise Covariance Tuning
- 6. Launch Configuration
- MCP Server Integration
- Best Practices
- Process Integration
- Output Format
- Constraints
What does the sensor-fusion skill do?
Expert skill for multi-sensor fusion and state estimation using Kalman filtering. Implement EKF/UKF, configure robot_localization, fuse IMU, GPS, odometry, and visual sensors for robust localization.
How do I install it?
Run `npx skills add a5c-ai/babysitter --skill sensor-fusion --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From a5c-ai/babysitter, a repository with 1,642 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
