Function Reference

WORK IN PROGRESS Not all functions have been added to this directory yet.

Caesar

Caesar.appendvertbigdata!Function
appendvertbigdata!(cloudGraph, cv, description, data)

Append big data element into current blob store and update associated global vertex information.

source
appendvertbigdata!(fgl, vert, description, data)

Append big data element into current blob store and update associated global vertex information.

source
appendvertbigdata!(fg, sym, descr, data)

Append big data element into current blob store using parent appendvertbigdata!, but here specified by symbol of variable node in the FactorGraph. Note the default data layer api definition. User must define dlapi to refetching the vertex from the data layer. localapi avoids repeated network database fetches.

source
Caesar.consoleaskuserfordbFunction
consoleaskuserfordb(; nparticles, drawdepth, clearslamindb, multisession, drawedges)

Obtain database addresses and login credientials from STDIN, as well as a few case dependent options.

source
Caesar.db2jldFunction
db2jld(cgl::CloudGraph, session::AbstractString, filename::AbstractString)

Fetch and save a FactorGraph session to a jld, using CloudGraph object and session definition.

source
db2jld(filename::AbstractString; addrdict::NothingUnion{Dict{AbstractString, AbstractString}}=nothing )

Fetch and save a FactorGraph session to a jld, using or asking STDIN for credentials in the addrdict field.

source
Caesar.executeQueryFunction
executeQuery(connection, query)

Run Neo4j Cypher queries on the cloudGraph database, and return Tuple with the unparsed (results, loadresponse). Throws an error if the query fails.

source
Caesar.fetchrobotdatafirstposeFunction
fetchrobotdatafirstpose(cg::CloudGraph, session::AbstractString, robot::AbstractString, user::AbstractString)

Return dict of JSON parsed "robot_description" field as was inserted by counterpart insertrobotdatafirstpose! function. Used for storing general robot specific data in easily accessible manner.

source
Caesar.fetchsubgraph!Function
fetchsubgraph!(fgl, cvs; numneighbors)

Fetch and insert list of CloudVertices into FactorGraph object, up to neighbor depth.

source
fetchsubgraph!(fgl, neoids; numneighbors)

Fetch and insert list of Neo4j IDs into FactorGraph object, up to neighbor depth.

source
Caesar.getAllLandmarkNeoIDsFunction
getAllLandmarkNeoIDs(lm2others, slm)

Return Vector{Int} of Neo4j vertex IDs relating to symbol, as listed in lm2others.

source
Caesar.getBigDataElementFunction
getBigDataElement(vertex, description)

Walk through vertex bigDataElements and return the last matching description.

source
Caesar.getExVertexNeoIDsFunction
getExVertexNeoIDs(conn; label, solvable, backendset, session, robot, user, reqbackendset)

Return array of tuples with ExVertex IDs and Neo4j IDs for vertices with label in session.

source
Caesar.getLandmOtherSessNeoIDsFunction
getLandmOtherSessNeoIDs{T <: AbstractString}(::CloudGraph, session::T="", robot::T="", user::T="", multisessions=Vector{T}())

Return dict of dict of Neo4j vertex IDs by session and landmark symbols.

source
Caesar.getLocalSubGraphMultisessionFunction
getLocalSubGraphMultisession(cg, lm2others; session, robot, user, numneighbors)

Return subgraph copy of type FactorGraph contaning values from session in lm2others, and Vector{Symbol} of primary key symbols used for graph exstraction.

source
Caesar.getPoseExVertexNeoIDsFunction
getPoseExVertexNeoIDs(conn; solvable, backendset, session, reqbackendset)

Return array of tuples with ExVertex IDs and Neo4j IDs for all poses.

source
Caesar.getVertNeoIDs!Function
getVertNeoIDs!(::CloudGraph, res::Dict{Symbol, Int}; session::AbstractString="NA", robot::AbstractString="NA", user::AbstractString="NA")

Insert into and return dict res with Neo4j IDs of ExVertex labels as stored per session in Neo4j database.

source
Caesar.getfirstposeFunction
getfirstpose(cg::CloudGraph, session::AbstractString, robot::AbstractString, user::AbstractString)

Return Tuple{Symbol, Int} of first pose symbol and Neo4j node ID.

source
Caesar.getnewvertdictFunction
getnewvertdict(conn, session::AbstractString, robot::AbstractString, user::AbstractString)

