Skip to content

Commit f4306e3

Browse files
authored
Merge pull request #1860 from JuliaRobotics/develop
release v0.35.6-rc1
2 parents e3ee67b + 0bf32a0 commit f4306e3

15 files changed

+104
-38
lines changed

.github/workflows/ci.yml

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ on:
33
pull_request:
44
push:
55
branches:
6-
- master
6+
- develop
77
- release**
88
workflow_dispatch:
9+
910
jobs:
1011
test-stable:
1112
name: JL${{ matrix.version }} - ${{ matrix.arch }} - ${{ matrix.group }} - ${{ matrix.os }}
@@ -26,7 +27,7 @@ jobs:
2627
- 'test_cases_group'
2728
steps:
2829
- uses: actions/checkout@v2
29-
- uses: julia-actions/setup-julia@v1
30+
- uses: julia-actions/setup-julia@v2
3031
with:
3132
version: ${{ matrix.version }}
3233
arch: ${{ matrix.arch }}
@@ -54,16 +55,16 @@ jobs:
5455
arch:
5556
- x64
5657
version:
57-
- '1.11'
58+
- '~1.12.0-0'
5859
group:
5960
- 'basic_functional_group'
6061
steps:
6162
- uses: actions/checkout@v2
62-
- uses: julia-actions/setup-julia@v1
63+
- uses: julia-actions/setup-julia@v2
6364
with:
6465
version: ${{ matrix.version }}
6566
arch: ${{ matrix.arch }}
66-
- uses: actions/cache@v1
67+
- uses: actions/cache@v4
6768
env:
6869
cache-name: cache-artifacts
6970
with:
@@ -80,8 +81,8 @@ jobs:
8081
env:
8182
IIF_TEST_GROUP: ${{ matrix.group }}
8283
run: |
83-
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="ApproxManifoldProducts",rev="master"));'
84-
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="DistributedFactorGraphs",rev="master"));'
84+
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="ApproxManifoldProducts",rev="develop"));'
85+
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="DistributedFactorGraphs",rev="develop"));'
8586
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.test("IncrementalInference"; coverage=false)'
8687
shell: bash
8788

@@ -96,16 +97,16 @@ jobs:
9697
arch:
9798
- x64
9899
version:
99-
- '1.11'
100+
- '~1.12.0-0'
100101
group:
101102
- 'test_cases_group'
102103
steps:
103104
- uses: actions/checkout@v2
104-
- uses: julia-actions/setup-julia@v1
105+
- uses: julia-actions/setup-julia@v2
105106
with:
106107
version: ${{ matrix.version }}
107108
arch: ${{ matrix.arch }}
108-
- uses: actions/cache@v1
109+
- uses: actions/cache@v4
109110
env:
110111
cache-name: cache-artifacts
111112
with:
@@ -122,8 +123,8 @@ jobs:
122123
env:
123124
IIF_TEST_GROUP: ${{ matrix.group }}
124125
run: |
125-
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="ApproxManifoldProducts",rev="master"));'
126-
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="DistributedFactorGraphs",rev="master"));'
126+
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="ApproxManifoldProducts",rev="develop"));'
127+
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="DistributedFactorGraphs",rev="develop"));'
127128
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.test("IncrementalInference"; coverage=false)'
128129
shell: bash
129130

@@ -139,15 +140,15 @@ jobs:
139140
os:
140141
- ubuntu-latest
141142
version:
142-
- '1.11'
143+
- '~1.12.0-0'
143144
arch:
144145
- x64
145146
group:
146147
- 'tmp_debug_group'
147148
continue-on-error: true
148149
steps:
149150
- uses: actions/checkout@v2
150-
- uses: julia-actions/setup-julia@v1
151+
- uses: julia-actions/setup-julia@v2
151152
with:
152153
version: ${{ matrix.version }}
153154
arch: ${{ matrix.arch }}

Project.toml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ name = "IncrementalInference"
22
uuid = "904591bb-b899-562f-9e6f-b8df64c7d480"
33
keywords = ["MM-iSAMv2", "Bayes tree", "junction tree", "Bayes network", "variable elimination", "graphical models", "SLAM", "inference", "sum-product", "belief-propagation"]
44
desc = "Implements the Multimodal-iSAMv2 algorithm."
5-
version = "0.35.5"
5+
version = "0.35.6"
66

