Skip to content

Commit

Permalink
Merge pull request #535 from JuliaRobotics/master
Browse files Browse the repository at this point in the history
v0.16.1-rc1
  • Loading branch information
dehann committed Oct 22, 2021
2 parents 8eeed01 + 875fe3f commit eb301e1
Show file tree
Hide file tree
Showing 14 changed files with 220 additions and 112 deletions.
16 changes: 8 additions & 8 deletions Project.toml
Expand Up @@ -2,7 +2,7 @@ name = "RoME"
uuid = "91fb55c2-4c03-5a59-ba21-f4ea956187b8"
keywords = ["SLAM", "state-estimation", "MM-iSAM", "MM-iSAMv2", "inference", "robotics"]
desc = "Non-Gaussian simultaneous localization and mapping"
version = "0.16.0"
version = "0.16.1"

[deps]
ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"
Expand Down Expand Up @@ -32,16 +32,16 @@ TensorCast = "02d47bb6-7ce6-556a-be16-bb1710789e2b"
TransformUtils = "9b8138ad-1b09-5408-aa39-e87ed6d21b63"

[compat]
ApproxManifoldProducts = "0.3.3, 0.4"
ApproxManifoldProducts = "0.4.15"
CoordinateTransformations = "0.5, 0.6"
DistributedFactorGraphs = "0.15, 0.16"
Distributions = "0.23, 0.24, 0.25"
DocStringExtensions = "0.7, 0.8"
DistributedFactorGraphs = "0.16.2"
Distributions = "0.24, 0.25"
DocStringExtensions = "0.8"
FileIO = "1"
IncrementalInference = "0.25"
IncrementalInference = "0.25.5"
JLD2 = "0.3, 0.4"
KernelDensityEstimate = "0.5.1, 0.6"
Manifolds = "0.6.3"
Manifolds = "0.6.3, 0.7"
ManifoldsBase = "0.12.6"
Optim = "0.22, 1.0"
ProgressMeter = "1"
Expand All @@ -51,7 +51,7 @@ Rotations = "0.13, 1"
StaticArrays = "1"
TensorCast = "0.3.3, 0.4"
TransformUtils = "0.2.11"
julia = "1.4"
julia = "1.6"

[extras]
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
Expand Down
30 changes: 14 additions & 16 deletions README.md
Expand Up @@ -2,12 +2,12 @@

| Stable | Dev | Coverage | Docs |
|--------|-----|----------|------|
| [![version][rjl-stable]][rjl-releases] | [![CI][rjl-ci-img]][rjl-ci-url] | [![codecov.io][rjl-cov-img]][rjl-cov-url] | [![docs][docs-shield]][caesar-docs] <br> [![][caesar-slack-badge]][caesar-slack] |
| [![version][rjl-ver-img]][rjl-releases] | [![CI][rjl-ci-dev-img]][rjl-ci-dev-url] | [![codecov.io][rjl-cov-img]][rjl-cov-url] | [![docs][cjl-docs-img]][cjl-docs-url] <br> [![][caesar-slack-badge]][caesar-slack] |


## Introduction