Return a dictionary with frtend and mongo_keys json string information for :NEWDATA elements in Neo4j database.

source
Caesar.getprpt2kdeFunction
getprp2kde(::CloudGraph, neoids::Vector{Int}; N::Int=100)

Return PriorPoint2DensityNH with N points based on beliefs of neoids, and equal share null hypothesis between length(neoids)+1 beliefs.

source
Caesar.hasBigDataElementFunction
hasBigDataElement(vertex, description)

Return true if vertex has bigDataElements with matching description.

source
Caesar.insertrobotdatafirstpose!Function
insertrobotdatafirstpose!(cg::CloudGraph, session::AbstractString, robot::AbstractString, user::AbstractString, robotdict::Dict)

Saves robotdict via JSON to first pose in a SESSION in the database. Used for storing general robot specific data in easily accessible manner. Can fetch later retrieve same dict with counterpart fetchrobotdatafirstpose function.

source
Caesar.removeNeo4jIDFunction
removeNeo4jID(cg::CloudGraph, neoid=-1)

Remove node from Neo4j according to Neo4j Node ID. Big data elements that may be associated with this node are not removed.

source
Caesar.resetentireremotesessionFunction
resetentireremotesession(conn, session, robot, user; segment)

match (n:session) remove n.backendset, n.solvable, n.data, n.bigData, n.label, n.packedType, n.exVertexId, n.shape, n.width set n :NEWDATA return n

source
Caesar.standardcloudgraphsetupFunction
standardcloudgraphsetup(; addrdict, nparticles, drawdepth, drawedges, clearslamindb, multisession)

Connect to databases via network according to addrdict, or ask user for credentials and return active cloudGraph object, as well as addrdict.

source
Caesar.updatenewverts!Function

Convert vertices of session in Neo4j DB with Caesar.jl's required data elements in preparation for MM-iSAMCloudSolve process.

source
Caesar.whosNear2DFunction
whosNear2D(cg, session, robot, user; x, y, yaw, dist, angle)

Find vertices near the point specified and return dictionary of symbol to Neo4j ID pairs.

source
Caesar.whosNear3DFunction
whosNear3D(cg, session, robot, user; x, y, z, roll, pitch, yaw, dist, angle)

Find vertices near the point specified and return dictionary of symbol to Neo4j ID pairs.

source

RoME

RoME.getRangeKDEMax2DFunction
getRangeKDEMax2D(fgl, vsym1, vsym2)

Calculate the cartesian distance between two vertices in the graph using their symbol name, and by maximum belief point.

getRangeKDEMax2D(cgl::CloudGraph, session::AbstractString, vsym1::Symbol, vsym2::Symbol)

Calculate the cartesian distange between two vertices in the graph, by session and symbol names, and by maximum belief point.

source
RoME.initFactorGraph!Function
initFactorGraph!(fg; P0, init, N, lbl, solvable, firstPoseType, labels)

Initialize a factor graph object as Pose2, Pose3, or neither and returns variable and factor symbols as array.

RoME.addOdoFG!Function
addOdoFG!(fg, n, DX, cov; N, solvable, labels)

Create a new variable node and insert odometry constraint factor between which will automatically increment latest pose symbol x<k+1> for new node new node and constraint factor are returned as a tuple.

addOdoFG!(fgl, odo; N, solvable, labels)

Create a new variable node and insert odometry constraint factor between which will automatically increment latest pose symbol x<k+1> for new node new node and constraint factor are returned as a tuple.

IncrementalInference

DistributedFactorGraphs.addVariable!Function
addVariable!(dfg, lbl, softtype; N, autoinit, solvable, timestamp, dontmargin, labels, smalldata, checkduplicates, initsolvekeys)

Add a variable node lbl::Symbol to fg::AbstractDFG, as softtype<:InferenceVariable.

Example

fg = initfg()
addVariable!(fg, :x0, Pose2)
DistributedFactorGraphs.addFactor!Function

Add factor with user defined type <: FunctorInferenceType to the factor graph object. Define whether the automatic initialization of variables should be performed. Use order sensitive multihypo keyword argument to define if any variables are related to data association uncertainty.

IncrementalInference.approxCliqMarginalUp!Function
approxCliqMarginalUp!(fg_, tree_, cliq)
approxCliqMarginalUp!(fg_, tree_, cliq, childmsgs; N, dbg, iters, drawpdf, multiproc, logger)

