Skip to content

Commit

Permalink
Merge pull request #632 from JuliaRobotics/master
Browse files Browse the repository at this point in the history
v0.6.3-rc1
  • Loading branch information
dehann authored Oct 30, 2020
2 parents 77127d8 + 5c40527 commit 43792c0
Show file tree
Hide file tree
Showing 19 changed files with 584 additions and 611 deletions.
18 changes: 4 additions & 14 deletions .github/workflows/CompatHelper.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
name: CompatHelper

on:
schedule:
- cron: '20 00 * * *'
issues:
types: [opened, reopened]

- cron: '00 01 * * *'
workflow_dispatch:
jobs:
CompatHelper:
runs-on: ${{ matrix.os }}
strategy:
matrix:
julia-version: [1.2.0]
julia-arch: [x86]
os: [ubuntu-latest]
runs-on: ubuntu-latest
steps:
- uses: julia-actions/setup-julia@latest
with:
version: ${{ matrix.julia-version }}
- name: Pkg.add("CompatHelper")
run: julia -e 'using Pkg; Pkg.add("CompatHelper")'
- name: CompatHelper.main()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMPATHELPER_PRIV: ${{ secrets.COMPATHELPER_PRIV }} # optional
run: julia -e 'using CompatHelper; CompatHelper.main()'
20 changes: 10 additions & 10 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name = "Caesar"
uuid = "62eebf14-49bc-5f46-9df9-f7b7ef379406"
keywords = ["SLAM", "state-estimation", "mm-iSAM", "inference", "robotics", "ROS"]
desc = "Non-Gaussian simultaneous localization and mapping"
version = "0.6.2"
version = "0.6.3"

[deps]
ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"
Expand Down Expand Up @@ -44,15 +44,15 @@ YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
ApproxManifoldProducts = "^0.1"
Combinatorics = "^0.7, 0.8, 0.9, 1"
CoordinateTransformations = "0.5, 0.6"
DataStructures = "0.15, 0.16, 0.17, 0.18, 0.18, 0.19, 0.20"
DataStructures = "0.16, 0.17, 0.18"
DistributedFactorGraphs = "0.9, 0.10"
Distributions = "0.18, 0.19, 0.20, 0.21, 0.22, 0.23"
Distributions = "0.19, 0.20, 0.21, 0.22, 0.23, 0.24"
DocStringExtensions = "0.7, 0.8, 0.9, 1"
FFTW = "0.2.4, 0.3, 1"
FFTW = "1"
FileIO = "1"
ImageCore = "0.7, 0.8, 0.9"
ImageMagick = "0.7, 1.0, 1.1"
IncrementalInference = "0.14.1, 0.15, 0.16"
IncrementalInference = "0.15, 0.16, 0.17"
JLD2 = "0.1, 0.2"
JSON = "0.18, 0.19, 0.20, 0.21, 0.22, 0.23"
JSON2 = "0.3, 0.4"
Expand All @@ -61,13 +61,13 @@ NLsolve = "3, 4"
ProgressMeter = "0.9, 1"
Reexport = "0.2"
Requires = "0.5, 0.6, 0.7, 0.8, 0.9, 0.10, 1"
RoME = "0.7.1, 0.8, 0.9"
Rotations = "0.13, 1.0"
RoME = "0.8, 0.9, 0.10"
Rotations = "0.13, 1"
TensorCast = "0.2, 0.3"
TimeZones = "1.3.1"
TransformUtils = "^0.2.2"
TimeZones = "1.3.1, 1.4"
TransformUtils = "0.2.2"
Unmarshal = "0.2.1, 0.3, 0.4"
YAML = "0.3"
YAML = "0.3, 0.4"
ZMQ = "1"
julia = "1.4"

Expand Down
33 changes: 8 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,6 @@

A multimodal/non-Gaussian robotic toolkit for localization and mapping -- reducing the barrier of entry for sensor/data fusion tasks, including Simultaneous Localization and Mapping (SLAM).

# NOTICE Gadfly#master

