Hi GTSAM community,
I’m building a visual SLAM backend in GTSAM with:
Wheel Odometry factors between consecutive frames (Similarity3), using tight sigmas
rotation σ ≈ 0.01
translation σ ≈ 0.01
scale σ ≈ 0.01
Visual factors between the current frame and a (possibly distant) keyframe, using looser sigmas
rotation σ ≈ 0.2
translation σ ≈ 0.3
scale σ ≈ 0.1
Problem
Even when visual tracking quality is poor, the visual factors sometimes pull the trajectory more than the high-confidence odometry (because we use the same noise sigma for visual factors regardless of tracking quality or reprojection error). In some datasets, the optimiser appears to place too much weight on visual constraints, depending on how the noise is set.
My expectation
Odometry should dominate locally (short-term motion).
Visual constraints should strongly influence the solution, mainly for true loop closures.
Poor-quality visual matches should not override strong odometry.
Main Questions
What are the recommended patterns for adapting visual factor noise based on measurement quality?
For example, scaling sigmas based on:
number of inliers,
average reprojection error,
baseline/parallax.
In practice, do people:
Manually scale diagonal sigmas (e.g., proportional to 1/√inliers or reprojection error)?
Use any more principled approach?
If anyone has implemented adaptive visual factor weighting in an open-source GTSAM project, I’d really appreciate pointers or high-level guidance.
Thanks a lot!
|
You don't often get email from brett.d...@gmail.com.
Learn why this is important
|