Approximate Chapman-Kolmogorov transit integral and return separator marginals as messages to pass up the Bayes (Junction) tree, along with additional clique operation values for debugging.

Notes

  • onduplicate=true by default internally uses deepcopy of factor graph and Bayes tree, and does not update the given objects. Set false to update fgl and treel during compute.

Future

  • TODO: internal function chain is too long and needs to be refactored for maintainability.
IncrementalInference.approxConvFunction
approxConv(dfg, fc, towards)
approxConv(dfg, fc, towards, measurement; N)

Draw samples from the approximate convolution of towards symbol using factor fct relative to the other variables. In addition the api can be adjusted to recover the data from elsewhere (likely to be replaced/removed in the future).

IncrementalInference.assignTreeHistory!Function
assignTreeHistory!(treel, cliqHistories)

After solving, clique histories can be inserted back into the tree for later reference. This function helps do the required assigment task.

IncrementalInference.asyncTreeInferUp!Function

Perform tree based initialization of all variables not yet initialized in factor graph as non-blocking method.

Notes:

  • To simplify debugging, this method does not include the usual @ sync around all the state machine async processes.
  • Extract the error stack with a fetch on the failed process return by this function.

Related

initInferTreeUp!

IncrementalInference.attemptTreeSimilarCliqueFunction
attemptTreeSimilarClique(othertree, seeksSimilar)

Special internal function to try return the clique data if succesfully identified in othertree::AbstractBayesTree, based on contents of seeksSimilar::BayesTreeNodeData.

Notes

  • Used to identify and skip similar cliques (i.e. recycle computations)
IncrementalInference.blockCliqUntilChildrenHaveUpStatusFunction
blockCliqUntilChildrenHaveUpStatus(tree, prnt)
blockCliqUntilChildrenHaveUpStatus(tree, prnt, logger)

Block the thread until child cliques of prnt::TreeClique have finished attempting upward initialization – i.e. have status result. Return ::Dict{Symbol} indicating whether next action that should be taken for each child clique.

Notes:

  • See status options at getCliqStatusUp(..).
  • Can be called multiple times
Missing docstring.

Missing docstring for buildSubgraphFromLabels. Check Documenter's build log for details.

IncrementalInference.buildTreeFromOrdering!Function
buildTreeFromOrdering!(dfg, p; drawbayesnet, maxparallel, solvable)

Build Bayes/Junction/Elimination tree from a given variable ordering.

buildTreeFromOrdering!(dfg, p; drawbayesnet, maxparallel)

Build Bayes/Junction/Elimination tree from a given variable ordering.

Missing docstring.

Missing docstring for buildCliqSubgraphDown. Check Documenter's build log for details.

Missing docstring.

Missing docstring for buildCliqSubgraphUp. Check Documenter's build log for details.

IncrementalInference.cliqGibbsFunction
cliqGibbs(fg, cliq, vsym, inmsgs, N, dbg, manis)
cliqGibbs(fg, cliq, vsym, inmsgs, N, dbg, manis, logger)

Perform one step of the minibatch clique Gibbs operation for solving the Chapman-Kolmogov trasit integral – here involving separate approximate functional convolution and product operations.

IncrementalInference.cliqHistFilterTransitionsFunction
cliqHistFilterTransitions(hist, nextfnc)

Return state machine transition steps from history such that the nextfnc::Function.

Related:

getCliqSolveHistory, printCliqHistorySummary, filterHistAllToArray, sandboxCliqResolveStep

IncrementalInference.cliqInitSolveUpByStateMachine!Function
cliqInitSolveUpByStateMachine!(dfg, tree, cliq; N, oldcliqdata, drawtree, show, incremental, limititers, upsolve, downsolve, recordhistory, delay, logger)

EXPERIMENTAL: perform upward inference using a state machine solution approach.

Notes:

  • will call on values from children or parent cliques
  • can be called multiple times
  • Assumes all cliques in tree are being solved simultaneously and in similar manner.
  • State machine rev.1 – copied from first TreeBasedInitialization.jl.
  • Doesn't do partial initialized state properly yet.
Missing docstring.

Missing docstring for compareAllVariables. Check Documenter's build log for details.

Missing docstring.

Missing docstring for compareFactorGraphs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for compareSimilarFactors. Check Documenter's build log for details.

Missing docstring.

Missing docstring for compareSimilarVariables. Check Documenter's build log for details.

Missing docstring.

