Add RB-FFBSi smoother for MEM-RBPF trackers#2071
Merged
Merged
Conversation
Contributor
✅MegaLinter analysis: Success
Notices📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining See detailed reports in MegaLinter artifacts Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining
|
Owner
Author
|
@copilot Fix megalinter issues |
Agent-Logs-Url: https://github.com/FlorianPfaff/PyRecEst/sessions/f35dc75a-7194-46a9-a49a-f4a6528b9df3 Co-authored-by: FlorianPfaff <6773539+FlorianPfaff@users.noreply.github.com>
auto-merge was automatically disabled
May 17, 2026 16:21
Head branch was pushed to by a user without write access
Agent-Logs-Url: https://github.com/FlorianPfaff/PyRecEst/sessions/f35dc75a-7194-46a9-a49a-f4a6528b9df3 Co-authored-by: FlorianPfaff <6773539+FlorianPfaff@users.noreply.github.com>
Contributor
Fixed the MegaLinter issue by updating the IDKF typing in |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
This PR adds a PyRecEst-native fixed-interval Rao-Blackwellized FFBSi smoother for
MEMRBPFTrackerforward passes.It includes:
MEMRBPFForwardRecord: detached weighted filtering records for MEM-RBPF scans.RBFFBSiResult: structured smoother output with point estimates, kinematic RTS results, backward-sampled particle trajectories, and sample states.MEMRBPFFFBSiSmoother: fixed-interval RB-FFBSi smoother.MEMRBPF_FFBSiSmootherandRBFFBSiSmoother.pyrecest.smoothers.Why
The MEM-RBPF tracker already has a Rao-Blackwellized filtering structure: a shared Gaussian kinematic state, orientation particles, and conditional Gaussian semi-axis states. FFBSi is a natural offline smoother for this representation.
The reproduction repository had an FFBSi smoother implemented as a local tracker subclass. This PR instead adds a reusable smoother API around explicit forward records, so applications can either collect records manually or build them from
MEMRBPFTrackerinstances.Main implementation choices
MEMRBPFForwardRecordobjects rather than owning the forward filtering loop.MEMRBPFForwardRecord.from_tracker(tracker)supports a futuretracker.get_filtering_state(...)hook when available, and otherwise falls back to current tracker arrays.MEMRBPFTracker.get_state(full_axis_lengths=True), but the smoother supports semi-axis output withfull_axis_lengths=False.Files changed
src/pyrecest/smoothers/mem_rbpf_ffbsi_smoother.pysrc/pyrecest/smoothers/__init__.pytests/smoothers/test_mem_rbpf_ffbsi_smoother.pyTests included
The tests cover:
MEMRBPFForwardRecord.from_tracker(...)after a tracker update;Suggested validation
Syntax validation performed while drafting:
Notes
This intentionally does not port the reproduction repository's
MEMRBPF_FFBSitracker subclass as-is. The upstream version separates recording from smoothing and exposes a reusable smoother API around explicit forward records.The branch was created from a recent
main, butmainmoved while this was being pushed. The changes are additive except forsmoothers/__init__.py, so rebasing should be straightforward if GitHub reports the branch as behind.