|
98 | 98 |
|
99 | 99 | import DistributedFactorGraphs: getPointIdentity |
100 | 100 |
|
101 | | -function getPointIdentity(G::ProductGroup, ::Type{T} = Float64) where {T <: Real} |
| 101 | +function DFG.getPointIdentity(G::ProductGroup, ::Type{T} = Float64) where {T <: Real} |
102 | 102 | M = G.manifold |
103 | 103 | return ArrayPartition(map(x -> getPointIdentity(x, T), M.manifolds)) |
104 | 104 | end |
105 | 105 |
|
106 | 106 | # fallback |
107 | | -function getPointIdentity(G::GroupManifold, ::Type{T} = Float64) where {T <: Real} |
| 107 | +function DFG.getPointIdentity(G::GroupManifold, ::Type{T} = Float64) where {T <: Real} |
108 | 108 | return error("getPointIdentity not implemented on $G") |
109 | 109 | end |
110 | 110 |
|
111 | | -function getPointIdentity( |
| 111 | +function DFG.getPointIdentity( |
112 | 112 | @nospecialize(G::ProductManifold), |
113 | 113 | ::Type{T} = Float64, |
114 | 114 | ) where {T <: Real} |
115 | 115 | return ArrayPartition(map(x -> getPointIdentity(x, T), G.manifolds)) |
116 | 116 | end |
117 | 117 |
|
118 | | -function getPointIdentity( |
| 118 | +function DFG.getPointIdentity( |
119 | 119 | @nospecialize(M::PowerManifold), |
120 | 120 | ::Type{T} = Float64, |
121 | 121 | ) where {T <: Real} |
122 | 122 | N = Manifolds.get_iterator(M).stop |
123 | 123 | return fill(getPointIdentity(M.manifold, T), N) |
124 | 124 | end |
125 | 125 |
|
126 | | -function getPointIdentity(M::NPowerManifold, ::Type{T} = Float64) where {T <: Real} |
| 126 | +function DFG.getPointIdentity(M::NPowerManifold, ::Type{T} = Float64) where {T <: Real} |
127 | 127 | return fill(getPointIdentity(M.manifold, T), M.N) |
128 | 128 | end |
129 | 129 |
|
130 | | -function getPointIdentity(G::SemidirectProductGroup, ::Type{T} = Float64) where {T <: Real} |
| 130 | +function DFG.getPointIdentity(G::SemidirectProductGroup, ::Type{T} = Float64) where {T <: Real} |
131 | 131 | M = base_manifold(G) |
132 | 132 | N, H = M.manifolds |
133 | 133 | np = getPointIdentity(N, T) |
134 | 134 | hp = getPointIdentity(H, T) |
135 | 135 | return ArrayPartition(np, hp) |
136 | 136 | end |
137 | 137 |
|
138 | | -function getPointIdentity(G::SpecialOrthogonal{N}, ::Type{T} = Float64) where {N, T <: Real} |
| 138 | +function DFG.getPointIdentity(G::SpecialOrthogonal{N}, ::Type{T} = Float64) where {N, T <: Real} |
139 | 139 | return SMatrix{N, N, T}(I) |
140 | 140 | end |
141 | 141 |
|
142 | | -function getPointIdentity( |
| 142 | +function DFG.getPointIdentity( |
143 | 143 | G::TranslationGroup{Tuple{N}}, |
144 | 144 | ::Type{T} = Float64, |
145 | 145 | ) where {N, T <: Real} |
146 | 146 | return zeros(SVector{N,T}) |
147 | 147 | end |
148 | 148 |
|
149 | | -function getPointIdentity(G::RealCircleGroup, ::Type{T} = Float64) where {T <: Real} |
| 149 | +function DFG.getPointIdentity(G::RealCircleGroup, ::Type{T} = Float64) where {T <: Real} |
150 | 150 | return [zero(T)] #FIXME we cannot support scalars yet |
151 | 151 | end |
0 commit comments