Missing docstring for compareSubsetFactorGraph. Check Documenter's build log for details.

Missing docstring.

Missing docstring for compareVariable. Check Documenter's build log for details.

IncrementalInference.csmAnimateFunction
csmAnimate(fg, tree, cliqsyms; frames, rmfirst)

Animate multiple clique state machines on the same graphviz visualization. Renders according to linear time for all provided histories.

Example:

using Caesar

# build a factor graph
fg = initfg()
# addVariable!(...)
# addFactor!(...)
# ...

fsy = getTreeAllFrontalSyms(fg, tree) # for later use
# perform inference to find the factor graph marginal posterior estimates
tree, smt, hist = solveTree!(fg, recordcliqs=fsy)

# generate frames in standard location /tmp/caesar/csmCompound/
#  requires: sudo apt-get install graphviz
csmAnimate(fg, tree, fsy, frames=500)

# to render and show from default location (might require)
#  sudo apt-get install ffmpeg vlc

# .ogv [Totem Ubuntu default]
Base.rm("/tmp/caesar/csmCompound/out.ogv")
run(`ffmpeg -r 10 -i /tmp/caesar/csmCompound/csm_%d.png -c:v libtheora -vf fps=25 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -q 10 /tmp/caesar/csmCompound/out.ogv`)
run(`totem /tmp/caesar/csmCompound/out.ogv`)

# h.264 [VLC not default]
Base.rm("/tmp/caesar/csmCompound/out.mp4")
run(`ffmpeg -r 10 -i /tmp/caesar/csmCompound/csm_%d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" /tmp/caesar/csmCompound/out.mp4`)
run(`vlc /tmp/caesar/csmCompound/out.mp4`)
IncrementalInference.cycleInitByVarOrder!Function
cycleInitByVarOrder!(subfg, varorder; logger)

Cycle through var order and initialize variables as possible in subfg::AbstractDFG. Return true if something was updated.

Notes:

  • assumed subfg is a subgraph containing only the factors that can be used.
    • including the required up or down messages
  • intended for both up and down initialization operations.

Dev Notes

  • Should monitor updates based on the number of inferred & solvable dimensions
Missing docstring.

Missing docstring for decodefg. Check Documenter's build log for details.

Missing docstring.

Missing docstring for deleteFactor!. Check Documenter's build log for details.

Missing docstring.

Missing docstring for deleteVariable!. Check Documenter's build log for details.

IncrementalInference.doautoinit!Function
doautoinit!(dfg, xi; singles, N, logger)

EXPERIMENTAL: initialize target variable xi based on connected factors in the factor graph fgl. Possibly called from addFactor!, or doCliqAutoInitUp! (?).

Notes:

  • Special carve out for multihypo cases, see issue 427.

Development Notes:

Target factor is first (singletons) or second (dim 2 pairwise) variable vertex in xi.

  • TODO use DFG properly with local operations and DB update at end.
  • TODO get faster version of isInitialized for database version.
  • TODO: Persist this back if we want to here.
IncrementalInference.doCliqUpSolve!Function
doCliqUpSolve!(subfg, tree, cliq; multiproc, logger)

Update subfg<:AbstractDFG according to internal computations for a full upsolve.

IncrementalInference.downGibbsCliqueDensityFunction
downGibbsCliqueDensity(fg, cliq, dwnMsgs)
downGibbsCliqueDensity(fg, cliq, dwnMsgs, N)
downGibbsCliqueDensity(fg, cliq, dwnMsgs, N, MCMCIter)
downGibbsCliqueDensity(fg, cliq, dwnMsgs, N, MCMCIter, dbg)
downGibbsCliqueDensity(fg, cliq, dwnMsgs, N, MCMCIter, dbg, usemsgpriors)
downGibbsCliqueDensity(fg, cliq, dwnMsgs, N, MCMCIter, dbg, usemsgpriors, logger)

Perform Chapman-Kolmogorov transit integral approximation for cliq in downward pass direction.

Notes

  • Only update frontal variables of the clique.
Missing docstring.

Missing docstring for downMsgPassingRecursive. Check Documenter's build log for details.

IncrementalInference.drawCliqSubgraphUpMockingFunction
drawCliqSubgraphUpMocking(fgl, treel, frontalSym; show, filepath, engine, viewerapp)

Construct (new) subgraph and draw the subgraph associated with clique frontalSym::Symbol.

