Commit Graph

6107 Commits (6d697f2c92060ae3e4a0e91a49bc595fe054569d)

Author SHA1 Message Date
thduynguyen 6d697f2c92 heuristic in EliminationPreferCholesky to work around the Indeterminant exception while solving linear constrained systems.
Instead of turning Hessian factors into Jacobian factors -- so that they can be eliminated with constrained Jacobian factors using the special QR in Constrained's noise model -- we combine all Hessian factors, eliminate the variable first to have a conditional and a new factor 1, then combine the constrained Jacobians with this conditional (also a Jacobian) to eliminate again, producing the final conditional, and a new factor 2. The two new factors are then combined into a new Hessian factor to be returned.
2014-09-11 14:51:35 -04:00
thduynguyen f8126dbf78 fix .cproject after rebasing 2014-08-06 22:41:35 -04:00
thduynguyen af54d39b13 ignore build folder 2014-08-06 11:10:36 -04:00
thduynguyen 779a21c2c4 A small example showing that Hessian matrices in Lie groups might not be symmetric 2014-08-06 11:10:36 -04:00
thduynguyen 3778e3c928 constructors for JacobianFactor up to 6-ary for testing in matlab 2014-08-06 11:10:36 -04:00
thduynguyen ecb896ef03 move Adjoint to cpp and enable EXP_MAP 2014-08-06 11:10:36 -04:00
thduynguyen c6d541741b more comments and debug info 2014-08-06 11:10:36 -04:00
thduynguyen 47ed9f3687 matlab code to reproduce test results 2014-08-06 11:10:36 -04:00
thduynguyen 4037d1ec1a wrap QPSolver 2014-08-06 11:10:35 -04:00
thduynguyen cc2ba1792d add detailed comments for the new EliminatePreferCholesky 2014-08-06 11:10:35 -04:00
thduynguyen a7c0d10862 disable two warning options in METIS which are not understood by my clang compiler. 2014-08-06 11:10:35 -04:00
thduynguyen 2895b0515c Support non positive definite Hessian factors while doing EliminatePreferCholesky with some constrained factors.
Currently, when eliminating a constrained variable, EliminatePreferCholesky converts every other factors to JacobianFactor before doing the special QR factorization for constrained variables. Unfortunately, after a constrained nonlinear graph is linearized, new hessian factors from constraints, multiplied with the dual variable  (-lambda*\hessian{c} terms in the Lagrangian objective function), might become negative definite, thus cannot be converted to JacobianFactors.

Following EliminateCholesky, this version of EliminatePreferCholesky for constrained var gathers all unconstrained factors into a big joint HessianFactor before converting it into a JacobianFactor to be eliminiated by QR together with the other constrained factors.

