Use LieGroups.MetricLieGroup and other pose related updates#792
Conversation
| a_m = exp(M, getPointIdentity(M), aX) | ||
| b_m = ArrayPartition(a_m.x[1], bRa * a_m.x[2]) | ||
|
|
||
| q̂ = LieGroups.compose(M, p, b_m) | ||
| return vee(M, q, log(M, q, q̂)) # coordinates |
There was a problem hiding this comment.
This had the known bug (fixed in Pose3Pose3) with the covariance not in the same tangent as the measurement. The rotation offset was also treated as a product manifold, but it is more useful to use SE(3)
0b4235c to
a850d24
Compare
There was a problem hiding this comment.
Pull request overview
This PR updates RoME/RoMETypes pose-related manifolds and factors to use LieGroups.MetricLieGroup (via a new LeftInvariantMetricSE(n) wrapper) and updates downstream code/tests accordingly, alongside some API migrations for newer DistributedFactorGraphs/IncrementalInference versions.
Changes:
- Replace the custom
SOnxRn_MetricManifoldwithLeftInvariantMetricSEbuilt onLieGroups.MetricLieGroup, and update pose factors/tests to use it. - Update multiple call sites to newer DFG APIs (e.g.,
refMeans(getState(...)), blob provider rename). - Add/adjust tests, but also skip a set of tests at the harness level.
Reviewed changes
Copilot reviewed 31 out of 32 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| RoMETypes/src/variables/VariableTypes.jl | Updates Pose2/Pose3 documentation and removes projectCartesian helper. |
| RoMETypes/src/RoMETypes.jl | Switches exports/includes from SOnxRn_MetricManifold to LeftInvariantMetricSE. |
| RoMETypes/src/manifolds/SOnxRn_MetricManifold.jl | Deletes the previous custom metric manifold implementation. |
| RoMETypes/src/manifolds/LeftInvariantMetricSE.jl | Adds new LeftInvariantMetricSE(n) manifold wrapper using LieGroups.MetricLieGroup. |
| RoMETypes/src/factors/FactorTypes.jl | Updates Pose2/Pose3 factor manifold types and revises factor docstrings. |
| RoMETypes/Project.toml | Bumps compat bounds for DFG/LieGroups/RecursiveArrayTools. |
| RoME/test/testScalarFields.jl | Migrates blob store usage to FolderBlobprovider / addBlobprovider!. |
| RoME/test/testPose3Pose3NH.jl | Updates mean/mmd manifold argument to LeftInvariantMetricSE(3). |
| RoME/test/testPose3.jl | Updates parametric state access to DFG.refMeans(getState(...)); adds new residual test for rot-offset factor. |
| RoME/test/testPose2Propagate.jl | Adds new covariance propagation tests (SE(2) vs LeftInvariantMetricSE(2)). |
| RoME/test/testPartialPose3.jl | Updates manifold from SOnxRn_MetricManifold(3) to LeftInvariantMetricSE(3). |
| RoME/test/testPartialPose2.jl | Updates parametric solve/getting means; marks a PPE-dependent check as broken. |
| RoME/test/testParametricCovariances.jl | Updates parametric mean checks to use refMeans(getState(...)) + manifold log. |
| RoME/test/testParametric.jl | Updates expected manifold from SOnxRn_MetricManifold(2) to LeftInvariantMetricSE(2). |
| RoME/test/testInflation380.jl | Updates parametric reference extraction; adjusts angle comparison logic. |
| RoME/test/testGenericProjection.jl | Adds DFG/RoMETypes imports and manually initializes parametric states (WIP). |
| RoME/test/testG2oExportSE3.jl | Switches g2o export test to use solveKey = :default (parametric path commented). |
| RoME/test/testDidsonFunctions.jl | Updates KDE manifold to LeftInvariantMetricSE(3). |
| RoME/test/testBearingRange2D.jl | Updates mean(...) manifold to LeftInvariantMetricSE(2). |
| RoME/test/testBearing2D.jl | Updates test manifold to LeftInvariantMetricSE(2). |
| RoME/test/runtests.jl | Skips a list of tests by marking them broken and not including them. |
| RoME/test/inertial/testIMUDeltaFactor.jl | Updates parametric state access from .val[1] to DFG.refMeans(...)[1]. |
| RoME/src/services/FixmeManifolds.jl | Updates internal mean computation to use LeftInvariantMetricSE(2). |
| RoME/src/services/AdditionalUtils.jl | Updates helper to use LeftInvariantMetricSE(len) instead of old manifold. |
| RoME/src/factors/Poses.jl | Updates pose factor residuals; rewrites Pose3Pose3RotOffset using diff_left_compose; updates AMP manifold tuple hooks. |
| RoME/src/factors/Pose2Point2.jl | Updates manifold used in factor to LeftInvariantMetricSE(2). |
| RoME/src/factors/Pose2D.jl | Updates Pose2Pose2 manifold getter to LeftInvariantMetricSE(2). |
| RoME/src/factors/PartialPose3.jl | Updates PartialPose3 factor manifold to LeftInvariantMetricSE(2). |
| RoME/src/canonical/GenerateCircular.jl | Adds sampleNoise option to optionally sample measurement means. |
| RoME/Project.toml | Bumps compat bounds for DFG/IIF/RecursiveArrayTools. |
| RoME/ext/RoMECameraModelsExt.jl | Updates parametric state access to DFG.refMeans(getState(...)). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #792 +/- ##
==========================================
Coverage ? 32.57%
==========================================
Files ? 55
Lines ? 2327
Branches ? 0
==========================================
Hits ? 758
Misses ? 1569
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
No description provided.