Note current installation requires the latest Gadfly to overcome a Type Piracy problem that occurred in ImageCore.jl. The following installation will fix the recent (but transient) Pkg compat problems:
```julia
julia> ] # to activate package manager
(@v1.5) pkg> add Gadfly#master
(@v1.5) pkg> add IncrementalInference RoME Caesar
```

# Weblink Info

Click on the badges to follow web url links:
Expand All @@ -39,7 +30,6 @@ Code changes are currently tracked via Github's integrated Milestone/Issues/PR s
| [TransformUtils.jl][tf-url] | [![][tf-stable]][tf-releases] | [![Build Status][tf-build-img]][tf-build-url] | [![codecov.io][tf-cov-img]][tf-cov-url] | -- |
| [LightGraphs.jl][lgraphs-url] | [![][lgjl-stable]][lgjl-releases] | [![Build Status][lgraphs-build-img]][lgraphs-build-url] | [![codecov.io][lgraphs-cov-img]][lgraphs-cov-url] | n/a |
| [~~Graphs.jl~~][graphs-url] | [![][gjl-stable]][gjl-releases] | [![Build Status][graphs-build-img]][graphs-build-url] | [![codecov.io][graphs-cov-img]][graphs-cov-url] | n/a |
| [~~CloudGraphs.jl~~][cloudgraphs-url] | ![][cg-stable] | [![Build Status][cloudgraphs-build-img]][cloudgraphs-build-url] | [![codecov.io][cloudgraphs-cov-img]][cloudgraphs-cov-url] | [![][mst-shield2]][dfg-milestones] |

# Contributors

