Skip to content

Commit ec76b5a

Browse files
authored
Merge pull request #1002 from JuliaRobotics/master
release v0.16.2-rc1
2 parents 81f368b + bfa158a commit ec76b5a

38 files changed

+236
-243
lines changed

.github/workflows/BuildDocs.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: CI/CD Docs
2+
on:
3+
pull_request:
4+
push:
5+
branches:
6+
- master
7+
workflow_dispatch:
8+
9+
jobs:
10+
docs:
11+
name: 'Build Docs'
12+
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
include:
16+
- jlenv: 'docs/'
17+
makejl: 'docs/make.jl'
18+
# - jlenv: 'docs/pdf/'
19+
# makejl: 'docs/pdf/make.jl'
20+
steps:
21+
- uses: actions/checkout@v2
22+
- uses: julia-actions/setup-julia@v1
23+
with:
24+
version: '1.10'
25+
arch: x64
26+
- name: 'Pkgs for Docs on ${{ github.head_ref }}'
27+
run: |
28+
export JULIA_PKG_SERVER=""
29+
[ '${{ github.ref }}' == 'refs/heads/master' ] && export CJL_DOCS_BRANCH="master" || export CJL_DOCS_BRANCH="${{ github.head_ref }}"
30+
export JULIA_PKG_PRECOMPILE_AUTO=0
31+
julia -e 'println("Julia gets branch: ",ENV["CJL_DOCS_BRANCH"])'
32+
julia --project=${{ matrix.jlenv }} --check-bounds=yes -e 'using Pkg; Pkg.instantiate(); Pkg.add(PackageSpec(name="Caesar", rev=ENV["CJL_DOCS_BRANCH"]))'
33+
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="RoME", rev="master"))'
34+
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="RoMEPlotting", rev="master"))'
35+
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="KernelDensityEstimatePlotting", rev="master"))'
36+
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="IncrementalInference", rev="master"))'
37+
- name: 'Docs make.jl'
38+
run: |
39+
export JULIA_PKG_PRECOMPILE_AUTO=0
40+
export DOCUMENTER_DEBUG="true"
41+
julia --project=${{ matrix.jlenv }} --color=yes ${{ matrix.makejl }}
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44+
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
45+
JULIA_PKG_SERVER: ""

.github/workflows/ci.yml

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
fail-fast: false
1717
matrix:
1818
version:
19-
- '1.9'
19+
- '1.10'
2020
- 'nightly'
2121
os:
2222
- ubuntu-latest
@@ -62,7 +62,7 @@ jobs:
6262
fail-fast: false
6363
matrix:
6464
version:
65-
- '1.9'
65+
- '1.10'
6666
os:
6767
- ubuntu-latest
6868
arch:
@@ -109,7 +109,7 @@ jobs:
109109
- uses: actions/checkout@v2
110110
- uses: julia-actions/setup-julia@v1
111111
with:
112-
version: ~1.10.0-0
112+
version: '1.10'
113113
arch: x64
114114
- uses: actions/cache@v1
115115
env:
@@ -126,40 +126,13 @@ jobs:
126126
git config --global user.email [email protected]
127127
- name: Run tests on Upstream Dev
128128
run: |
129+
export JULIA_PKG_PRECOMPILE_AUTO=0
129130
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="RoME",rev="master"));'
130131
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="IncrementalInference",rev="master"));'
131132
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="ApproxManifoldProducts",rev="master"));'
132133
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.add(PackageSpec(name="DistributedFactorGraphs",rev="master"));'
134+
unset JULIA_PKG_PRECOMPILE_AUTO
133135
julia --project=@. --check-bounds=yes -e 'using Pkg; Pkg.test("Caesar"; coverage=false)'
134136
shell: bash
135137

