Open
Description
TODOs
- Improve test coverage in IIF, https://codecov.io/gh/JuliaRobotics/IncrementalInference.jl/src/master/src/TetherUtils.jl
- Spruce up related docs in Caesar, https://juliarobotics.org/Caesar.jl/latest/examples/deadreckontether/
RoME already has Pose2 test
https://github.com/JuliaRobotics/RoME.jl/blob/master/test/testDeadReckoningTether.jl
Notes
important to establish convention of:
fg = initfg()
addVariable!(fg, :x0, Pose2, tags=[:POSE;], solvable=0) # or Pose3
# ... add factors etc
# set that graph fragment solvable=1
addVariable!(fg, :drt_0, Pose2, tags=[:POSE; :DRT], solvable=0)
drec0 = MutablePose2Pose2Gaussian(...) # or InertialPose3
addFactor!(fg, [:x0; :drt_0], drec0, solvable=0, graphinit=false)
# now find high frequency solution with:
accumulateDiscreteLocalFrame!
accumulateFactorMeans
# when its time to trigger a new pose, just drop a new variable with convenience function
duplicateToStandardFactorVariable
EDIT, there is an example video too: https://juliarobotics.org/Caesar.jl/latest/examples/examples/#Towards-Real-Time-Underwater-Acoustic-Navigation