77
[deps]
88
ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"
99
BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0"
1010
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
11+
CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8"
1112
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
1213
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
1314
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
@@ -67,27 +68,28 @@ IncrInfrInterpolationsExt = "Interpolations"
6768
AMD = "0.5"
6869
ApproxManifoldProducts = "0.9"
6970
BSON = "0.2, 0.3"
71+
CliqueTrees = "0.5, 1"
7072
Combinatorics = "1.0"
7173
DataStructures = "0.16, 0.17, 0.18"
7274
DelimitedFiles = "1"
7375
DifferentialEquations = "7"
74-
DistributedFactorGraphs = "0.25"
76+
DistributedFactorGraphs = "0.25, 0.26"
7577
Distributions = "0.24, 0.25"
7678
DocStringExtensions = "0.8, 0.9"
7779
FileIO = "1"
7880
FiniteDiff = "2"
7981
FiniteDifferences = "0.12"
80-
Flux = "0.14"
82+
Flux = "0.14, 0.15, 0.16"
8183
FunctionalStateMachine = "0.2.9, 0.3"
8284
Gadfly = "1"
8385
Interpolations = "0.15"
8486
JSON3 = "1"
8587
KernelDensityEstimate = "0.5.6"
8688
LinearAlgebra = "1.10"
87-
ManifoldDiff = "0.3"
89+
ManifoldDiff = "0.3, 0.4"
8890
Manifolds = "0.10"
89-
ManifoldsBase = "0.15"
90-
Manopt = "0.4.40, 0.5"
91+
ManifoldsBase = "0.15, 1"
92+
Manopt = "^0.5.14"
9193
MetaGraphs = "0.7, 0.8"
9294
Optim = "1"
9395
OrderedCollections = "1"

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ sudo apt-get install graphviz xdot # optional
6969

7070
<!-- replicated in Caesar.jl README -->
7171
[iif-ci-dev-img]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml/badge.svg
72-
[iif-ci-dev-url]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml
73-
[iif-ci-stb-img]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml/badge.svg?branch=release%2Fv0.26
74-
[iif-ci-stb-url]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml
72+
[iif-ci-dev-url]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml?query=branch%3Adevelop
73+
[iif-ci-stb-img]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml/badge.svg
74+
[iif-ci-stb-url]: https://github.com/JuliaRobotics/IncrementalInference.jl/actions/workflows/ci.yml?query=branch%3Arelease%2Fv0.35
7575
[iif-ver-img]: https://juliahub.com/docs/IncrementalInference/version.svg
7676
[iif-rel-url]: https://github.com/JuliaRobotics/IncrementalInference.jl/releases
7777
[iif-milestones]: https://github.com/JuliaRobotics/IncrementalInference.jl/milestones

src/IncrementalInference.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module IncrementalInference
22

33
# @info "Multithreaded convolutions possible, Threads.nthreads()=$(Threads.nthreads()). See `addFactor!(.;threadmodel=MultiThreaded)`."
44

5+
import CliqueTrees
6+
57
using Distributed
68
using Reexport
79

src/parametric/services/ParametricManopt.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,19 @@ function covarianceFiniteDiff(M, jacF!::JacF_RLM!, p0)
304304
return Σ
305305
end
306306

307+
function qr_linear_subsolver!(sk, JJ, grad_f_c)
308+
sk .= qr(JJ) \ grad_f_c
309+
return sk
310+
end
311+
307312
function solve_RLM(
308313
fg,
309314
varlabels = ls(fg),
310315
faclabels = lsf(fg);
311316
is_sparse = true,
312317
finiteDiffCovariance = false,
313318
solveKey::Symbol = :parametric,
319+
linear_subsolver! = qr_linear_subsolver!,
314320
kwargs...
315321
)
316322

@@ -354,6 +360,7 @@ function solve_RLM(
354360
jacobian_tangent_basis = DefaultOrthogonalBasis(),
355361
initial_residual_values,
356362
initial_jacobian_f,
363+
linear_subsolver!,
357364
kwargs...
358365
)
359366

