Querying the FactorGraph
There are a variety of functions to query the factor graph, please refer to Function Reference for details.
A quick summary of the variables in the factor graph can be retrieved with:
# List variables
ls(fg)
# List factors attached to x0
ls(fg, :x0)
# TODO: Provide an overview of getVal, getVert, getBW, getVertKDE, etc.
Solving Graphs
When you have built the graph, you can call the solver to perform inference with the following:
# Perform inference
batchSolve!(fg)
Peeking at Results
Once you have solved the graph, you can review the full marginal with:
X0 = getKDE(fg, :x0) # Get the raw KDE
# Evaluate the marginal density function just for fun at [0.01, 0, 0].
X0([0.01, 0, 0])
For finding the MAP value in the density functions, you can use getKDEMax
or getKDEMean
. Here we are asking for the MAP values for all the variables in the factor graph:
verts = ls(fg)
map(v -> println("$v : $(getKDEMax(getVertKDE(fg, v)))"), verts[1]);
Also see built-in function
printgraphmax(fg)
which performs a similar function.
Plotting
Once the graph has been built, a simple plot of the values can be produced with RoMEPlotting.jl. For example:
using RoMEPlotting
drawPoses(fg)
# If you have landmarks, you can instead call
# drawPosesLandms(fg)
# Draw the KDE for x0
plotKDE(fg, :x0)
# Draw the KDE's for x0 and x1
plotKDE(fg, [:x0, :x1])
Next Steps
Although the above graph demonstrates the fundamental operations, it's not particularly useful. Take a look at Hexagonal Example for a complete example that builds on these operations.