Abstraction layer for cross-feeding distributed factor graphs over various technologies
Author JuliaRobotics
5 Stars
Updated Last
3 Months Ago
Started In
May 2018


Release v0.8 Dev Coverage DFG Docs Caesar Docs
Build Status Build Status Codecov Status docs docs

DistributedFactorGraphs.jl provides a flexible factor graph API for use in the Caesar.jl ecosystem. The package supplies:

  • A standardized API for interacting with factor graphs
  • Implementations of the API for in-memory and database-driven operation
  • Visualization extensions to validate the underlying graph

Note this package is still under initial development, and will adopt parts of the functionality currently contained in IncrementalInference.jl.


Please see the documentation and the unit tests for examples on using DistributedFactorGraphs.jl.


DistributedFactorGraphs can be installed from Julia packages using:

add DistributedFactorGraphs


The in-memory implementation is the default, using LightGraphs.jl.

using DistributedFactorGraphs

Both drivers support the same functions, so choose which you want to use when creating your initial DFG. For example:

# In-memory DFG
dfg = LightDFG{NoSolverParams}()
addVariable!(dfg, DFGVariable(:a))
addVariable!(dfg, DFGVariable(:b))
addFactor!(dfg, [v1, v2], DFGFactor{Int, :Symbol}(:f1)) # Rather use a RoME-type factor here (e.g. Pose2Pose2) rather than an Int, this is just for demonstrative purposes.