Notes

  • See drawGraphCliq/writeGraphPdf for details on keyword options.

Related

drawGraphCliq, spyCliqMat, drawTree, buildCliqSubgraphUp, buildSubgraphFromLabels!

Missing docstring.

Missing docstring for dwnMsg. Check Documenter's build log for details.

IncrementalInference.fifoFreeze!Function
fifoFreeze!(dfg)

Freeze nodes that are older than the quasi fixed-lag length defined by fg.qfl, according to fg.fifo ordering.

Future:

  • Allow different freezing strategies beyond fifo.
IncrementalInference.filterHistAllToArrayFunction
filterHistAllToArray(tree, frontals, nextfnc)

Return state machine transition steps from all cliq histories with transition nextfnc::Function.

Related:

getCliqSolveHistory, printCliqHistorySummary, cliqHistFilterTransitions, sandboxCliqResolveStep

IncrementalInference.findRelatedFromPotentialFunction
findRelatedFromPotential(dfg, fct, varid, N)
findRelatedFromPotential(dfg, fct, varid, N, dbg)

Compute proposal belief on vertid through fct representing some constraint in factor graph. Always full dimension variable node – partial constraints will only influence subset of variable dimensions. The remaining dimensions will keep pre-existing variable values.

Notes

  • fulldim is true when "rank-deficient" – TODO swap to false (or even float)
IncrementalInference.fmcmc!Function
fmcmc!(fgl, cliq, fmsgs, lbls, N, MCMCIter)
fmcmc!(fgl, cliq, fmsgs, lbls, N, MCMCIter, dbg)
fmcmc!(fgl, cliq, fmsgs, lbls, N, MCMCIter, dbg, logger)
fmcmc!(fgl, cliq, fmsgs, lbls, N, MCMCIter, dbg, logger, multithreaded)

Iterate successive approximations of clique marginal beliefs by means of the stipulated proposal convolutions and products of the functional objects for tree clique cliq.

IncrementalInference.getCliqFunction
getCliq(bt, frt)

Return the TreeClique node object that represents a clique in the Bayes (Junction) tree, as defined by one of the frontal variables frt<:AbstractString.

Notes

  • Frontal variables only occur once in a clique per tree, therefore is a unique identifier.

Related:

getCliq, getTreeAllFrontalSyms

IncrementalInference.getCliqAssocMatFunction
getCliqAssocMat(cliq)

Return boolean matrix of factor by variable (row by column) associations within clique, corresponds to order presented by getCliqFactorIds and getCliqAllVarIds.

IncrementalInference.getCliqChildMsgsUpFunction
getCliqChildMsgsUp(fg_, treel, cliq, ?)

Get and return upward belief messages as stored in child cliques from treel::AbstractBayesTree.

Notes

  • Use last parameter to select the return format.
  • Pull model #674

DevNotes

  • Consolidate two versions getCliqChildMsgsUp
IncrementalInference.getCliqDownMsgsAfterDownSolveFunction
getCliqDownMsgsAfterDownSolve(subdfg, cliq)

Return dictionary of down messages consisting of all frontal and separator beliefs of this clique.

Notes:

  • Fetches numerical results from subdfg as dictated in cliq.
  • return LikelihoodMessage
IncrementalInference.getCliqVarInitOrderUpFunction
getCliqVarInitOrderUp(cliq)

Return the most likely ordering for initializing factor (assuming up solve sequence).

Notes:

  • sorts id for increasing number of connected factors.
IncrementalInference.getCliqMatFunction
getCliqMat(cliq; showmsg)

Return boolean matrix of factor variable associations for a clique, optionally including (showmsg::Bool=true) the upward message singletons. Variable order corresponds to getCliqAllVarIds.

Missing docstring.

Missing docstring for getCliqOrderUpSolve. Check Documenter's build log for details.

IncrementalInference.getCliqParentMsgDownFunction
getCliqParentMsgDown(treel, cliq)

Get the latest down message from the parent node (without calculating anything).

Notes

  • Different from down initialization messages that do calculate new values – see prepCliqInitMsgsDown!.
  • Basically converts function getDwnMsgs from Dict{Symbol,BallTreeDensity} to Dict{Symbol,Vector{BallTreeDensity}}.
IncrementalInference.getCliqSiblingsFunction
getCliqSiblings(treel, cliq)
getCliqSiblings(treel, cliq, inclusive)

Return a vector of all siblings to a clique, which defaults to not inclusive the calling cliq.

