Skip to content

feat: Add EKF odometry baseline example - #186

Open
djetshu wants to merge 1 commit into
Ekumen-OS:mainfrom
djetshu:djetshu/ekf-example
Open

feat: Add EKF odometry baseline example#186
djetshu wants to merge 1 commit into
Ekumen-OS:mainfrom
djetshu:djetshu/ekf-example

Conversation

@djetshu

@djetshu djetshu commented Aug 13, 2026

Copy link
Copy Markdown

Proposed changes

Adds examples/ekf/, a new worked example alongside examples/beluga/. It sweeps a single algorithm variant (raw_odom vs ekf_fused) to compare open-loop wheel odometry against a robot_localization EKF fusion, scored with evo_rpe (drift-rate, since open-loop odometry drifts unboundedly). Ships its own ROS 2 package and Docker/Docker Compose environment, reusing the same bundled dataset image as Beluga.

Type of change

  • 🐛 Bugfix (change which fixes an issue)
  • 🚀 Feature (change which adds functionality)
  • 📚 Documentation (change which fixes or extends documentation)1

💥 Breaking change! Explain why a non-backwards compatible change is necessary or remove this line entirely if not applicable.

Checklist

Put an x in the boxes that apply. This is simply a reminder of what we will require before merging your code.

  • Lint and unit tests (if any) pass locally with my changes
  • I have added tests that prove my fix is effective or that my feature works
  • I have added necessary documentation (if appropriate)

Additional comments

  • No automated tests, same as examples/beluga/ — validated by running the benchmark end-to-end in the dev container.
  • Docker only; Podman support left out since it wasn't verified.
  • Worth flagging for review: nominal() deliberately skips --clock on ros2 bag play, since the dataset already carries its own recorded /clock topic. Passing it too starts a conflicting second publisher that corrupts ekf_node's sim time and silently truncates the trajectory — see the README's "Sim time and the recorded /clock topic" section.

Adds a self-contained LAMBKIN example comparing raw wheel odometry against a robot_localization EKF fusion (odom + IMU), scored with evo_rpe against ground truth. Ships its own ROS 2 package and Docker environment, and is referenced from the root README's example list.

Signed-off-by: Daffer Queque <daffer.queque@ekumenlabs.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant