@@ -104,7 +104,8 @@ function getFactorMeasurementParametric(fac::AbstractPrior)
104104 ϵ = getPointIdentity (M)
105105 dims = manifold_dimension (M)
106106 Xc, iΣ = getMeasurementParametric (fac)
107- X = get_vector (M, ϵ, Xc, DefaultOrthogonalBasis ())
107+ # X = get_vector(M, ϵ, Xc, DefaultOrthogonalBasis())
108+ X = hat (LieAlgebra (M), Xc, typeof (ϵ))
108109 meas = convert (typeof (ϵ), exp (M, ϵ, X))
109110 iΣ = convert (SMatrix{dims, dims}, iΣ)
110111 meas, iΣ
@@ -115,7 +116,12 @@ function getFactorMeasurementParametric(fac::AbstractRelative)
115116 ϵ = getPointIdentity (M)
116117 dims = manifold_dimension (M)
117118 Xc, iΣ = getMeasurementParametric (fac)
118- measX = convert (typeof (ϵ), get_vector (M, ϵ, Xc, DefaultOrthogonalBasis ()))
119+ # measX = convert(typeof(ϵ), get_vector(M, ϵ, Xc, DefaultOrthogonalBasis()))
120+ if M isa LieGroups. ValidationLieGroup
121+ measX = LieGroups. unwrap_validation (hat (LieAlgebra (M), Xc, typeof (ϵ)))
122+ else
123+ measX = convert (typeof (ϵ), hat (LieAlgebra (M), Xc, typeof (ϵ)))
124+ end
119125 iΣ = convert (SMatrix{dims, dims}, iΣ)
120126 measX, iΣ
121127end
@@ -287,12 +293,18 @@ function buildGraphSolveManifold(vars::Vector{<:VariableCompute})
287293 PMs = map (vartypes) do vartype
288294 N = vartypecount[vartype]
289295 G = getManifold (vartype)
296+ if G isa LieGroups. ValidationLieGroup
297+ # strip away ValidationLieGroup
298+ G = G. lie_group
299+ end
290300 return NPowerManifold (G, N)
291301 # return LieGroups.PowerLieGroup(G, N)
302+ # return Manifolds.PowerManifold(G, N)
292303 # PowerManifold(G, NestedReplacingPowerRepresentation(), N)
293304 # PowerManifold(G, NestedPowerRepresentation(), N) #TODO investigate as it does not converge
294305 end
295306 M = ProductManifold (PMs... )
307+ # M = ProductLieGroup(PMs...)
296308 return M, vartypes, vartypeslist
297309end
298310
@@ -307,7 +319,8 @@ function GraphSolveBuffers(@nospecialize(M), ::Type{T}) where {T}
307319 ϵ = getPointIdentity (M, T)
308320 p = deepcopy (ϵ)# allocate_result(M, getPointIdentity)
309321 X = deepcopy (ϵ) # allcoate(p)
310- Xc = get_coordinates (M, ϵ, X, DefaultOrthogonalBasis ())
322+ # Xc = Manifolds.get_coordinates(M, ϵ, X, DefaultOrthogonalBasis())
323+ Xc = vee (LieGroup (M), X)
311324 return GraphSolveBuffers (ϵ, p, X, Xc)
312325end
313326
@@ -569,7 +582,8 @@ function solveGraphParametricOptim(
569582 # log!(M, X, Identity(ProductOperation), p)
570583 # calculate initial coordinates vector for Optim
571584 log! (M, X, ϵ, p)
572- get_coordinates! (M, Xc, ϵ, X, DefaultOrthogonalBasis ())
585+ # get_coordinates!(M, Xc, ϵ, X, DefaultOrthogonalBasis())
586+ vee! (LieGroup (M), Xc, X)
573587
574588 initValues = Xc
575589 # FIXME , for some reason we get NANs and adding a small random value works
0 commit comments