src/parametric/services/ParametricOptim.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ function optimizeManifold_FD(
88
)
99
# finitediff setup
1010
r_backend = ManifoldDiff.TangentDiffBackend(
11-
ManifoldDiff.FiniteDifferencesBackend()
11+
if v"0.4" <= pkgversion(ManifoldDiff)
12+
ManifoldDiff.AutoFiniteDifferences(central_fdm(5, 1))
13+
else
14+
ManifoldDiff.FiniteDifferencesBackend()
15+
end
1216
)
1317

1418
## finitediff gradient (non-manual)

src/services/BayesNet.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ function getEliminationOrder(
5050
# cons[findall(x -> x in constraints, permuteds)] .= 1
5151
# p = Ccolamd.ccolamd(adjMat, cons)
5252
@warn "Integration via AMD.ccolamd under development and replaces pre-Julia 1.9 direct ccall approach." maxlog=5
53+
elseif ordering == :mcs
54+
# maximum cardinality search
55+
A = adjMat
56+
p, _ = CliqueTrees.permutation(A'A; alg=CliqueTrees.MCS())
57+
elseif ordering == :rcm
58+
# reverse Cuthill-Mckee
59+
A = adjMat
60+
p, _ = CliqueTrees.permutation(A'A; alg=CliqueTrees.RCM())
61+
elseif ordering == :mmd
62+
# multiple minimum degree
63+
A = adjMat
64+
p, _ = CliqueTrees.permutation(A'A; alg=CliqueTrees.MMD())
5365
else
5466
@error("getEliminationOrder -- cannot do the requested ordering $(ordering)")
5567
end

src/services/FactorGradients.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ function factorJacobian(
66
fg,
77
faclabel::Symbol,
88
p0 = ArrayPartition(first.(getVal.(fg, getVariableOrder(fg, faclabel), solveKey = :parametric))...),
9-
backend = ManifoldDiff.TangentDiffBackend(ManifoldDiff.FiniteDiffBackend()),
9+
backend = ManifoldDiff.TangentDiffBackend(
10+
if v"0.4" <= pkgversion(ManifoldDiff)
11+
ManifoldDiff.AutoFiniteDifferences(central_fdm(5, 1))
12+
else
13+
ManifoldDiff.FiniteDifferencesBackend()
14+
end
15+
)
1016
)
1117

1218
fac = getFactor(fg, faclabel)

test/manifolds/factordiff.jl

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,15 @@ function resid_SE2(X, p, q)
9797
end
9898

9999

100+
# finitediff setup
100101
# finitediff setup
101102
r_backend = ManifoldDiff.TangentDiffBackend(
102-
ManifoldDiff.FiniteDifferencesBackend()
103+
if v"0.4" <= pkgversion(ManifoldDiff)
104+
ManifoldDiff.AutoFiniteDifferences(central_fdm(5, 1))
105+
else
106+
ManifoldDiff.FiniteDifferencesBackend()
107+
end
103108
)
104-
105109
Me = Euclidean(3)
106110

107111
function _factorJac!(J, z, p1, p2)
@@ -123,9 +127,15 @@ J_ = _factorJac!(J, z, p1, p2)
123127
# @profview _factorJac!(J, z, p1, p2)
124128

125129
if false
130+
# finitediff setup
126131
z_backend = ManifoldDiff.TangentDiffBackend(
127-
ManifoldDiff.ZygoteDiffBackend()
132+
if v"0.4" <= pkgversion(ManifoldDiff)
133+
ManifoldDiff.AutoFiniteDifferences(central_fdm(5, 1))
134+
else
135+
ManifoldDiff.FiniteDifferencesBackend()
136+
end
128137
)
138+
129139
g = ManifoldDiff.jacobian(M, Euclidean(3), f_SE2_x0, p1, z_backend)
130140
else
131141
@info "ManifoldDiff.ZygoteDiffBackend usage still under development (23Q3)"

test/manifolds/manifolddiff.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ import Rotations as _Rot
1313

1414
# finitediff setup
1515
r_backend = ManifoldDiff.TangentDiffBackend(
16+
if v"0.4" <= pkgversion(ManifoldDiff)
17+
ManifoldDiff.AutoFiniteDifferences(central_fdm(5, 1))
18+
else
1619
ManifoldDiff.FiniteDifferencesBackend()
20+
end
1721
)
1822

1923
##

0 commit comments

Comments
 (0)