Comments (8)
Hi @tipf, thanks for posting. We were all out over the weekend, apologies for slow reply. We'll work through this to see what's going on and post back here.
from caesar.jl.
Hi Tim, think we are seeing some of the same problems in nonparametric solve. We also noticed the parametric solve slowed down significantly with recent upstream changes.
TL;DR, we've decided to resolve two bigger specific issues (below). Would you mind if we use some of your code and comments above to build into unit testing for the various libraries as we fix this issue?
Okay so the road we're going to follow to fix this issue (told backwards): the main blocker at the moment is a consolidated code update being worked on at Manifolds.jl:
There has been a lot of discussion there, and we're close to clearing the many questions. Basically the effort on those threads are to make sure Caesar.jl and Manifolds.jl are 100% aligned on the math before we work the main fixes.
I think the course is mostly set with Manifolds.jl, the action right now is sorting out the precise API/syntax on the new trait based Manifolds.jl:
Our plan then is to follow up with Caesar.jl fixes fairly quickly (few weeks of work). One known issue specifically seems to be the cause of sub-optimum results you are seeing too. This might also have some links work Leo was doing. There have been several smaller fixes since, but we're confident this is the main issue to fix in the short term:
We're actually going to do a code-quality / future-roadmap fix first which will allow fully Julian consolidation between parametric and nonparametric solutions:
Apologies for the delay in closing out this issue, but think this will result in the overall best solution vs. effort. Once IIF#1010
is fixed, I'd expect the quality of results on this issue to be much better.
from caesar.jl.
Thanks for the detailed response Dehann and sorry for my late reply, I was out of the office for two weeks.
I already had the vague feeling that the 1010 issue might be the root cause for the suboptimal behavior -- fingers crossed that the fixes/refactoring of the manifold handling will resolve it.
It's still hard for me to distinguish between fundamental limitations of approximate inference and issues of the specific implementation for such "weakly-determined" cases.
Please feel free to use any part of the code to create the required tests.
Do you need the ground truth for that example? I cloud provide it as well.
from caesar.jl.
Ground truth would be great to have for testing please!
Manifolds.jl v0.8.11 just landed, so think the API path is set.
from caesar.jl.
It contains only the ego poses but for a test this might be enough: W100_GT.txt
The format is quite simple, each line is a pose and can be treated as a row with the following elements:
1 - "pose2" [string]
2 - time stamp [s]
3 - position x-axis [m]
4 - position x-axis [m]
5 - orientation [rad]
6-14 - covariance matrix 3x3 in row-major order, filled with zeros
from caesar.jl.
Hi Tim, I used your dataset to test the batch parametric solver IIF.solveGraphParametric!
and as a sanity check if it's correct. Here are the results:
It's sensitive to initialization, but I used mm-ISAM to initialize and it worked well enough.
Unfortunately, it's still under development and still slow, it took about 10 minutes to converge.
I'll have a look at the non-parametric solution also, but I also suspect the path set out by Dehann should fix this issue. In the meantime differing the initialization of the landmarks might help with the batch solution addFactor!(fg, [SymbolPose, SymbolLM], Pose2Point2Range(RangeGauss), graphinit=false)
After initialization, it looks like this (I haven't solved it yet):
The landmarks look to be initialized wrong and I'll investigate further.
from caesar.jl.
In the above case, initalization (and possibly solving) can be improved by tuning 2 solver parameters.
fg = initfg()
fg.solverParams.inflateCycles = ... #default 3
fg.solverParams.inflation = ... #default 5.0
Sorry I can't be of more help currently, but we will defenetely look more into this example in the future as its quite a nice case.
I suspect the incremental solution can only be improved by fixing IIF#1010
from caesar.jl.
Thanks for the pointer to the inflation parameter Johannes, I will give it a try in combination with graphinit=false
.
The result of the parametric solver looks promising, but 10 minutes is quite a lot. For comparison, ceres needs 45 milliseconds for the batch problem and about 350 milliseconds for an incremental solution.
from caesar.jl.
Related Issues (20)
- tag v0.16.2 HOT 1
- tag v0.16.3 HOT 1
- Upgrade to Manifolds.jl v0.8 HOT 12
- Add docs for `initVariable!`
- Get basic CJL.ScatterAlignPose3 functional on standardized code HOT 9
- Tagv0.13.1 HOT 1
- tag v0.13.2 HOT 1
- tag v0.13.3 HOT 3
- tag v0.13.4 HOT 1
- update ROS1 docs on bag reader and writer not needing roscore, but live traffic does HOT 2
- tag v0.13.5 HOT 1
- PointClouds, import/export PCD file format HOT 1
- Performance regression on Unit test for AprilTags preimage calibration HOT 1
- tag v0.14.0 HOT 1
- saveLAS, loadLAS gives point cloud an offset
- tag v0.15.0 HOT 1
- Reporting a vulnerability HOT 1
- tag v0.16.0 HOT 1
- tag v0.16.1 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from caesar.jl.