Of course, this might not solve the non-positive-definite problem entirely, because (1) the original hessian factors might be non-positive definite and (2) large strange value of lambdas might cause the joint factor non-positive definite [is this true?]. But at least, this will help in typical cases.
2014-08-06 11:09:25 -04:00
thduynguyen 2fd3cf1bd0 unittest for QPSolver without initial point 2014-08-06 11:08:43 -04:00
thduynguyen 882a1fe22f first unittest finding QP's feasible initial point works 2014-08-06 11:08:43 -04:00
thduynguyen c91ab4a276 fix bugs in variable's columnNo index when passing to lpsolve. Obviously lpsolve modifies the raw buffer we pass to it! 2014-08-06 11:08:43 -04:00
thduynguyen c637a75ebf add lp_solve and the gtsam LPSolver interface 2014-08-06 11:08:43 -04:00
thduynguyen e16efaab2c QPSolver now returns dual values after solving. This can be used as a guessed dual value for the nonlinear level 2014-08-06 10:55:27 -04:00
thduynguyen cb7153a9d2 move detailed comments to the cpp file. An important comment about an Eigen's exception when converting a jacobian to a hessian factor, probably due to a bug in clang compiler. 2014-08-06 10:55:27 -04:00
thduynguyen fc63f540db remove support for embedded lagrangian part to constraint's jacobian matrices. It's very hacky! 2014-08-06 10:55:27 -04:00
thduynguyen db93f4137c dexp and dexpInv for Point2 and Rot2 2014-08-06 10:55:26 -04:00
thduynguyen ba870a1998 create VectorValues with all 1.0 2014-08-06 10:55:26 -04:00
thduynguyen b56a3426ad important bug fix in building dual graph when finding the variable dimension from its first factor in the factor indices. 2014-08-06 10:55:25 -04:00
thduynguyen b8a2223572 make Jacobian/Hessian cast functions static to use them in other places. TODO: move them to GaussianFactor 2014-08-06 10:55:25 -04:00
thduynguyen 416111b0ef size() should return size_t not Key 2014-08-06 10:55:24 -04:00
thduynguyen 4681c05063 build dualgraph supports least-squares multipliers 2014-08-06 10:55:24 -04:00
thduynguyen 075817b31a add build dir to GTSAM_INCLUDE_DIR so projects built with gtsam build tree can find <gtsam/config.h> 2014-08-06 10:55:24 -04:00
thduynguyen bb7522c947 Fix gtsam's old segfault bug in JacobianFactor::isConstrained: return false if it has no noisemodel. Test Nocedal06book, example 16.4, pg 475 passed. 2014-08-06 10:55:23 -04:00
thduynguyen 37079417d1 Test with Matlab's QP example 2014-08-06 10:55:23 -04:00
thduynguyen befe397f7a disable printing 2014-08-06 10:55:22 -04:00
thduynguyen f88c928ca0 refactor QPSolver into its own class 2014-08-06 10:55:22 -04:00
thduynguyen c0e201f06c Detailed comments for choosing the step size 2014-08-06 10:55:22 -04:00
thduynguyen f00d673646 Detailed comments about the lambda<0 condition for good ineq <=0 constraints, wrt the Lagrangian L = f(x) - lambda*c(x) 2014-08-06 10:55:21 -04:00
thduynguyen 9fd78faf4b first ineq QP test passed! 2014-08-06 10:55:21 -04:00
thduynguyen cb02a95f94 fix bug in weightedPseudoInverse dealing with negative weights of ineq constraints 2014-08-06 10:55:21 -04:00
thduynguyen cb37b025e9 small improvement on negative weights 2014-08-06 10:55:20 -04:00
thduynguyen ba1273ae6b fix bug in NoiseModel signs for ineq weights. Unittest dual graph 2014-08-06 10:55:20 -04:00
thduynguyen a31e9568a1 QPSolver in progress. Finish building dual graph, but not tested.
Use mixed constrained noise with sigma < 0 to denote inequalities.
Working set implements the active set method, turning inactive inequalities
to active one as equality constraints by setting their corresponding sigmas to 0
and vice versa. Dual graph now has to deal with mixed sigmas.
2014-08-06 10:55:20 -04:00
Vadim Indelman bcab483574 Changed norm to determinant. 2014-08-01 21:51:52 +03:00
Vadim Indelman 89410fe1ee added updateNoiseModels_givenCovs to BetweenFactorEM. 2014-08-01 21:11:19 +03:00
dellaert fc58bf36fb changed test names 2014-07-28 11:57:42 +02:00
Luca 1548c8e34e added comments and fixed warning 2014-07-25 14:13:27 -04:00
Jing Dong b5b1bbfba0 improve TransBtwRobotEM factor's preformance by removing redundant unwhitenedError calc 2014-07-18 17:11:21 -04:00
Jing Dong e06c2cfacc change few function parameters to const reference to improve preformance of TransformBtwRobot factors 2014-07-18 15:59:14 -04:00
cbeall3 f4dc6a3a95 Fix metis linking in tests 2014-07-16 14:45:12 -04:00
cbeall3 5db01f98eb Change mex_command to uppercase to match INSTALL documentation. Reported by GTSAM user. 2014-07-08 09:01:30 -04:00
Nathan Michael a84ba5c677 Moving ValueCloneAllocator to Values.h to address forward declared template argument issue. 2014-07-07 12:18:15 -04:00
dellaert c8c25b16ab Added epipoles 2014-07-01 11:21:58 -04:00
dellaert d6ffef89e6 Return pointer to cached basis 2014-07-01 11:21:43 -04:00
dellaert 87ba9384e0 warning in release 2014-07-01 11:21:23 -04:00
Vadim Indelman 991906181b Updating EM factor (to accout for uncertainty in states) 2014-06-30 20:43:25 +03:00