Skip to content

[WIP] CT-GP-Factors #2392

Draft
holmesco wants to merge 102 commits intoborglab:developfrom
utiasASRL:develop
Draft

[WIP] CT-GP-Factors #2392
holmesco wants to merge 102 commits intoborglab:developfrom
utiasASRL:develop

Conversation

@holmesco
Copy link

@holmesco holmesco commented Feb 6, 2026

Draft PR for full Continuous-Time, Gaussian-Process Factors dev branch for GTSAM

holmesco and others added 30 commits July 18, 2025 13:26
Squashed commit of the following:

commit b8db3e4
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Fri Jul 18 13:17:33 2025 -0400

    Added optimization test for WNOA Factor. Integrated WNOA into Lost in the woods example.

commit b6570f4
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Thu Jul 17 23:56:16 2025 -0400

    WNOA optimization tests passing for SE2 and SE3. Moved all code into header file.

commit 7f62e0e
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Thu Jul 17 20:18:18 2025 -0400

    Converted WNOA factors to version that splits up the velocity and pose states into separate variables. Also implemented templated version. Tests passing except optimization test.

commit 481d2d3
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Mon Jul 14 19:57:39 2025 -0400

    Implemented and tested Jacobians for WNOA model.

commit 3db0d86
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Sun Jul 13 20:13:36 2025 -0400

    WNOA has testable trait. Added test cases for factor error eval.

commit a7a0fc3
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Sat Jul 5 19:09:59 2025 -0400

    Started building WNOA motion model factor and unittests.

commit 24af876
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Thu Jun 19 20:36:28 2025 -0400

    Assignment 2 now converging with bearing range measurements, even when init from odom.

commit 7910855
Author: Connor Holmes <connor.holmes@mail.utoronto.ca>
Date:   Thu Jun 19 16:20:13 2025 -0400

    Implementing bearing and range measurements. Expression working but optimization blows up.

commit ffebeae
Author: Connor Holmes <connor.holmes@mail.utoronto.ca>
Date:   Wed Jun 18 15:24:43 2025 -0400

    assmt 2 with odometry-only working

commit 6b48451
Author: Connor Holmes <connor.holmes@mail.utoronto.ca>
Date:   Tue Jun 17 20:19:01 2025 -0400

    Import assigment 2 data and start making factor graph

commit 3643a3c
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Mon Jun 16 17:25:05 2025 -0400

    can store results and reproduce plots with python for 2d case, but something seems wrong with the covariance scaling

commit 14a52ec
Author: newtype51 <connor.holmes@mail.utoronto.ca>
Date:   Fri Jun 13 19:10:47 2025 -0400

    set up dev container
- Changed Qc to a vector
- Implemented new Point1 Manifold
- Renamed WNOAFactors.h to WNAOFactor.h for consistency
- Minor changes to plotting script (removed absolute path)
- Point1 Manifold
- Giant-Glass-Of-Milk dataset
…ng (required yaml-cpp install). Added gt trajectory to plots.
Created evaluable class for bearing-range 2d meas and wrote test functions for this class.
Updated plotting so that it generates STEAM/GTSAM comparison plots.
resolved conflicts in WNOAFactor.h. Tested that it still works
…ses/velocities - used a new way to get the required blocks from JointMarginal
Refactored Interpolator. Covariance interpolation is working.
Allow for extrapolating in Interpolator
SvenLilge and others added 4 commits December 6, 2025 12:08
* Cleaned up WNOAGraph analysis

* precomputation of inner -> outer key mappings

* flattened Jacobian maps

* Improved overall timing of wrapper factors

* fixing seed for reproducability in WNOA analysis

* more timing tests

* Finalized timing tests on A2

* making sure new graph works with multi-threading

* use steady clocks and introduce warm up phase

* Small performance adjustments

* generating results for paper

* fixing implementation of Jacobian functions in WNOAFactor (before they were implemented using expressions in the book, which relied on left hand body frame pertubations)

* added NEES to LostInTheWoods analysis. Fixed error in covariance heading plotting. Fixed error in RMSE calculation

* tuning

* Clean up

* removed the need to indicate which factors are wrappers for the WNOAGraph and used dynamic casting instead - this should add minimal computational overhead but makes it a lot easier to set up the graph for users

* Using precomputed Lambda and Psi values in WNOAGraph
Added handing precomputed values that are shared between states with the same bordering states to the interpolator (these are not exploited yet)

* working on precomputing shared values for states with the same bordering states

* WNOAFactorGraph now precomputes xi_kp1 and xi_kp1_dot, as well as the Jacobians mapping from local to global poses at the borders.
These values are shared between interpolated states with the same bordering states. Adds an additional small speed-up

* Removed redundant code by breaking out computation of xi_kp1, xi_dot_kp1 and associated Jacobians into its own function in Interpolator class

* modified plotting script for plots in paper

* trying to debug SLAM performance
* Clean up Interpolator.h and add Doxygen style comments

* Clean up StateData.h and add Doxygen style comments

* Clean up WNOAFactor.h and add Doxygen style comments

* Clean up WNOAInterpFactor.h and add Doxygen style comments

* Clean up WNOAFactorGraph.h and add Doxygen style comments

* Clean up WNOALMOPtimizer and add Doxygen style comments

* Fix to timing plotting script
@dellaert dellaert requested a review from Copilot February 7, 2026 20:58
@dellaert
Copy link
Member

dellaert commented Feb 7, 2026

Woohoo!!!. I asked for a review from copilot, which knows about our naming conventions, and also ran CI. After these two things have been satisfied by some more commits from y'all, I'll do a deep dive.

@holmesco
Copy link
Author

holmesco commented Feb 7, 2026

I set this up as a draft PR so that I could cleanly see all of the changes. It's definitely not ready for review yet. I will also split it into more digestible PRs, so please disregard for now!

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 33 out of 38 changed files in this pull request and generated 3 comments.


// add WNOA factor
graph.add(WNOAMotionFactor<Pose2>(P(0), V(0), P(1), V(1), timestep, Q_se2));
// Set up initial geuss
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment spelling "geuss" should be corrected to "guess".

Copilot uses AI. Check for mistakes.

// add WNOA factor
graph.add(WNOAMotionFactor<Pose3>(P(0), V(0), P(1), V(1), timestep, Q_se3));
// Set up initial geuss
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment spelling "geuss" should be corrected to "guess".

Copilot uses AI. Check for mistakes.

// add WNOA factor
graph.add(WNOAMotionFactor<Pose3>(P(0), V(0), P(1), V(1), timestep, Q_se3));
// Set up initial geuss
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment spelling "geuss" should be corrected to "guess".

Copilot uses AI. Check for mistakes.
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.

4 participants

Comments