Comments (8)
Your matrix is not positive semidefinite -- it could be because your graph is not connected. First check if this problem happens with all solvers or only with Cholmod.
from g2o.
I tried the CSparse-Solver, which shows the same behaviour. The used graph should also be connected, but maybe something went wrong during translation from the SLAM-Frontend. Is there a way to get some hints from the matrix in the generated debug.txt?
from g2o.
Can you please check that one of the nodes is fixed, i.e., vertex->setFixed(true) has been called for at least one vertex.
from g2o.
Gnah, I called vertex->fixed() instead of vertex->setFixed(true), a stupid mistake...
Now it completed 5 optimization runs without the error, so this seems to have solved my problem.
from g2o.
Hi
I am facing same problem.
I have checked that (a) Atleast one node is fixed. (b) Graph is connected.
But I am still getting Cholesky failure because matrix is not positive semo definite.
What could be other problem causes?
from g2o.
Be sure that all information matrices are PSD.
You may consider OptimizableGraph::verifyInformationMatrices() for doing
that.
On Tue, Aug 12, 2014 at 11:11 AM, nitin5 [email protected] wrote:
Hi
I am facing same problem.
I have checked that (a) Atleast one node is fixed. (b) Graph is connected.
But I am still getting Cholesky failure because matrix is not positive
semo definite.
What could be other problem causes?—
Reply to this email directly or view it on GitHub
#35 (comment).
from g2o.
Hi Rainer,
I have checked that all edges' information matrix have PSD property. I have also verified it using OptimizableGraph::verifyInformationMatrices() . I am not able to solve problem till now.
I have debugged it deeper. I will share the source of SIGSEGV . It might be of help in localizing the problem:
In SparseOptimizerIncremental::optimize(), line _underlyingSolver->buildSystem(), control passes to block_solver.hpp::buildSystem(). At line number 532, e->constructQuadraticForm() is called.
From here control passes to Eigen liibrary.
I do not have exposure to Eigen library. In this library, Segmentation fault is reported for functor scalar_sum_op. It is in file Eigen::functors.h line number 26.
I have saved the graph using SparseOptimizerIncremental::save(filename). After removing ONLINE prefix from vertex and edges, I am able to optimise this graph in g2o_viewer, without any error.
Is it okay if i share dataset which i am sunning which others can try to check whether the problem is in my code?
rgds
nitin
from g2o.
For anybody encountering this later, I had a similar error that was due to setting the wrong node to fixed, such that my graph still had gauge freedom.
You can test and fix this with something like:
bool has_gauge_freedom = optimizer->gaugeFreedom();
if (has_gauge_freedom) {
g2o::OptimizableGraph::Vertex* gauge_node = optimizer->findGauge();
gauge_node->setFixed(true);
}
from g2o.
Related Issues (20)
- g2o::make_unique not recognized HOT 2
- void g2o::HyperGraph::Edge::setVertex(size_t, g2o::HyperGraph::Vertex*): Assertion `i < _vertices.size() && "index out of bounds"' failed. HOT 2
- Linker error: multiple definition of `typeinfo name for g2o::BaseVertex<7, g2o::Sim3>'; HOT 3
- Tests fail on i386 HOT 4
- undefined reference to `vtable for g2o::VertexPointXYZ' HOT 2
- AttributeError: module 'g2o' has no attribute 'VertexSBAPointXYZ' HOT 3
- RuntimeError: logger with name 'g2o' already exists HOT 2
- Optimizer does not converge on Raspberry Pi 4 HOT 3
- When I build g2o, I meet error with spdlog HOT 2
- Optimizing Camera Extrinsics with Bundle Adjustment
- g2o issues with ROS2 humble . HOT 4
- LGPL3+ for csparse_extension: still up to date? HOT 1
- Cannot link g2o to ROS project, after building successfully from source and installing to default system paths HOT 2
- How to clear g2o optimizer after optimization to avoid memory leak HOT 3
- Inconsistent results for pnp solver HOT 1
- How can I delete or deactivate an edge during the optimization HOT 3
- How can I print a variable in the ComputeError() in the terminal? HOT 3
- Looks like bug in optimization_algorithm_levenberg.cpp HOT 1
- [error] [optimizable_graph.cpp:483] virtual bool HOT 1
- opt.edges().empty() Function g2o::HyperGraph::edges has no address, possibly due to compiler optimizations. 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 g2o.