136-
docs:
137-
name: 'Build Docs'
138-
runs-on: ubuntu-latest
139-
strategy:
140-
matrix:
141-
include:
142-
- jlenv: 'docs/'
143-
makejl: 'docs/make.jl'
144-
# - jlenv: 'docs/pdf/'
145-
# makejl: 'docs/pdf/make.jl'
146-
steps:
147-
- uses: actions/checkout@v2
148-
- uses: julia-actions/setup-julia@v1
149-
with:
150-
version: 1.9
151-
- name: 'Docs on ${{ github.head_ref }}'
152-
run: |
153-
export JULIA_PKG_SERVER=""
154-
[ '${{ github.ref }}' == 'refs/heads/master' ] && export CJL_DOCS_BRANCH="master" || export CJL_DOCS_BRANCH="${{ github.head_ref }}"
155-
julia -e 'println("Julia gets branch: ",ENV["CJL_DOCS_BRANCH"])'
156-
julia --project=${{ matrix.jlenv }} --check-bounds=yes -e 'using Pkg; Pkg.instantiate(); Pkg.add(PackageSpec(name="Caesar", rev=ENV["CJL_DOCS_BRANCH"]))'
157-
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="RoME", rev="master"))'
158-
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="RoMEPlotting", rev="master"))'
159-
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="KernelDensityEstimatePlotting", rev="master"))'
160-
julia --project=${{ matrix.jlenv }} -e 'using Pkg; Pkg.add(PackageSpec(name="IncrementalInference", rev="master"))'
161-
- run: julia --project=${{ matrix.jlenv }} --color=yes ${{ matrix.makejl }}
162-
env:
163-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
164-
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
165-
JULIA_PKG_SERVER: ""
138+

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ examples/lcmserver/lcmtypes/rome/
55
examples/lcmserver/rome/
66
examples/tracking/simpleradar/exports/*
77
docs/build
8+
docs/Manifest.toml
89
results/*
910
build

Project.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name = "Caesar"
22
uuid = "62eebf14-49bc-5f46-9df9-f7b7ef379406"
33
keywords = ["SLAM", "state-estimation", "MM-iSAM", "MM-iSAMv2", "inference", "robotics", "ROS"]
44
desc = "Non-Gaussian simultaneous localization and mapping"
5-
version = "0.16.1"
5+
version = "0.16.2"
66

77
[deps]
88
ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"
@@ -93,7 +93,7 @@ ImageCore = "0.8, 0.9, 0.10"
9393
ImageDraw = "0.2"
9494
ImageMagick = "1"
9595
IncrementalInference = "0.34, 0.35"
96-
Interpolations = "0.14"
96+
Interpolations = "0.14, 0.15"
9797
JLD2 = "0.3, 0.4"
9898
JSON = "0.20, 0.21"
9999
JSON2 = "0.3, 0.4"
@@ -111,6 +111,7 @@ Reexport = "1"
111111
RoME = "0.23, 0.24"
112112
Rotations = "1.1"
113113
StaticArrays = "1"
114+
Statistics = "1"
114115
StatsBase = "0.33, 0.34"
115116
TensorCast = "0.4"
116117
TimeZones = "1.3.1, 1.4"

docs/Project.toml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
2222
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
2323
KernelDensityEstimate = "2472808a-b354-52ea-a80e-1658a3c6056d"
2424
KernelDensityEstimatePlotting = "c43967c8-f634-5d24-8eab-2867546b366b"
25-
LCMCore = "0ea44823-1ff1-5b9a-8293-5fd55a38e746"
2625
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
2726
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
2827
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
@@ -54,19 +53,18 @@ FunctionalStateMachine = "≥ 0.1"
5453
ImageCore = "≥ 0.7"
5554
ImageMagick = "≥ 0.7"
5655
Images = "≥ 0.24"
57-
IncrementalInference = "≥ 0.13"
56+
IncrementalInference = "≥ 0.35"
5857
JLD2 = "≥ 0.1"
5958
JSON = "≥ 0.18"
6059
KernelDensityEstimate = "≥ 0.5"
6160
KernelDensityEstimatePlotting = "≥ 0.1.4"
62-
LCMCore = "≥ 0.5"
6361
NLsolve = "≥ 3"
6462
ProgressMeter = "≥ 0.9"
6563
Reexport = "≥ 0.2"
66-
RoME = "≥ 0.7"
64+
RoME = "≥ 0.23"
6765
Rotations = "≥ 0.13"
6866
TransformUtils = "≥ 0.2.2"
6967
Unmarshal = "≥ 0.3"
7068
YAML = "≥ 0.3"
7169
ZMQ = "≥ 1.0"
72-
julia = "1.4"
70+
julia = "1.10"

docs/make.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ using RoME
33
using Colors
44
using Images
55

6+
import Caesar._PCL as _PCL
7+
68
import IncrementalInference: fmcmc!, localProduct, prodmultiplefullpartials, prodmultipleonefullpartials, setfreeze!
79
import IncrementalInference: cliqGibbs, packFromLocalPotentials!, treeProductDwn, updateFGBT!, upGibbsCliqueDensity
810
import IncrementalInference: initfg, downGibbsCliqueDensity
911
import IncrementalInference: solveGraphParametric, solveGraphParametric!
12+
import IncrementalInference: _solveCCWNumeric!
13+
import IncrementalInference: initParametricFrom!
1014

1115
using KernelDensityEstimatePlotting
1216
# import KernelDensityEstimatePlotting: plotKDE
@@ -16,6 +20,7 @@ using RoMEPlotting
1620
using DistributedFactorGraphs
1721
import DistributedFactorGraphs: showFactor, showVariable
1822
import DistributedFactorGraphs: deleteVariable!
23+
import DistributedFactorGraphs: loadDFG, loadDFG!
1924

2025
makedocs(
2126
modules = [Caesar, RoME, IncrementalInference, RoMEPlotting, KernelDensityEstimatePlotting, DistributedFactorGraphs],
@@ -96,10 +101,12 @@ makedocs(
96101
"Literature" => [
97102
"References" => "refs/literature.md"
98103
],
99-
]
104+
],
105+
# FIXME remove warnonly option once :missing_docs and :cross_references fixes are done
106+
warnonly = Documenter.except(:autodocs_block, :docs_block, :doctest, :linkcheck, :eval_block, :example_block, :footnote, :linkcheck_remotes, :meta_block, :parse_error, :setup_block), # , :cross_references, :missing_docs
100107
# html_prettyurls = !("local" in ARGS),
101-
)
102-
108+
)
109+
# The possible Symbol values that can be passed to the function are: :autodocs_block, :cross_references, :docs_block, :doctest, :eval_block, :example_block, :footnote, :linkcheck_remotes, :linkcheck, :meta_block, :missing_docs, :parse_error, and :setup_block.
103110

104111
deploydocs(
105112
repo = "github.com/JuliaRobotics/Caesar.jl.git",

docs/src/concepts/2d_plotting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ plotPose
166166

167167
### Debug With Local Graph Product Plot
168168

169-
One useful function is to check that data in the factor graph makes sense. While the full inference algorithm uses a Bayes (Junction) tree to assemble marginal belief estimates in an efficient manner, it is often useful for a straight forward graph based sanity check. The [`plotLocalProduct`](@ref) projects through [`approxConv`](@ref) each of the factors connected to the target variable and plots the result. This example looks at the loop-closure point around `:x0`, which is also pinned down by the only prior in the canonical Hexagonal factor graph.
169+
One useful function is to check that data in the factor graph makes sense. While the full inference algorithm uses a Bayes (Junction) tree to assemble marginal belief estimates in an efficient manner, it is often useful for a straight forward graph based sanity check. The [`plotLocalProduct`](@ref) projects through [`approxConvBelief`](@ref) each of the factors connected to the target variable and plots the result. This example looks at the loop-closure point around `:x0`, which is also pinned down by the only prior in the canonical Hexagonal factor graph.
170170
```julia
171171
@show ls(fg, :x0);
172172
# ls(fg, :x0) = [:x0f1, :x0x1f1, :x0l1f1]

docs/src/concepts/arena_visualizations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# [Visualization 3D](@ref visualization_3d)
1+
# [Visualization 3D](@id visualization_3d)
22

33
## Introduction
44

docs/src/concepts/available_varfacs.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ The variables and factors in Caesar should be sufficient for a variety of roboti
2121
Default variables in IncrementalInference
2222

2323
```@docs
24-
ContinuousScalar
25-
ContinuousEuclid{N}
24+
Position{N}
2625
```
2726

2827
### 2D Variables
@@ -40,7 +39,6 @@ DynPose2
4039
```@docs
4140
Point3
4241
Pose3
43-
InertialPose3
4442
```
4543

4644
!!! note
@@ -102,10 +100,10 @@ VelPose2VelPose2
102100
DynPose2Pose2
103101
Pose3Pose3
104102
PriorPose3ZRP
105-
PartialPriorRollPitchZ
106-
PartialPose3XYYaw
107103
Pose3Pose3XYYaw
108104
```
105+
<!-- PartialPose3XYYaw -->
106+
<!-- PartialPriorRollPitchZ -->
109107

110108
# Extending Caesar with New Variables and Factors
111109

docs/src/concepts/building_graphs.md

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# [Building Graphs](@ref building_graphs)
1+
# [Building Graphs](@id building_graphs)
22

33
Irrespective of your application - real-time robotics, batch processing of survey data, or really complex multi-hypothesis modeling - you're going to need to add factors and variables to a graph. This section discusses how to do that in Caesar.
44

@@ -53,13 +53,7 @@ addVariable!
5353
deleteVariable!
5454
```
5555

56-
### Initializing Variables
57-
58-
The MM-iSAMv2 algorithm uses one of two approaches to automatically initialize variables. The `initManual!` function can be used if you wish to overwrite or pre-empt this initialization.
59-
60-
```@docs
61-
initManual!
62-
```
56+
The MM-iSAMv2 algorithm uses one of two approaches to automatically initialize variables, or can be [initialized manually](@ref variable_init).
6357

6458
## Factors
6559

docs/src/concepts/dataassociation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Data Association and Hypotheses
1+
# [Data Association and Hypotheses](@id data_multihypo)
22

33
Ambiguous data and processing often produce complicated data association situations. In SLAM, loop-closures are a major source of concern when developing autonomous subsystems or behaviors. To illustrate this point, consider the two scenarios depicted below:
44

docs/src/concepts/entry_data.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,4 @@ addData!(dfg,:default_folder_store,:x0,:nnModel,
140140

141141
## Experimental Features
142142

143-
Loading images is a relatively common task, hence a convenience function has been developed:
144-
```@docs
145-
Caesar.fetchDataImage
146-
```
143+
Loading images is a relatively common task, hence a convenience function has been developed, when `using ImageMagick` try `Caesar.fetchDataImage`.

docs/src/concepts/flux_factors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Incorporating Neural Network Factors
22

3-
IncrementalInference.jl and RoME.jl has native support for using Neural Networks (via [Flux.jl](https://fluxml.ai/Flux.jl/stable/)) as non-Gaussian factors. Documentation is forthcoming, but meanwhile [see the following generic Flux.jl factor structure](https://github.com/JuliaRobotics/IncrementalInference.jl/tree/master/src/Flux). Note also that a standard [`Mixture` approach already exists too](https://github.com/JuliaRobotics/RoME.jl/blob/master/src/factors/flux/MixtureFluxPose2Pose2.jl).
3+
IncrementalInference.jl and RoME.jl has native support for using Neural Networks (via [Flux.jl](https://fluxml.ai/Flux.jl/stable/)) as non-Gaussian factors. Documentation is forthcoming, but meanwhile [see the following generic Flux.jl factor structure](https://github.com/JuliaRobotics/IncrementalInference.jl/blob/master/ext/IncrInfrFluxFactorsExt.jl). Note also that a standard [`Mixture` approach already exists too](https://github.com/JuliaRobotics/RoME.jl/blob/master/ext/factors/MixtureFluxPose2Pose2.jl).
44

docs/src/concepts/interacting_fgs.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ loadDFG!
3232

3333
A later part of the documentation will show [how to include a `Entry=>Data` blob store](https://juliarobotics.org/Caesar.jl/latest/concepts/entry_data/).
3434

35-
## Querying the FactorGraph
35+
## [Querying the Graph](@id querying_graph)
3636

3737
### List Variables:
3838

@@ -134,7 +134,7 @@ It is also possible to sample the above belief objects for more samples:
134134
pts = rand(X0, 200)
135135
```
136136

137-
## Building On-Manifold KDEs
137+
## [Building On-Manifold KDEs](@id build_manikde)
138138

139139
These kernel density belief objects can be constructed from points as follows:
140140
```julia
@@ -166,5 +166,5 @@ joinLogPath
166166

167167
```@docs
168168
getFactorDim
169-
getManifolds
169+
getManifold
170170
```

docs/src/concepts/multilang.md

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,25 @@
22

33
The Caesar framework is not limited to direct Julia use.
44

5+
## [NavAbility SDKs and APIs](@id navabilitysdk)
6+
7+
The maintainers of Caesar.jl together with NavAbility.io are developing a standardized SDK / API for much easier multi-language / multi-access use of the solver features. The [Documentation for the NavAbilitySDK's can be found here](https://navability.github.io/NavAbilitySDK.py/).
8+
9+
Contact [email protected] for more information.
10+
511
## Static, Shared Object `.so` Compilation
12+
613
See [Compiling Binaries](@ref compile_binaries).
714

815
## ROS Integration
16+
917
See [ROS Integration](@ref ros_direct).
1018

1119
## Python Direct
1220

1321
For completeness, another design pattern is to wrap Julia packages for direct access from python, see [SciML/diffeqpy](https://github.com/SciML/diffeqpy) as example.
1422

15-
## Caesar SDKs and APIs
16-
17-
The maintainers of Caesar.jl together with NavAbility.io are developing a standardized SDK / API for much easier multi-language / multi-access use of the solver features. Contact [email protected] for more information.
18-
19-
!!! note
20-
2021Q4, Coming Soon! A new multilanguage SDK is under development and will replace and consolidate the previous methods listed below.
21-
22-
### Previous Generation APIs
23-
24-
The following Github projects provide access to features of Caesar in their language:
25-
26-
* Julia Web interface:
27-
* [GraffSDK.jl](https://github.com/GearsAD/GraffSDK.jl)
28-
29-
* ZMQ Interface
30-
* C/C++:
31-
* [Graff Cpp](https://github.com/MarineRoboticsGroup/graff_cpp)
32-
* [Caesar LCM](http://github.com/pvazteixeira/caesar-lcm)
33-
* [Caesar ROS](http://github.com/pvazteixeira/caesar_ros)
34-
* Python:
35-
* [GraffSDK.py](https://github.com/nicrip/graff_py) (needs to be updated)
36-
* [Synchrony_py](https://github.com/nicrip/SynchronySDK_py)
37-
38-
## ZMQ Messaging Interface
23+
## [OUTDATED] ZMQ Messaging Interface
3924

4025
Caesar.jl has a ZMQ messaging interface ([interested can see code here](https://github.com/JuliaRobotics/Caesar.jl/blob/master/src/zmq/ZmqCaesar.jl)) that allows users to interact with the solver code base in a variety of ways. The messaging interface is not meant to replace static `.so` library file compilation but rather provide a more versatile and flexible development strategy.
4126

docs/src/concepts/solving_graphs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The returned Bayes (Junction) `tree` object is described in more detail on [a de
1414
solveTree!
1515
```
1616

17-
## Automatic vs Manual Init
17+
## [Automatic vs Manual Init](@id variable_init)
1818

1919
Currently the main automatic initialization technique used by IncrementalInference.jl by delayed propagation of belief on the factor graph. This can be globally or locally controlled via:
2020
```julia

0 commit comments

Comments
 (0)