Skip to content

Use LieGroups.MetricLieGroup and other pose related updates#792

Merged
Affie merged 19 commits into
developfrom
maint/MetricLieGroup
Jun 8, 2026
Merged

Use LieGroups.MetricLieGroup and other pose related updates#792
Affie merged 19 commits into
developfrom
maint/MetricLieGroup

Conversation

@Affie

@Affie Affie commented May 12, 2026

Copy link
Copy Markdown
Member

No description provided.

@Affie Affie self-assigned this May 12, 2026
@Affie Affie added this to the v0.25.0 milestone May 12, 2026
Comment thread RoME/src/factors/Poses.jl
Comment on lines -56 to -60
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

@Affie Affie May 29, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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)

@Affie Affie force-pushed the maint/MetricLieGroup branch from 0b4235c to a850d24 Compare June 3, 2026 09:10
@Affie Affie marked this pull request as ready for review June 3, 2026 10:51
@Affie Affie requested a review from Copilot June 3, 2026 10:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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_MetricManifold with LeftInvariantMetricSE built on LieGroups.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.

Comment thread RoME/src/factors/Poses.jl Outdated
Comment thread RoME/test/testInflation380.jl
Comment thread RoMETypes/src/factors/FactorTypes.jl Outdated
Comment thread RoME/test/runtests.jl
@codecov

codecov Bot commented Jun 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 75.43860% with 14 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (develop@2adb03c). Learn more about missing BASE report.

Files with missing lines Patch % Lines
RoMETypes/src/manifolds/LeftInvariantMetricSE.jl 80.64% 6 Missing ⚠️
RoME/src/factors/Poses.jl 72.22% 5 Missing ⚠️
RoME/src/factors/Pose2D.jl 0.00% 1 Missing ⚠️
RoME/src/services/AdditionalUtils.jl 0.00% 1 Missing ⚠️
RoME/src/services/FixmeManifolds.jl 0.00% 1 Missing ⚠️
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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Affie Affie added the bug fix label Jun 8, 2026
@Affie Affie merged commit 880170e into develop Jun 8, 2026
8 of 11 checks passed
@Affie Affie deleted the maint/MetricLieGroup branch June 8, 2026 10:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants