Skip to content

Commit

Permalink
Merge pull request #872 from JuliaRobotics/master
Browse files Browse the repository at this point in the history
v0.13.1-rc1
  • Loading branch information
Affie authored Jul 8, 2022
2 parents f10c0dc + eee1fcf commit af02ca7
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 14 deletions.
12 changes: 6 additions & 6 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", "MM-iSAMv2", "inference", "robotics", "ROS"]
desc = "Non-Gaussian simultaneous localization and mapping"
version = "0.13.0"
version = "0.13.1"

[deps]
ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"
Expand Down Expand Up @@ -44,30 +44,30 @@ Unmarshal = "cbff2730-442d-58d7-89d1-8e530c41eb02"
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"

[compat]
ApproxManifoldProducts = "0.4.21"
ApproxManifoldProducts = "0.4.21, 0.5"
AprilTags = "0.8, 0.9"
Combinatorics = "0.7, 0.8, 0.9, 1"
CoordinateTransformations = "0.5, 0.6"
DataStructures = "0.16, 0.17, 0.18"
DistributedFactorGraphs = "0.17, 0.18"
Distributions = "0.22, 0.23, 0.24, 0.25"
DocStringExtensions = "0.7, 0.8"
DocStringExtensions = "0.7, 0.8, 0.9"
FFTW = "1"
FileIO = "1"
ImageCore = "0.7, 0.8, 0.9"
ImageMagick = "0.7, 1.0, 1.1"
IncrementalInference = "0.26, 0.27, 0.28"
IncrementalInference = "0.26, 0.27, 0.28, 0.29"
JLD2 = "0.3, 0.4"
JSON = "0.19, 0.20, 0.21"
JSON2 = "0.3, 0.4"
KernelDensityEstimate = "0.5"
Manifolds = "0.6.3, 0.7"
Manifolds = "0.6.3, 0.7, 0.8"
NLsolve = "3, 4"
Optim = "1"
ProgressMeter = "0.9, 1"
Reexport = "0.2, 1"
Requires = "0.5, 1"
RoME = "0.17, 0.18"
RoME = "0.17, 0.18, 0.19"
Rotations = "1.1"
StaticArrays = "1"
TensorCast = "0.3, 0.4"
Expand Down
4 changes: 2 additions & 2 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ makedocs(
],
"Graph Library" => [
"Canonical Generators" => "examples/canonical_graphs.md",
"Entry=>Data Blob" => "concepts/entry_data.md",
"Variables/Factors" => "concepts/available_varfacs.md",
"Flux (NN) Factors" => "concepts/flux_factors.md",
"Entry=>Data Blob" => "concepts/entry_data.md",
"Images and AprilTags" => "examples/using_images.md",
"Flux (NN) Factors" => "concepts/flux_factors.md",
],
"Visualization" => [
"Installing Viz" => "install_viz.md",
Expand Down
7 changes: 4 additions & 3 deletions docs/src/concepts/using_manifolds.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,15 @@ The most popular Manifolds used in Caesar.jl related packages are:

### Creating a new Manifold

JuliaManifolds.jl is designed to make [it as easy as possible to define your own manifold and then get all the benefits of the Manifolds.jl ecosystem](https://juliamanifolds.github.io/Manifolds.jl/stable/examples/manifold.html). Follow the documentation there to make your own manifold, which can then readily be used with all the features of both JuliaManifolds as well as the Caesar.jl related packages.
JuliaManifolds.jl is designed to make [it as easy as possible to define your own manifold and then get all the benefits of the Manifolds.jl ecosystem](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/example.html). Follow the documentation there to make your own manifold, which can then readily be used with all the features of both JuliaManifolds as well as the Caesar.jl related packages.

## [Answers to 7 Questions](@id seven_mani_answers)

### Q1) What are Point, Tangents, Coordinates

A manifold ``\mathcal{M}`` is a collection of points that together create the given space. **Points** are like round sprinkles on the donut. The representation of points will vary from manifold to manifold. Sometimes it is even possible to have different representations for the same point on a manifold. These are usually denoted as ``p``.
Tangent **vectors** (we prefer _tangents_ for clarity) is a vector ``X`` that emanates from a point on a manifold. A vector lives in the tangent space of the manifold, a locally flat region around a point ``X\in T_p \mathcal{M}``. On the donut, imagine a rod-shaped sprinkle stuck along the tangent of the surface at a particular point ``p``. The **tangent space** is the collection of all possible tangents at ``p``.

Tangent **vectors** (we prefer _tangents_ for clarity) is a vector ``X`` that emanates from a point on a manifold tangential to the manifold curvature. A vector lives in the tangent space of the manifold, a locally flat region around a point ``X\in T_p \mathcal{M}``. On the donut, imagine a rod-shaped sprinkle stuck along the tangent of the surface at a particular point ``p``. The **tangent space** is the collection of all possible tangents at ``p``.

**Coordinates** are a user defined property that uses the Euclidean nature of the tangent space at point ``p`` to operate as a regular linear space. Coordinates are just a list of the indepedent coordinate dimensions of the tangent space values collected together. Read this part carefully, as it can easily be confused with a conventional tangent vector in a regular Euclidean space.

Expand All @@ -116,7 +117,7 @@ Multiple logmap interpretations exist, for example in the case of ``SpecialEucli

### Q3) What is the Exponential map

The exponential map does the opposite of the logarithm. Image a tangent vector ``X`` emanating from point ``p``. The length and direction of ``X`` can be wrapped onto the curvature of the manifold to form a line on the manifold surface.
The exponential map does the opposite of the logarithm. Imagine a tangent vector ``X`` emanating from point ``p``. The length and direction of ``X`` can be wrapped onto the curvature of the manifold to form a line on the manifold surface.
### Q4) What does `vee`/`hat` do

`vee` is an operation that converts a tangent vector representation into a coordinate representation. For example Lie algebra elements are tangent vector elements, so `vee([0 -w; w 0]) = w`. And visa versa for `hat(w) = [0 -w; w 0]`, which goes from coordinates to tangent vectors.
Expand Down
18 changes: 16 additions & 2 deletions docs/src/examples/using_images.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Images and AprilTags
# Images and Fiducials

## AprilTags

One common use in SLAM is [AprilTags.jl](https://github.com/JuliaRobotics/AprilTags.jl). Please see that repo for documentation on detecting tags in images. Note that Caesar.jl has a few built in tools for working with [Images.jl](https://github.com/JuliaImages/Images.jl) too.

Expand All @@ -12,5 +14,17 @@ Which immediately enables a new factor specifically developed for using AprilTag
Caesar.Pose2AprilTag4Corners
```

## Using Images.jl

The Caesar.jl ecosystem support use of the [JuliaImages/Images.jl](https://github.com/JuliaImages/Images.jl) suite of packages. Please see documentation there for the wealth of features implemented.

### Handy Notes

Converting between images and PNG format:

```julia
bytes = Caesar.toFormat(format"PNG", img)
```

!!! note
More details to follow.
More details to follow.
12 changes: 11 additions & 1 deletion docs/src/refs/literature.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,17 @@ Newly created page to list related references and additional literature pertaini

[2.14] Arnborg, S., Corneil, D.G. and Proskurowski, A., 1987. ["Complexity of finding embeddings in a k-tree"](https://epubs.siam.org/doi/pdf/10.1137/0608024). SIAM Journal on Algebraic Discrete Methods, 8(2), pp.277-284.

[2.15] Sola, J., Deray, J. and Atchuthan, D., 2018. ["A micro Lie theory for state estimation in robotics". arXiv preprint arXiv:1812.01537](https://arxiv.org/pdf/1812.01537), and [tech report](https://upcommons.upc.edu/bitstream/handle/2117/179757/2089-A-micro-Lie-theory-for-state-estimation-in-robotics%20(3).pdf).
[2.15a] Sola, J., Deray, J. and Atchuthan, D., 2018. ["A micro Lie theory for state estimation in robotics". arXiv preprint arXiv:1812.01537](https://arxiv.org/pdf/1812.01537), and [tech report](https://upcommons.upc.edu/bitstream/handle/2117/179757/2089-A-micro-Lie-theory-for-state-estimation-in-robotics%20(3).pdf).

[2.15b] Delleart F., 2012. [Lie Groups for Beginners](https://raw.githubusercontent.com/devbharat/gtsam/master/doc/LieGroups.pdf).

[2.15c] Eade E., 2017 [Lie Groups for 2D and 3D Transformations](https://ethaneade.com/lie.pdf).

[2.15d] Chirikjian, G.S., 2015. [Partial bi-invariance of SE(3) metrics](https://rpk.lcsr.jhu.edu/wp-content/uploads/2017/08/Partial-Bi-Invariance-of-SE3-Metrics1.pdf). Journal of Computing and Information Science in Engineering, 15(1).

[2.15e] Pennec, X. and Lorenzi, M., 2020. [Beyond Riemannian geometry: The affine connection setting for transformation groups](https://hal.inria.fr/hal-02342137/document). In Riemannian Geometric Statistics in Medical Image Analysis (pp. 169-229). Academic Press.

[2.15f] Žefran, M., Kumar, V. and Croke, C., 1996, August. [Choice of Riemannian metrics for rigid body kinematics](https://www.cis.upenn.edu/~cis610/SE3-Croke-Kumar.pdf). In International Design Engineering Technical Conferences and Computers and Information in Engineering Conference (Vol. 97584, p. V02BT02A030). American Society of Mechanical Engineers.

[2.16] Kaess, M. and Dellaert, F., 2009. [Covariance recovery from a square root information matrix for data association](https://apps.dtic.mil/dtic/tr/fulltext/u2/a537233.pdf). Robotics and autonomous systems, 57(12), pp.1198-1210.

Expand Down

0 comments on commit af02ca7

Please sign in to comment.