Commit Graph

2971 Commits (ba9e73785ae8bec80cbe37b845ef27e8c4835bdb)

Author SHA1 Message Date
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 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 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
Luca 1548c8e34e added comments and fixed warning 2014-07-25 14:13:27 -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
Yong-Dian Jian 1a9ab972a9 make verbosityTranslator public static functions 2014-06-29 13:08:17 -04:00
dellaert b698e30acb Small speedup in project (result of Visual SLAM slides :-)) 2014-06-24 23:30:39 -04:00
Richard Roberts 946cc5338a Merge branch 'develop' into feature/timing_scripts_build
Conflicts:
	gtsam_unstable/CMakeLists.txt
2014-06-21 08:55:49 -07:00
balderdash-devil 921a18ae27 fixed windows build issues with chris 2014-06-20 18:43:08 -04:00
balderdash-devil f5b3c75133 Fixes for windows
Seems like a default constructor for KeyInfoEntry() is needed
2014-06-20 14:28:30 -04:00
cbeall3 a34dff1397 Merge remote-tracking branch 'origin/feature/new_imu_factors' into develop 2014-06-20 13:32:34 -04:00
cbeall3 a7cd94c9dc Fix struct vs. class mismatch warning 2014-06-20 12:07:28 -04:00
cbeall3 de63d1981c Windows: Fix for discarding const qualifiers 2014-06-20 11:57:48 -04:00
dellaert 8ce541f05f Separated out DK component 2014-06-19 12:19:02 -04:00
dellaert 12897a2c29 A small saving 2014-06-19 11:58:08 -04:00
dellaert 0e64c9495e Two static functions save on copy/paste 2014-06-19 09:46:55 -04:00
dellaert 6ecc32a311 Fixed comments 2014-06-18 14:38:47 -04:00
dellaert ea0dbf05ef Name change from k3,k4 to p1,p2 as in OpenCV 2014-06-18 14:36:09 -04:00
Yong-Dian Jian 0a7fd40b6c fix matlab toolbox compilation error 2014-06-17 13:47:43 -04:00
Yong-Dian Jian 78fcfdc5ef Merge branch 'develop' of git@bitbucket.org:gtborg/gtsam.git into develop 2014-06-16 00:46:36 -04:00
Yong-Dian Jian 38dc807f32 Merge remote-tracking branch 'origin/feature/pcg' into develop
Conflicts:
	gtsam/nonlinear/NonlinearOptimizer.cpp