IncrementalInference.getCliqSolveHistoryFunction
getCliqSolveHistory(cliq)

Return clique state machine history from tree if it was solved with recordcliqs.

Notes

  • Cliques are identified by front variable ::Symbol which are always unique across the cliques.
IncrementalInference.getCliqVarIdsPriorsFunction
getCliqVarIdsPriors(cliq)
getCliqVarIdsPriors(cliq, allids)
getCliqVarIdsPriors(cliq, allids, partials)

Get variable ids::Int with prior factors associated with this cliq.

Notes:

  • does not include any singleton messages from upward or downward message passing.
Missing docstring.

Missing docstring for getCliqVars. Check Documenter's build log for details.

IncrementalInference.getCliqVarSingletonsFunction
getCliqVarSingletons(cliq)
getCliqVarSingletons(cliq, allids)
getCliqVarSingletons(cliq, allids, partials)

Get cliq variable IDs with singleton factors – i.e. both in clique priors and up messages.

IncrementalInference.getLogPathFunction
getLogPath(opt)

Get the folder location where debug and solver information is recorded for a particular factor graph.

IncrementalInference.getTreeAllFrontalSymsFunction

Return one symbol (a frontal variable) from each clique in the ::BayesTree.

Notes

  • Frontal variables only occur once in a clique per tree, therefore is a unique identifier.

Related:

whichCliq, printCliqHistorySummary

Missing docstring.

Missing docstring for getTreeCliqSolveOrderUp. Check Documenter's build log for details.

IncrementalInference.getValFunction
getVal(v; solveKey)

Convenience function to get point values sampled i.i.d from marginal of lbl variable in the current factor graph.

getVal(vA)
getVal(vA, solveKey)

Fetch the variable marginal sample points without the KDE bandwidth parameter. Use getVertKDE to retrieve the full KDE object.

IncrementalInference.getVariableDimFunction
getVariableDim(vard)

Return the number of dimensions this variable vertex var contains.

Related

getVariableInferredDim, getVariableInferredDimFraction

IncrementalInference.getVariableInferredDimFunction
getVariableInferredDim(vard)
getVariableInferredDim(vard, saturate)

Return the number of projected dimensions into a variable during inference.

Notes

  • saturate clamps return value to no greater than variable dimension

Related

getVariableDim, getVariableInferredDimFraction, getVariableInferredDim, getVariableDim

Missing docstring.

Missing docstring for getVertKDE. Check Documenter's build log for details.

IncrementalInference.hasCliqFunction
hasCliq(bt, frt)

Return boolean on whether the frontal variable frt::Symbol exists somewhere in the ::BayesTree.

Missing docstring.

Missing docstring for hasOrphans. Check Documenter's build log for details.

IncrementalInference.initfgFunction
initfg()
initfg(dfg; sessionname, robotname, username, cloudgraph)

Initialize an empty in-memory DistributedFactorGraph ::DistributedFactorGraph object.

Missing docstring.

Missing docstring for isCliqReadyInferenceUp. Check Documenter's build log for details.

IncrementalInference.isTreeSolvedFunction
isTreeSolved(treel; skipinitialized)

Return true or false depending on whether the tree has been fully initialized/solved/marginalized.

Missing docstring.

Missing docstring for isVariable. Check Documenter's build log for details.

IncrementalInference.localProductFunction

Using factor graph object dfg, project belief through connected factors (convolution with conditional) to variable sym followed by a approximate functional product.

Return: product belief, full proposals, partial dimension proposals, labels

Missing docstring.

Missing docstring for ls. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lsf. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lsfPriors. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lsRear. Check Documenter's build log for details.

IncrementalInference.makeCsmMovieFunction
makeCsmMovie(fg, tree)
makeCsmMovie(fg, tree, cliqs; assignhist, show, filename, frames)

Convenience function to assign and make video of CSM state machine for cliqs.

Notes

  • Probably several teething issues still (lower priority).
  • Use assignhist if solver params async was true, or errored.

Related

csmAnimate, printCliqHistorySummary

Missing docstring.

Missing docstring for manualinit!. Check Documenter's build log for details.

IncrementalInference.packFromLocalPotentials!Function
packFromLocalPotentials!(dfg, dens, wfac, cliq, vsym, N)
packFromLocalPotentials!(dfg, dens, wfac, cliq, vsym, N, dbg)

