A modern robotic toolkit for localization and mapping -- towards non-parametric / parametric navigation solutions.
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.
Intersection of ambiguous elevation angle from planar SONAR sensor:
Bi-modal belief
Multi-modal range only example:
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.
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])
-
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()"
Major Dependencies | Status | Test Coverage |
---|---|---|
Caesar.jl | ||
RoME.jl | ||
IncrementalInference.jl | ||
KernelDensityEstimate.jl | ||
TransformUtils.jl | ||
DrakeVisualizer.jl |
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>
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.