2014-06-16 00:41:34 -04:00
Yong-Dian Jian 17426d0076 subgraph preconditioner revised 2014-06-15 23:14:06 -04:00
cbeall3 ed507cf4f6 add tolerances on unit expect to make quaternion mode pass 2014-06-10 16:10:47 -04:00
Yong-Dian Jian 67398f0f13 add BlockJacobiPreconditioner class and unit test 2014-06-08 16:15:00 -04:00
Yong-Dian Jian e8d3809917 add new generic pcgsolver and preconditioner classes
add a unit test for the PCGSolver class
2014-06-08 00:34:23 -04:00
Richard Roberts fe235b1209 Building timing scripts using new timing script support in GtsamTesting.cmake. Fixed compile errors in timing scripts but disabled a couple. 2014-06-07 19:02:11 -07:00
Frank Dellaert 996517916c I commented out thread stuff as did not compile on my mac. 2014-06-07 16:29:21 -04:00
Yong-Dian Jian c844ab19e3 move blas_kernel_ up 2014-06-04 23:23:17 -04:00
dellaert 21490eadd6 Comments w Yong-Dian 2014-06-04 14:57:22 -04:00
Yong-Dian Jian a0c77dcc1c remove unused variables in iterative solvers and rename accordingly. 2014-06-03 23:52:35 -04:00
cbeall3 e60f21a22f Missed before: Frank's typedef fix actually needs another include on Linux 2014-06-01 16:02:24 -04:00
dellaert e748088c06 Merge branch 'origin/fix/wrapper' 2014-06-01 14:40:55 -04:00
dellaert ba67b1ce12 Possible fix for Clang 5.1 issue, for Chris to try on other platforms 2014-06-01 14:06:09 -04:00
Chris Beall e66cd56bf5 Windows fixes. Made global test variables static 2014-06-01 13:49:19 -04:00
cbeall3 07772b011a fix formatting 2014-06-01 13:04:47 -04:00
Chris Beall c56b56a178 bizarre fix for issue 101 2014-06-01 13:00:11 -04:00
dellaert c6de457a4b Moved LAGO to slam 2014-06-01 12:25:23 -04:00
dellaert 7119d0c3c2 Sanitized G2o I/O interface to conform to what we had before. No sense in having many different styles, and this works better for MATLAB (now wrapped, as well).
BAL reading/writing should be similarly cleaned up.
2014-06-01 11:46:23 -04:00
Chris Beall 470527ff99 fix warnings on Windows. No need to create variable in catch statement if you're not going to use it. It generates unreferenced variable warnings. 2014-06-01 11:30:04 -04:00
Chris Beall 351e9ace72 add GTSAM_EXPORT 2014-06-01 11:28:20 -04:00
dellaert a95cf7c71b Load VERTEX_SE2 2014-05-31 23:15:11 -04:00
dellaert 3e532a5160 Fourth case: sensible order, but covariance matrix 2014-05-31 22:42:14 -04:00
dellaert 9ea155dee2 Get default smart flag 2014-05-31 22:11:15 -04:00
dellaert 8f493d6ee5 Formatting only 2014-05-31 22:10:51 -04:00
dellaert f32968cc03 Added extra test case 2014-05-31 21:57:36 -04:00
dellaert 0f2d983190 More principled handling of noise parameters 2014-05-31 21:57:29 -04:00
dellaert 89e6e27301 Additional unit test 2014-05-31 20:29:00 -04:00
dellaert 10d19c6832 resurrected test 2014-05-31 19:15:43 -04:00
dellaert ac3d1ea8b6 Remove timeLago from tests that are run.... 2014-05-31 19:02:41 -04:00
dellaert 0e1b52150d Switch from optional to (possibly empty) shared_ptr 2014-05-31 19:01:54 -04:00
dellaert 204ddbee5e Formatting 2014-05-31 18:08:02 -04:00
dellaert bc69c0a94e Finish timeLago 2014-05-31 17:15:50 -04:00
dellaert 76297ea2cc Adding noise does not help much 2014-05-31 17:15:29 -04:00
dellaert 16c28b2e9c Formatting only 2014-05-31 16:31:48 -04:00
dellaert 42edec1066 Properly read w10000 2014-05-31 16:24:50 -04:00
dellaert 7e6a333b1a Constrain orientation 2014-05-31 16:24:40 -04:00
dellaert 5aa9f42875 Better exception 2014-05-31 16:24:25 -04:00
balderdash-devil 19b7734a97 Removed unnecessary file 2014-05-31 16:21:55 -04:00
balderdash-devil cd1b503985 comments explaining the funtion 2014-05-31 16:13:29 -04:00
balderdash-devil 34962d4669 removed debug statement 2014-05-31 16:03:25 -04:00
balderdash-devil afcddf823a unit test now works 2014-05-31 15:53:41 -04:00
dellaert a74d82ac71 Convenience add functions... 2014-05-31 15:49:21 -04:00
cbeall3 87f5818776 Move smart projection factor 2014-05-31 15:33:19 -04:00
dellaert 385dfd8ad6 use non underscore functions 2014-05-31 15:18:45 -04:00
dellaert 3425a8a37c use namespace std 2014-05-31 15:18:21 -04:00
dellaert 8fe24183eb Lago timing 2014-05-31 14:37:29 -04:00
dellaert 8d54460d2c Made three helper functions static (not directly called in testLago) 2014-05-31 13:44:23 -04:00
dellaert 970d49f60b Standard formatting and some BOOST_FOREACH uses 2014-05-31 13:37:10 -04:00
dellaert e5344d3d92 Doxygen documentation 2014-05-31 13:26:13 -04:00
dellaert dfb620b5de Header discipline 2014-05-31 13:21:34 -04:00
dellaert 9b8af1bf6e Use namespace explicitly 2014-05-31 13:15:51 -04:00
dellaert 1d43a1f206 removed redundant "Lago" from several function names 2014-05-31 13:13:14 -04:00
dellaert fe33c80b5f Introduced namespace 2014-05-31 13:04:15 -04:00
dellaert acdc3304e0 Cleaned up headers 2014-05-31 13:00:08 -04:00
dellaert 732409faf3 Changed filenames 2014-05-31 12:51:37 -04:00
cbeall3 f0257ee619 renamed testSphere2 ->testUnit3 2014-05-30 19:24:48 -04:00
cbeall3 7f32fe3ea0 fix warning 2014-05-30 16:30:46 -04:00
dellaert e48fa756c0 Fixed bug in the n==0 case 2014-05-28 22:31:20 -04:00
dellaert 0c95959510 Changed to size_t, still fails some assertion 2014-05-28 22:31:20 -04:00
Chris Beall 432fce817e Fixes for Windows. Everything compiles and passes again. 2014-05-28 21:29:23 -04:00
Luca 515b612ca0 Merge branch 'develop'
Conflicts:
	.cproject
2014-05-28 18:59:04 -04:00
cbeall3 14d9855c53 Fix memory error uncovered by valgrind 2014-05-28 18:57:00 -04:00
Luca 386ed2e510 Merge branch 'develop'
Conflicts:
	gtsam_unstable/slam/SmartFactorBase.h
