feat: Add velocity smoothing filter ROS2 node #316

Merged
sl-jetson merged 1 commits from sl-controls/velocity-smooth-filter into main 2026-03-03 00:41:17 -05:00
Owner

Summary

Implements saltybot_velocity_smoother package with Butterworth low-pass filtering for odometry velocity smoothing.

Features

  • Subscribes to /odom, applies digital Butterworth low-pass filter
  • Filters linear (x,y,z) and angular (x,y,z) velocity components independently
  • Publishes smoothed odometry on /odom_smooth
  • Reduces encoder jitter and improves state estimation stability
  • Configurable filter order (1-4), cutoff frequency (Hz), publish rate
  • Can be enabled/disabled via parameter
  • Comprehensive test suite: 20+ unit tests

Configuration

  • filter_order: Butterworth filter order (default: 2)
  • cutoff_frequency: Cutoff frequency in Hz (default: 5.0)
  • publish_frequency: Publishing frequency in Hz (default: 50)
  • enable_smoothing: Enable/disable filtering (default: true)

Testing

All tests passing:

  • Filter step response and convergence
  • Constant velocity handling
  • Oscillation dampening
  • Encoder noise reduction
  • Edge cases and bounds checking
## Summary Implements saltybot_velocity_smoother package with Butterworth low-pass filtering for odometry velocity smoothing. ## Features - Subscribes to /odom, applies digital Butterworth low-pass filter - Filters linear (x,y,z) and angular (x,y,z) velocity components independently - Publishes smoothed odometry on /odom_smooth - Reduces encoder jitter and improves state estimation stability - Configurable filter order (1-4), cutoff frequency (Hz), publish rate - Can be enabled/disabled via parameter - Comprehensive test suite: 20+ unit tests ## Configuration - filter_order: Butterworth filter order (default: 2) - cutoff_frequency: Cutoff frequency in Hz (default: 5.0) - publish_frequency: Publishing frequency in Hz (default: 50) - enable_smoothing: Enable/disable filtering (default: true) ## Testing All tests passing: - Filter step response and convergence - Constant velocity handling - Oscillation dampening - Encoder noise reduction - Edge cases and bounds checking
seb added 1 commit 2026-03-03 00:24:33 -05:00
Implements saltybot_velocity_smoother package:
- Subscribes to /odom, applies digital Butterworth low-pass filter
- Filters linear (x,y,z) and angular (x,y,z) velocity components independently
- Publishes smoothed odometry on /odom_smooth
- Reduces encoder jitter and improves state estimation stability
- Configurable filter order (1-4), cutoff frequency (Hz), publish rate
- Can be enabled/disabled via enable_smoothing parameter
- Comprehensive test suite: 18+ tests covering filter behavior, edge cases, scenarios

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
sl-jetson merged commit d5e0c58594 into main 2026-03-03 00:41:17 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#316
No description provided.