Robot Motion Estimate (RoME.jl) is part of the overall [Caesar.jl](https://www.github.com/JuliaRobotics/Caesar.jl) and provides a set of graph variables, factors, and utility features for robotics-related navigation, tracking, and mapping (i.e. SLAM). RoME.jl helps build front-ends using the [Multi-modal iSAM] backend solver which is implemented over at [IncrementalInference.jl](https://github.com/JuliaRobotics/IncrementalInference.jl). See [the related references of interest here](http://www.juliarobotics.org/Caesar.jl/latest/refs/literature/). Most notably, this package provides common navigation-type variables and factors to be included in more general [DistributedFactorGraphs.jl](https://github.com/JuliaRobotics/DistributedFactorGraphs.jl) graph objects.
Robot Motion Estimate (RoME.jl) is part of the overall [Caesar.jl][cjl-url] and provides a set of graph variables, factors, and utility features for robotics-related navigation, tracking, and mapping (i.e. SLAM). RoME.jl helps build front-ends using the [Multi-modal iSAM] backend solver which is implemented over at [IncrementalInference.jl][iif-url]. See [the related references of interest here](http://www.juliarobotics.org/Caesar.jl/latest/refs/literature/). Most notably, this package provides common navigation-type variables and factors to be included in more general [DistributedFactorGraphs.jl](https://github.com/JuliaRobotics/DistributedFactorGraphs.jl) graph objects.

[NavAbility.io](http://www.navability.io) helps the with administration and support of the Caesar.jl community, please reach out for any additional information (info@navability.io) or via the caesarjl Slack badge-link above.
## Installation
Expand All @@ -19,36 +19,34 @@ using Pkg
Pkg.add("RoME")
```

If you are interested in a broader toolkit, which includes a visualizer and database interaction, please see [Caesar.jl](https://github.com/dehann/Caesar.jl).

## Consider Citing

Consider citing our work using the common reference at [Caesar.jl Citation with IncrementalInference.jl DOI](https://github.com/JuliaRobotics/Caesar.jl#contributors). We are grateful for many, many contributions within the Julia package ecosystem -- see the [Juliahub.com](https://juliahub.com/ui/Packages/RoME/VVxXB) page for dependencies.
If you are interested in a broader toolkit, which includes a visualizer and database interaction, please see [Caesar.jl][cjl-url].

## Examples

[![docs][docs-shield]][caesar-docs]
See project wide Caesar.jl documentation for more details (click on badge).
See the common Caesar.jl documenation for more details [![cjl-docs-img]][cjl-docs-url]. Further examples can be found in the examples and test folders.
## Consider Citing

<a href="https://vimeo.com/190052649" target="_blank"><img src="https://raw.githubusercontent.com/JuliaRobotics/IncrementalInference.jl/master/doc/images/mmisamvid01.gif" alt="IMAGE ALT TEXT HERE" width="480" border="10" /></a>
Consider citing our work using the common reference at [Caesar.jl Citation with IncrementalInference.jl DOI](https://github.com/JuliaRobotics/Caesar.jl#contributors). We are grateful for many, many contributions within the Julia package ecosystem -- see the [Juliahub.com](https://juliahub.com/ui/Packages/RoME/VVxXB) page for dependencies.

## Comments and Issues Welcome

Please don't hesitate to open issues or suggestions in line with [JuliaRobotics code of conduct](https://github.com/JuliaRobotics/administration/blob/master/code_of_conduct.md). Find [the Gist here](https://gist.github.com/dehann/5f943d833f5fb06f4e00a2f4fb9f945a).


<!-- md variables duplicated in Caesar.jl README -->
[rjl-url]: http://www.github.com/JuliaRobotics/RoME.jl
[rjl-cov-img]: https://codecov.io/github/JuliaRobotics/RoME.jl/coverage.svg?branch=master
[rjl-cov-url]: https://codecov.io/github/JuliaRobotics/RoME.jl?branch=master
[rjl-ci-img]: https://github.com/JuliaRobotics/RoME.jl/actions/workflows/ci.yml/badge.svg
[rjl-ci-url]: https://github.com/JuliaRobotics/RoME.jl/actions/workflows/ci.yml
[rjl-stable]: https://juliahub.com/docs/RoME/version.svg
[rjl-ci-dev-img]: https://github.com/JuliaRobotics/RoME.jl/actions/workflows/ci.yml/badge.svg
[rjl-ci-dev-url]: https://github.com/JuliaRobotics/RoME.jl/actions/workflows/ci.yml
[rjl-ver-img]: https://juliahub.com/docs/RoME/version.svg
[rjl-milestones]: https://github.com/JuliaRobotics/RoME.jl/milestones
[rjl-releases]: https://github.com/JuliaRobotics/RoME.jl/releases
[rjl-juliahub]: https://juliahub.com/ui/Packages/RoME/VVxXB

[iif-url]: https://github.com/JuliaRobotics/IncrementalInference.jl

[docs-shield]: https://img.shields.io/badge/docs-latest-blue.svg
[caesar-docs]: http://juliarobotics.github.io/Caesar.jl/latest/
[cjl-url]: https://github.com/JuliaRobotics/Caesar.jl
[cjl-docs-img]: https://img.shields.io/badge/docs-latest-blue.svg
[cjl-docs-url]: http://juliarobotics.github.io/Caesar.jl/latest/
[caesar-slack-badge]: https://img.shields.io/badge/Caesarjl-Slack-green.svg?style=popout
[caesar-slack]: https://join.slack.com/t/caesarjl/shared_invite/zt-ucs06bwg-y2tEbddwX1vR18MASnOLsw
14 changes: 13 additions & 1 deletion src/Deprecated.jl
@@ -1,7 +1,19 @@

##==============================================================================
## Remove before RoME v0.18
##==============================================================================

## Serialization helpers -- moved to DFG v0.16.1

# getVariableType(M::typeof(SpecialEuclidean(2))) = Pose2()
# getVariableType(M::typeof(SpecialEuclidean(3))) = Pose3()


##==============================================================================
## Remove before RoME v0.17
##==============================================================================
# Deprecated a while ago, finalise with a message

# Deprecated a while ago, finalise with a message
export PartialPriorRollPitchZ, PackedPartialPriorRollPitchZ, PartialPose3XYYaw, PackedPartialPose3XYYaw
PartialPose3XYYaw(args...) = error("PartialPose3XYYaw is deprecated, use Pose3Pose3XYYaw")
PackedPartialPose3XYYaw(args...) = error("PackedPartialPose3XYYaw is deprecated, use PackedPose3Pose3XYYaw")
Expand Down
2 changes: 2 additions & 0 deletions src/RoME.jl
Expand Up @@ -29,6 +29,8 @@ using StaticArrays
import Manifolds
using Manifolds: hat, ProductGroup, ProductManifold, SpecialEuclidean, ProductRepr, SpecialOrthogonal, TranslationGroup, identity_element

import Manifolds: project, project!

export SpecialOrthogonal, SpecialEuclidean

# using Graphs, # TODO determine how many parts still require Graphs still directly
Expand Down
27 changes: 13 additions & 14 deletions src/RobotUtils.jl
Expand Up @@ -381,8 +381,8 @@ end



function get2DSamples(fg::G; #::Union{Symbol, S};
from::Int=0, to::Int=999999999,
function get2DSamples(fg::G;
from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1),
minnei::Int=0,
regexKey::Regex=r"x") where {G <: AbstractDFG, S <: AbstractString}
#
Expand All @@ -398,7 +398,6 @@ function get2DSamples(fg::G; #::Union{Symbol, S};
# if vertlbl[1] == sym
val = parse(Int,split(vertlbl[2:end],'_')[1])
if from <= val && val <= to
# if length( getOutNeighbors(fg, vertlbl[2] , needdata=true ) ) >= minnei
if length( DFG.getNeighbors(fg, id ) ) >= minnei
# if length(out_neighbors(fg.v[id[2]],fg.g)) >= minnei
X=[X; vec(getVal(fg,id)[1,:]) ]
Expand All @@ -421,7 +420,7 @@ DFG.getVariableLabelNumber, DFT.findFactorsBetweenNaive
"""
function listVariablesLabelsWithinRange(fg::AbstractDFG,
regexKey::Regex=r"x";
from::Int=0, to::Int=9999999999,
from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1),
minnei::Int=0)
#

Expand All @@ -436,7 +435,7 @@ function listVariablesLabelsWithinRange(fg::AbstractDFG,
if length( DFG.getNeighbors(fg, id) ) >= minnei
mask[count] = true
end
if occursin(regexKey, string(id)) && (from != 0 || to != 9999999999)
if occursin(regexKey, string(id)) && (from != 0 || to != (2^(Sys.WORD_SIZE-1)-1))
vertlbl = string(id)
# TODO won't work with nested labels
m = match(r"\d+", string(id))
Expand All @@ -452,11 +451,11 @@ function listVariablesLabelsWithinRange(fg::AbstractDFG,
saids[mask]
end

@deprecate getVariablesLabelsWithinRange(fg::AbstractDFG,regexKey::Regex=r"x";from::Int=0, to::Int=9999999999,minnei::Int=0) listVariablesLabelsWithinRange(fg,regexKey,from=from,to=to,minnei=minnei)
@deprecate getVariablesLabelsWithinRange(fg::AbstractDFG,regexKey::Regex=r"x";from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1),minnei::Int=0) listVariablesLabelsWithinRange(fg,regexKey,from=from,to=to,minnei=minnei)

function get2DSampleMeans(fg::AbstractDFG,
regexKey::Regex=r"x";
from::Int=0, to::Int=9999999999,
from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1),
minnei::Int=0)
#
X = Array{Float64,1}()
Expand Down Expand Up @@ -487,18 +486,18 @@ function getAll2DPoses(fg::G; regexKey=r"x") where G <: AbstractDFG
return getAll2DSamples(fg, regexKey=regexKey )
end

function get2DPoseSamples(fg::G; from::Int=0, to::Int=999999999, regexKey=r"x") where G <: AbstractDFG
function get2DPoseSamples(fg::G; from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1), regexKey=r"x") where G <: AbstractDFG
return get2DSamples(fg, regexKey=regexKey, from=from, to=to )
end

function get2DPoseMeans(fg::G; from::Int=0, to::Int=999999999, regexKey=r"x") where G <: AbstractDFG
function get2DPoseMeans(fg::G; from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1), regexKey=r"x") where G <: AbstractDFG
return get2DSampleMeans(fg, regexKey, from=from, to=to )
end


function get2DPoseMax(fgl::G;
regexKey::Regex=r"x",
from::Int=-99999999999, to::Int=9999999999 ) where G <: AbstractDFG
from::Int=-(2^(Sys.WORD_SIZE-1)-1), to::Int=(2^(Sys.WORD_SIZE-1)-1) ) where G <: AbstractDFG
#
# xLB,ll = ls(fgl) # TODO add: from, to, special option 'x'
xLB = DFG.getVariableIds(fgl, regexKey)
Expand All @@ -523,14 +522,14 @@ end

function get2DLandmSamples(fg::G;
from::Int=0,
to::Int=999999999,
to::Int=(2^(Sys.WORD_SIZE-1)-1),
minnei::Int=0 ) where G <: AbstractDFG
#
return get2DSamples(fg, regexKey=r"l", from=from, to=to, minnei=minnei )
end

function get2DLandmMeans(fg::G;
from::Int=0, to::Int=999999999,
from::Int=0, to::Int=(2^(Sys.WORD_SIZE-1)-1),
minnei::Int=0,
landmarkRegex::Regex=r"l" ) where G <: AbstractDFG
#
Expand Down Expand Up @@ -560,8 +559,8 @@ function removeKeysFromArr(fgl::G,
end

function get2DLandmMax(fgl::G;
from::Int=-99999999999,
to::Int=9999999999,
from::Int=-(2^(Sys.WORD_SIZE-1)-1),
to::Int=(2^(Sys.WORD_SIZE-1)-1),
showmm=false, MM::Dict{Int,T}=Dict{Int,Int}(),
regexLandmark::Regex=r"l" ) where {G <: AbstractDFG, T}
#
Expand Down

0 comments on commit eb301e1

Please sign in to comment.