2014-05-28 18:11:39 -04:00
Luca 48ec78bb40 cleaned up code and added comments 2014-05-28 13:39:22 -04:00
Luca a805034273 cleaning code 2014-05-28 13:22:09 -04:00
Luca 461047b242 first working version 2014-05-28 13:14:49 -04:00
dellaert 8dba25f532 Rationalized some cholesky-related code as I was looking at it. 2014-05-28 10:36:26 -04:00
dellaert e730da95c4 Smarter noise models: Diagonal::Sigmas is now actually smart, and Gaussian::SqrtInformation now has a smart flag (default is true) 2014-05-28 09:17:31 -04:00
Luca cf7dd88916 minor comment 2014-05-28 02:38:01 -04:00
Luca de64d29e6a working unit test for 2nd stage: M3500 is not working yet 2014-05-28 02:09:38 -04:00
Luca 7aa0678720 added comment 2014-05-28 00:14:08 -04:00
Luca b5de397747 fixed typos 2014-05-28 00:13:59 -04:00
Luca 61495b83d8 added extra unit tests to LAGO 2014-05-27 22:38:26 -04:00
Luca 8a1c6fe77f added comment 2014-05-27 18:23:57 -04:00
dellaert f4cad73b73 Fixed a problem with initialization (exposed by victoria_park.txt) and cleaned up a bit. Also fixed variances -> std deviation. 2014-05-26 23:29:14 -04:00
Natesh Srinivasan b088945641 In response to Chris's comment 2014-05-22 13:33:02 -04:00
Natesh Srinivasan 814b01a995 Added a fix to install unsupported Eigen 2014-05-22 12:09:31 -04:00
Luca bf8acfda9a single GN iteration now 2014-05-21 14:28:39 -04:00
Luca 054b0ec03a deleted useless cout 2014-05-20 18:01:26 -04:00
Luca 16571a9a95 added many unit test for g2o read/write 2014-05-20 17:59:49 -04:00
Luca a668b2a8e4 Merge branch 'outlierRejectionTest'
Conflicts:
	.cproject
2014-05-20 16:58:57 -04:00
Luca 78fe603933 re-established previous function 2014-05-20 16:56:01 -04:00
Luca 2430b0bbf0 added functions to read/write g2o files 2014-05-20 16:53:37 -04:00
Luca 0453310726 adding functions to read/write g2o files 2014-05-20 16:35:45 -04:00
Luca 1b5f9e7f02 split .h and .cpp for LagoInitializer 2014-05-20 15:49:58 -04:00
Luca 569f7bb292 created class LagoInitialized with working unit test 2014-05-20 15:38:20 -04:00
Luca f6ad0a1920 fixes with Frank 2014-05-16 19:22:35 -04:00
Luca 0fad251355 added example reading g2o file 2014-05-16 10:03:18 -04:00
Luca a93299f2dc simplified code findMinimumSpanningTree 2014-05-15 13:49:57 -04:00
Chris Beall d0a2db6646 Fix for infinite loop on 32-bit Linux. 2014-05-14 19:14:38 -04:00
Luca b8300c3b0a Improved function findMinimumSpanningTree to cope with general graphs (and added comments) 2014-05-14 17:39:59 -04:00
Luca 0d957084c0 fixed unit test on findMinimumSpanningTree 2014-05-14 17:21:32 -04:00
Chris Beall e1c0ad8335 Changed 1e-20 to 1e-16. 1e-20 was cutting it too close on 32-bit system, resulting in divide by zero later 2014-05-14 14:11:23 -04:00
Luca 6f58269b0b adding unit test for LAGO initializer 2014-05-14 11:57:46 -04:00
thduynguyen 4730527481 testSerializationLinear passes. Fill in the lower triangle part of matrix_ so that boost::serialization won't throw the input_stream exception due to uninitialized data 2014-05-08 11:49:21 -04:00
djensen3 0f03cd736c added comments 2014-05-08 11:08:43 -04:00
Richard Roberts d725dd4816 Renamed unit tests that still had 'Unordered' in the name 2014-05-07 18:19:11 -07:00
cbeall3 fec73365d7 Warning for Clang 5.0+ 2014-05-07 10:42:15 -04:00
Chris Beall b108e1c94f Upgrade to Eigen 3.2.1 - minor fixes, Richard's patches carried forward 2014-05-07 00:04:22 -04:00
cbeall3 842554a230 Unit test fixes for quaternion mode and also rotation matrix + full expmap mode. 2014-05-06 20:03:45 -04:00
dellaert 2649b0fd7a print variants for KeyList, KeyVector 2014-05-06 13:21:49 -04:00
cbeall3 9395bb0913 typos 2014-05-06 12:31:03 -04:00