Add all potentials associated with this clique and vertid to dens.

RoME.predictVariableByFactorFunction
predictVariableByFactor(dfg, targetsym, fct, prevars)

Method to compare current and predicted estimate on a variable, developed for testing a new factor before adding to the factor graph.

Notes

  • fct does not have to be in the factor graph – likely used to test beforehand.
  • function is useful for detecting if multihypo should be used.
  • approxConv will project the full belief estimate through some factor but must already be in factor graph.

Example

# fg already exists containing :x7 and :l3
pp = Pose2Point2BearingRange(Normal(0,0.1),Normal(10,1.0))
# possible new measurement from :x7 to :l3
curr, pred = predictVariableByFactor(fg, :l3, pp, [:x7; :l3])
# example of naive user defined test on fit score
fitscore = minkld(curr, pred)
# `multihypo` can be used as option between existing or new variables

Related

approxConv

IncrementalInference.prepBatchTree!Function
prepBatchTree!(dfg; variableOrder, variableConstraints, ordering, drawpdf, show, filepath, viewerapp, imgs, drawbayesnet, maxparallel)

Build Bayes/Junction/Elimination tree.

Notes

  • Default to free qr factorization for variable elimination order.
IncrementalInference.prepCliqInitMsgsDown!Function
prepCliqInitMsgsDown!(fgl, tree, prnt, cliq; logger, dbgnew)

Initialization downward message passing is different from regular inference since it is possible that none of the child cliq variables have been initialized.

Notes

  • init msgs from child upward passes are individually stored in this cliq.
  • fresh product of overlapping beliefs are calculated on each function call.
  • Assumed that prnt of siblings

Dev Notes

  • This should be the initialization cycle of parent, build up bit by bit...
IncrementalInference.printCliqHistorySummaryFunction
printCliqHistorySummary(fid, hist)

Print a short summary of state machine history for a clique solve.

Related:

getTreeAllFrontalSyms, getCliqSolveHistory, animateCliqStateMachines

Missing docstring.

Missing docstring for printgraphmax. Check Documenter's build log for details.

IncrementalInference.resetCliqSolve!Function

Reset the state of all variables in a clique to not initialized.

Notes

  • resets numberical values to zeros.

Dev Notes

  • TODO not all kde manifolds will initialize to zero.
IncrementalInference.resetTreeCliquesForUpSolve!Function
resetTreeCliquesForUpSolve!(treel)

Reset the Bayes (Junction) tree so that a new upsolve can be performed.

Notes

  • Will change previous clique status from :downsolved to :initialized only.
  • Sets the color of tree clique to lightgreen.
IncrementalInference.sandboxCliqResolveStepFunction
sandboxCliqResolveStep(tree, frontal, step)

Repeat a solver state machine step without changing history or primary values.

printCliqSummary, printCliqHistorySummary, getCliqSolveHistory, cliqHistFilterTransitions

Missing docstring.

Missing docstring for savejld. Check Documenter's build log for details.

IncrementalInference.setfreeze!Function
setfreeze!(dfg, sym)

Set variable(s) sym of factor graph to be marginalized – i.e. not be updated by inference computation.

IncrementalInference.setUpMsg!Function
setUpMsg!(csmc, cliqid, msgs)

Set the upward passing message for Bayes (Junction) tree clique cliql.

Dev Notes

  • TODO setUpMsg! should also set inferred dimension
IncrementalInference.setValKDE!Function
setValKDE!(vd, pts, bws)
setValKDE!(vd, pts, bws, setinit)
setValKDE!(vd, pts, bws, setinit, inferdim)

Set the point centers and bandwidth parameters of a variable node, also set isInitialized=true if setinit::Bool=true (as per default).

Notes

  • initialized is used for initial solve of factor graph where variables are not yet initialized.
  • inferdim is used to identify if the initialized was only partial.
Missing docstring.

Missing docstring for showVariable. Check Documenter's build log for details.

IncrementalInference.solveCliq!Function
solveCliq!(dfgl, tree, cliqid; recordcliq, async)

Perform inference over one clique in the Bayes tree according to opt::SolverParams.

Example

tree = wipeBuildNewTree!(fg)
smt, hist = solveCliq!(fg, tree, :x1 [,cliqHistories=hist] )

Related

solveTree!, wipeBuildNewTree!

IncrementalInference.solveCliqWithStateMachine!Function
solveCliqWithStateMachine!(dfg, tree, frontal; iters, downsolve, recordhistory, verbose, nextfnc, prevcsmc)

