Skip to content

Initial Development Roadmap

dehann edited this page May 5, 2020 · 12 revisions

DFG Dev Roadmap

  • Satisfy IIF solver requirements, v0.7.x/v0.8.x
    • Part 1: Solving graph efficiently local or cloud with one shared interface
      • In-memory implementation of common interface using skeleton variables and factors
        • Implementation
        • Standardized test for an implementation of the interface
        • Documentation of methods and usage
      • Visualization extensions for viewing factor graphs (copy from IIF)
      • Definition of a common DFGVariable and DFGFactor for all our applications
        • What is first-class citizen of DFGVariable? (e.g. label, tags, keyed estimates, timestamp)
        • What is used by solver and should optionally be pulled? (e.g. VariableNodeData)
        • What is used by users but is only pulled on demand? (e.g. smalldata, bigdata)
      • Updating IIF to use shared interface
      • Validation of changes
    • Part 2: Extension of interface for big data and small data
    • Part 3: Arena example
    • More general separation of concerns
  • Also remember mirroring.

Fundamental Data elements in DFG objects

https://github.com/JuliaRobotics/Caesar.jl/wiki/Data-Design-for-Caesar-RoME-IIF

Keep in mind payload definitions

Graff or ZMQ:

DB Version

# To enable the Neo4j driver, import Neo4j.jl first
using Neo4j
using DistributedFactorGraphs
# Neo4j-based DFG
dfg = CloudGraphsDFG{NoSolverParams}("localhost", 7474, "neo4j", "test",
      "testUser", "testRobot", "testSession",
      nothing,
      nothing,
      IncrementalInference.decodePackedType)
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.

Please see the documentation for more information on interacting with the factor graph.

Setting up a Quick Neo4j Database

The simplest way to set up a test database is with Docker. The Neo4j driver currenly doesn't work with Neo4j 4.0, version 3.5 can be used as in this example.

To pull the Neo4j image:

docker pull neo4j:3.5

To run the image with user neo4j and password test:

docker run -d --publish=7474:7474 --publish=7687:7687 --env NEO4J_AUTH=neo4j/test neo4j:3.5

Note If you just installed docker and having permission issues, please see this ask Ubuntu forum.