spillai / Caesar.jl

Robot toolkit: Towards non-parametric and parametric navigation solutions

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A modern robotic toolkit for localization and mapping -- towards non-parametric / parametric navigation solutions.

Build Status

This is a research and development driven project and intended to reduce the barrier of entry for Simultaneous Localization and Mapping (SLAM) systems. This Julia package encompasses test cases and robot related software for multi-modal (multi-hypothesis) navigation and mapping solutions from various sensor data, made possible by Multi-modal iSAM.

Please see related packages, Robot Motion Estimate RoME.jl and back-end solver IncrementalInference.jl.

Examples

Intersection of ambiguous elevation angle from planar SONAR sensor:

IMAGE ALT TEXT HERE

Bi-modal belief

IMAGE ALT TEXT HERE

Multi-modal range only example:

IMAGE ALT TEXT HERE

Installation

Requires via sudo apt-get install, see DrakeVisualizer.jl for more details.

libvtk5-qt4-dev python-vtk

Then install required Julia packages

julia> Pkg.add("Caesar")

Note that Database related packages will not be automatically installed. Please see section below for details.

Basic usage

Here is a basic example of using visualization and multi-core factor graph solving:

addprocs(2)
using Caesar, RoME, TransformUtils

vc = startdefaultvisualization()
defaultscene01!(vc)
rovt = loadmodel(:rov)
rovt(vc)

initCov = 0.01*eye(6); [initCov[i,i] = 0.001 for i in 4:6];
odoCov = 0.001*eye(6); [odoCov[i,i] = 0.001 for i in 4:6];
rangecov, bearingcov = 3e-4, 2e-3

fg = identitypose6fg(initCov=initCov)
tf = SE3([0.0;0.7;0.0], Euler(pi/4,0.0,0.0) )
addOdoFG!(fg, Pose3Pose3(tf, odoCov) )

visualizeallposes!(vc, fg, drawlandms=false)

addLinearArrayConstraint(fg, (4.0, 0.0), :x2, :l1, rangecov=rangecov,bearingcov=bearingcov)
visualizeDensityMesh!(vc, fg, :l1, meshid=2)
addLinearArrayConstraint(fg, (4.0, 0.0), :x1, :l1, rangecov=rangecov,bearingcov=bearingcov)

solveandvisualize(fg, vc, drawlandms=false, densitymeshes=[:l1;:x2])

Major features

  • Visualization through MIT Director.

  • A multicore SLAM server over tcp

    julia -p10 -e "using Caesar; tcpStringSLAMServer()"

  • A multicore Bayes 2D feature tracking server over tcp

    julia -p10 -e "using Caesar; tcpStringBRTrackingServer()"

Dependency Status

Major Dependencies Status Test Coverage
Caesar.jl Build Status codecov.io
RoME.jl Build Status codecov.io
IncrementalInference.jl Build Status codecov.io
KernelDensityEstimate.jl Build Status codecov.io
TransformUtils.jl Build Status codecov.io
DrakeVisualizer.jl Build Status codecov.io

Database interaction layer

For using the solver on a DataBase layer (work in progress on centralized architecture ) see CloudGraphs,

Install Neo4j and add these packages to your Julia system

Pkg.clone("https://github.com/GearsAD/Neo4j.jl.git")
Pkg.clone("https://github.com/GearsAD/CloudGraphs.jl.git")

Modify CloudGraphs related lines from test/runtests.jl Ln 7 to true.

You should be able to rerun the four door test on both internal dictionaries and repeated on Neo4j DB

Pkg.test("Caesar")

Go to your browser at localhost:7474 and run one of the Cypher queries to either retrieve or delete everything:

match (n) return n
match (n) detach delete n

You can run the database solver using the example MM-iSAMCloudSolve.jl

julia050 -p7 MM-iSAMCloudSolve.jl <neo4jaddr> <neo4jusr> <pwd> <mongoaddr> <SESSIONNAME>

Future targets

This is a work in progress package. Please file issues here as needed to help resolve problems for everyone!

Hybrid parametric and non-parametric optimization. Incrementalized update rules and properly marginalized 'forgetting' for sliding window type operation. We defined interprocess interface for multi-language front-end development.

About

Robot toolkit: Towards non-parametric and parametric navigation solutions

License:MIT License


Languages

Language:Julia 100.0%