Standalone state machine solution for a single clique.

Related:

initInferTreeUp!

IncrementalInference.solveTree!Function
solveTree!(dfgl)
solveTree!(dfgl, oldtree; storeOld, delaycliqs, recordcliqs, skipcliqids, maxparallel, variableOrder, variableConstraints)

Perform inference over the Bayes tree according to opt::SolverParams.

Notes

  • Variety of options, including fixed-lag solving – see getSolverParams(fg) for details.
  • Latest result always stored in solvekey=:default.
  • Experimental storeOld::Bool=true will duplicate the current result as supersolve :default_k.
    • Based on solvable==1 assumption.

Example

# without [or with] compute recycling
tree, smt, hist = solveTree!(fg [,tree])

Related

solveCliq!, wipeBuildNewTree!

IncrementalInference.transferUpdateSubGraph!Function
transferUpdateSubGraph!(dest, src)
transferUpdateSubGraph!(dest, src, syms)
transferUpdateSubGraph!(dest, src, syms, logger; updatePPE, solveKey)

Transfer contents of src::AbstractDFG variables syms::Vector{Symbol} to dest::AbstractDFG. Notes

  • Reads, dest := src, for all syms
IncrementalInference.treeProductDwnFunction
treeProductDwn(fg, tree, cliq, sym; N, dbg)

Calculate a fresh–-single step–-approximation to the variable sym in clique cliq as though during the downward message passing. The full inference algorithm may repeatedly calculate successive apprimxations to the variable based on the structure of variables, factors, and incoming messages to this clique. Which clique to be used is defined by frontal variable symbols (cliq in this case) – see whichCliq(...) for more details. The sym symbol indicates which symbol of this clique to be calculated. Note that the sym variable must appear in the clique where cliq is a frontal variable.

IncrementalInference.treeProductUpFunction
treeProductUp(fg, tree, cliq, sym; N, dbg)

Calculate a fresh (single step) approximation to the variable sym in clique cliq as though during the upward message passing. The full inference algorithm may repeatedly calculate successive apprimxations to the variables based on the structure of the clique, factors, and incoming messages. Which clique to be used is defined by frontal variable symbols (cliq in this case) – see whichCliq(...) for more details. The sym symbol indicates which symbol of this clique to be calculated. Note that the sym variable must appear in the clique where cliq is a frontal variable.

IncrementalInference.updateFGBT!Function
updateFGBT!(fg, bt, cliqID, drt; dbg, fillcolor, logger)

Update cliq cliqID in Bayes (Juction) tree bt according to contents of ddt – intended use is to update main clique after a downward belief propagation computation has been completed per clique.

updateFGBT!(fg, cliq, urt; dbg, fillcolor, logger)

Update cliq cliqID in Bayes (Juction) tree bt according to contents of urt – intended use is to update main clique after a upward belief propagation computation has been completed per clique.

IncrementalInference.updateTreeCliquesAsMarginalizedFromVars!Function
updateTreeCliquesAsMarginalizedFromVars!(fgl, tree)

Run through entire tree and set cliques as marginalized if all clique variables are marginalized.

Notes:

  • TODO can be made fully parallel, consider converting for use with @threads for.
IncrementalInference.upGibbsCliqueDensityFunction
upGibbsCliqueDensity(inp)
upGibbsCliqueDensity(inp, N)
upGibbsCliqueDensity(inp, N, dbg)
upGibbsCliqueDensity(inp, N, dbg, iters)
upGibbsCliqueDensity(inp, N, dbg, iters, logger)

Perform computations required for the upward message passing during belief propation on the Bayes (Junction) tree. This function is usually called as via remote_call for multiprocess dispatch.

Example

inp = ExploreTreeType(fg,tree,cliq,parent,childmsgs)
urt = upGibbsCliqueDensity(inp)
  • fg factor graph,
  • tree Bayes tree,
  • cliq which cliq to perform the computation on,
  • parent the parent clique to where the upward message will be sent,
  • childmsgs is for any incoming messages from child cliques.
Missing docstring.

Missing docstring for upMsg. Check Documenter's build log for details.

IncrementalInference.wipeBuildNewTree!Function

Build a completely new Bayes (Junction) tree, after first wiping clean all temporary state in fg from a possibly pre-existing tree.

Related:

buildTreeFromOrdering!