Expand Down Expand Up @@ -75,9 +65,9 @@ This project adheres to the [JuliaRobotics code of conduct](https://github.com/J
[cov-img]: https://codecov.io/github/JuliaRobotics/Caesar.jl/coverage.svg?branch=master
[cov-url]: https://codecov.io/github/JuliaRobotics/Caesar.jl?branch=master
[build-img]: https://travis-ci.org/JuliaRobotics/Caesar.jl.svg?branch=master
[build-tag]: https://travis-ci.org/JuliaRobotics/Caesar.jl.svg?branch=release/v0.5
[build-tag]: https://travis-ci.org/JuliaRobotics/Caesar.jl.svg?branch=release/v0.6
[build-url]: https://travis-ci.org/JuliaRobotics/Caesar.jl
[caesar-stable]: https://img.shields.io/badge/2020Q3-v0.6.x-green.svg
[caesar-stable]: https://img.shields.io/badge/2020Q4-v0.6.x-green.svg
[caesar-slack-badge]: https://img.shields.io/badge/Caesarjl-Slack-green.svg?style=popout
[caesar-slack]: https://caesarjl.slack.com
[caesar-milestones]: https://github.com/JuliaRobotics/Caesar.jl/milestones
Expand All @@ -87,19 +77,19 @@ This project adheres to the [JuliaRobotics code of conduct](https://github.com/J
[r-cov-img]: https://codecov.io/github/JuliaRobotics/RoME.jl/coverage.svg?branch=master
[r-cov-url]: https://codecov.io/github/JuliaRobotics/RoME.jl?branch=master
[r-build-img]: https://travis-ci.org/JuliaRobotics/RoME.jl.svg?branch=master
[r-build-v05]: https://travis-ci.org/JuliaRobotics/RoME.jl.svg?branch=release%2Fv0.5
[r-build-v05]: https://travis-ci.org/JuliaRobotics/RoME.jl.svg?branch=release%2Fv0.9
[r-build-url]: https://travis-ci.org/JuliaRobotics/RoME.jl
[r-stable]: https://img.shields.io/badge/2020Q3-v0.9.x-green.svg
[r-stable]: https://img.shields.io/badge/2020Q4-v0.9.x-green.svg
[r-milestones]: https://github.com/JuliaRobotics/RoME.jl/milestones
[r-releases]: https://github.com/JuliaRobotics/RoME.jl/releases

[iif-cov-img]: https://codecov.io/github/JuliaRobotics/IncrementalInference.jl/coverage.svg?branch=master
[iif-cov-url]: https://codecov.io/github/JuliaRobotics/IncrementalInference.jl?branch=master
[iif-build-img]: https://travis-ci.org/JuliaRobotics/IncrementalInference.jl.svg?branch=master
[iif-build-v08]: https://travis-ci.org/JuliaRobotics/IncrementalInference.jl.svg?branch=release/v0.8
[iif-build-v016]: https://travis-ci.org/JuliaRobotics/IncrementalInference.jl.svg?branch=release/v0.16
[iif-build-url]: https://travis-ci.org/JuliaRobotics/IncrementalInference.jl
[iif-url]: http://www.github.com/JuliaRobotics/IncrementalInference.jl
[iif-stable]: https://img.shields.io/badge/2020Q3-v0.15.x-green.svg
[iif-stable]: https://img.shields.io/badge/2020Q4-v0.16.x-green.svg
[iif-milestones]: https://github.com/JuliaRobotics/IncrementalInference.jl/milestones
[iif-releases]: https://github.com/JuliaRobotics/IncrementalInference.jl/releases

Expand Down Expand Up @@ -149,7 +139,7 @@ This project adheres to the [JuliaRobotics code of conduct](https://github.com/J
[dfg-build-img]: https://travis-ci.org/JuliaRobotics/DistributedFactorGraphs.jl.svg?branch=master
[dfg-build-url]: https://travis-ci.org/JuliaRobotics/DistributedFactorGraphs.jl
[dfg-url]: http://www.github.com/JuliaRobotics/DistributedFactorGraphs.jl
[dfg-stable]: https://img.shields.io/badge/2020Q3-v0.10.x-green.svg
[dfg-stable]: https://img.shields.io/badge/2020Q4-v0.10.x-green.svg
[dfg-milestones]: https://github.com/JuliaRobotics/DistributedFactorGraphs.jl/milestones
[dfg-releases]: https://github.com/JuliaRobotics/DistributedFactorGraphs.jl/releases

Expand All @@ -171,18 +161,11 @@ This project adheres to the [JuliaRobotics code of conduct](https://github.com/J
[fsm-milestones]: https://github.com/JuliaRobotics/FunctionalStateMachine.jl/milestones
[fsm-releases]: https://github.com/JuliaRobotics/FunctionalStateMachine.jl/releases

[cloudgraphs-cov-img]: https://codecov.io/github/GearsAD/CloudGraphs.jl/coverage.svg?branch=master
[cloudgraphs-cov-url]: https://codecov.io/github/GearsAD/CloudGraphs.jl?branch=master
[cloudgraphs-build-img]: https://travis-ci.org/GearsAD/CloudGraphs.jl.svg?branch=master
[cloudgraphs-build-url]: https://travis-ci.org/GearsAD/CloudGraphs.jl
[cloudgraphs-url]: http://www.github.com/GearsAD/CloudGraphs.jl
[cg-stable]: https://img.shields.io/badge/2019Q3-WIP-yellowgreen.svg

[rp-url]: http://www.github.com/JuliaRobotics/RoMEPlotting.jl
[rp-cov-img]: https://codecov.io/github/JuliaRobotics/RoMEPlotting.jl/coverage.svg?branch=master
[rp-cov-url]: https://codecov.io/github/JuliaRobotics/RoMEPlotting.jl?branch=master
[rp-build-img]: https://travis-ci.org/JuliaRobotics/RoMEPlotting.jl.svg?branch=master
[rp-build-url]: https://travis-ci.org/JuliaRobotics/RoMEPlotting.jl
[rp-stable]: https://img.shields.io/badge/2020Q3-v0.4.x-green.svg
[rp-stable]: https://img.shields.io/badge/2020Q4-v0.4.x-green.svg
[rp-milestones]: https://github.com/JuliaRobotics/RoMEPlotting.jl/milestones
[rp-releases]: https://github.com/JuliaRobotics/RoMEPlotting.jl/releases
4 changes: 1 addition & 3 deletions docs/src/concepts/available_varfacs.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ Defaults in IncrementalInference.jl:
```@docs
Prior
PartialPrior
MixturePrior
```

Some of the most common priors (unary factors) in Caesar.jl/RoME.jl include:
Expand All @@ -73,8 +72,7 @@ PriorPose3

Defaults in IncrementalInference.jl:
```@docs
LinearConditional
MixtureLinearConditional
LinearRelative
```

Existing n-ary factors in Caesar.jl/RoME.jl/IIF.jl include:
Expand Down
14 changes: 14 additions & 0 deletions docs/src/concepts/building_graphs.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,20 @@ for i in 1:10
end
```

#### [OPTIONAL] Understanding Internal Factor Naming Convention

The factor name used by Caesar is automatically generated from
```julia
addFactor!(fg, [:x0; :x1],...)
```
will create a factor with name `:x0x1f1`

When you were to add a another factor betweem `:x0`, `:x1`:
```julia
addFactor!(fg, [:x0; :x1],...)
```
will create a second factor with the name `:x0x1f2`.

### When to Instantiate Poses (i.e. new Variables in Factor Graph)

Consider a robot traversing some area while exploring, localizing, and wanting to find strong loop-closure features for consistent mapping. The creation of new poses and landmark variables is a trade-off in computational complexity and marginalization errors made during factor graph construction. Common triggers for new poses are:
Expand Down
6 changes: 3 additions & 3 deletions docs/src/examples/basic_continuousscalar.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,18 @@ By forcing the initialization of `:x1` and plotting its belief estimate,
ensureAllInitialized!(fg)
plotKDE(fg, [:x0, :x1])
```
the predicted influence of the `P(Z| X1 - X0) = LinearConditional(Normal(10, 1))` is shown by the red trace.
the predicted influence of the `P(Z| X1 - X0) = LinearRelative(Normal(10, 1))` is shown by the red trace.
```@raw html
<p align="center">
<img src="https://raw.githubusercontent.com/JuliaRobotics/Caesar.jl/master/docs/src/assets/tutorials/ContinuousScalar/plx01.png" width="360" border="0" />
</p>
```
The red trace (predicted belief of `:x1`) is noting more than the approximated convolution of the current marginal belief of `:x0` with the conditional belief described by `P(Z | X1 - X0)`.

Another `ContinuousScalar` variable `:x2` is 'connected' to `:x1` through a more complicated `MixtureLinearConditional` likelihood function.
Another `ContinuousScalar` variable `:x2` is 'connected' to `:x1` through a more complicated `MixtureRelative` likelihood function.
```julia
addVariable!(fg, :x2, ContinuousScalar)
mmo = MixtureLinearConditional([Rayleigh(3); Uniform(30,55)], Categorical([0.4; 0.6]))
mmo = MixtureRelative(LinearRelative, (hypo1=Rayleigh(3), hypo2=Uniform(30,55)), [0.4; 0.6])
addFactor!(fg, [:x1, :x2], mmo)
```
```@raw html
Expand Down
2 changes: 1 addition & 1 deletion docs/src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The [non-Gaussian/multimodal section in the docs](https://juliarobotics.org/Caes

## Why Julia
The [JuliaLang](https://julialang.org/) and ([JuliaPro](https://juliacomputing.com/)) is an open-source Just-In-Time (JIT) & optionally precompiled, strongly-typed, and high-performance programming language.
The algorithmic code is implemented in Julia for many reasons, such as agile development, high level syntax, performance, type safety, multiple dispatch replacement for [object oriented](https://invenia.github.io/blog/2019/10/30/julialang-features-part-1/), parallel computing, dynamic development, cross compilable (with gcc and clang) and foundational cross-platform ([LLVM](http:///www.llvm.org)) technologies.
The algorithmic code is implemented in Julia for many reasons, such as agile development, high level syntax, performance, type safety, multiple dispatch replacement for [object oriented](https://invenia.github.io/blog/2019/10/30/julialang-features-part-1/) which exhibits [several emergent properties](https://invenia.github.io/blog/2019/11/06/julialang-features-part-2/), parallel computing, dynamic development, cross compilable (with gcc and clang) and foundational cross-platform ([LLVM](http:///www.llvm.org)) technologies.
See [JuliaCon2018 highlights video](https://www.youtube.com/watch?v=baR02tlea5Y). Julia can be thought of as either {C+, Mex (done right), [or as a modern Fortran replacement](https://arstechnica.com/science/2020/10/the-unreasonable-effectiveness-of-the-julia-programming-language/)}.

### Current Julia version?
Expand Down
2 changes: 1 addition & 1 deletion docs/src/func_ref.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ updateFGBT!
updateTreeCliquesAsMarginalizedFromVars!
upGibbsCliqueDensity
upMsg
wipeBuildNewTree!
resetBuildTree!
writeGraphPdf
resetVariableAllInitializations!
```
2 changes: 1 addition & 1 deletion docs/src/principles/approxConvDensities.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ The [IncrementalInference.jl](http://www.github.com/JuliaRobotics/IncrementalInf

Note in a factor graph sense, the flow of time is captured in the structure of the graph and a requirement of the IncrementalInference system is that factors can be resolved towards any variable, given current estimates on all other variables connected to that factor. Furthermore, this forwards or backwards resolving/convolution through a factor should adhere to the Kolmogorov Criterion of reversibility to ensure that detailed balance is maintained in the overall marginal posterior solutions.

The IncrementalInference (IIF) package provides a few generic conditional likelihood functions such as `LinearConditional` or `MixtureLinearConditional` which we will use in this illustration.
The IncrementalInference (IIF) package provides a few generic conditional likelihood functions such as `LinearRelative` or `MixtureRelative` which we will use in this illustration.

!!! note

Expand Down
3 changes: 1 addition & 2 deletions examples/dev/devCSMHexDelayMatrix.jl
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ allCSMFunctions = [
slowOnPrntAsChildrNeedDwn_StateMachine,
towardUpOrDwnSolve_StateMachine,
canCliqMargSkipUpSolve_StateMachine,
attemptDownInit_StateMachine,
tryDwnInitCliq_StateMachine,
rmMsgLikelihoodsAfterDwn_StateMachine,
blockSiblingStatus_StateMachine,
slowIfChildrenNotUpSolved_StateMachine,
Expand All @@ -56,7 +56,6 @@ allCSMFunctions = [
doAllSiblingsNeedDwn_StateMachine,
maybeNeedDwnMsg_StateMachine,
determineCliqNeedDownMsg_StateMachine,
doAnyChildrenNeedDwn_StateMachine,
decideUpMsgOrInit_StateMachine,
doesParentNeedDwn_StateMachine,
attemptCliqInitUp_StateMachine,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,8 @@ fetchCliqSolvableDims(getClique(tree, :x0))
prnt = getClique(tree, :x1)
getCliqSiblingsPriorityInitOrder(tree, prnt)

getData(getClique(tree, :x0)).solvableDims
# getData(getClique(tree, :x0)).solvableDims

fetch(getData(getClique(tree, :x0)).solvableDims)
# fetch(getData(getClique(tree, :x0)).solvableDims)

#
4 changes: 2 additions & 2 deletions examples/wheeled/racecar/LoadPyNNTxt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ end


# convenience function to load specific model format from tensorflow
function loadPose2OdoNNModelIntoFlux(dest::AbstractString)
function loadPose2OdoNNModelIntoFlux(dest::AbstractString; pad::Bool=false)
weights = loadPyNNTxt(dest::AbstractString)
buildPose2OdoNN_01_FromWeights(weights)
buildPose2OdoNN_01_FromWeights(weights, pad=pad)
end


Expand Down
Loading

0 comments on commit 43792c0

Please sign in to comment.