Commit Graph

1257 Commits (182dfbdb4473cef7a30de2cf76eeeb920a8ea809)

Author SHA1 Message Date
Varun Agrawal 9acf8d4ebc ISAM2 helper methods and wrapper to evaluate nonlinear error 2020-09-10 19:59:18 -04:00
Varun Agrawal 683e8f1f92 check for null pointer in general 2020-08-31 17:16:32 -04:00
Frank dellaert 84e0bc5351 Added more support for Pose2 data 2020-08-20 23:25:28 -04:00
Frank Dellaert 84afc94458
Feature/shonan averaging (#473)
Shonan Rotation Averaging.

199 commit messages below, many are obsolete as design has changed quite a bit over time, especially from the earlier period where I thought we only needed SO(4).

* prototyping weighted sampler

* Moved WeightedSampler into its own header

* Random now uses std header <random>.

* Removed boost/random usage from linear and discrete directories

* Made into class

* Now using new WeightedSampler class

* Inlined random direction generation

* eradicated last vestiges of boost/random in gtsam_unstable

* Added 3D example g2o file

* Added Frobenius norm factors

* Shonan averaging algorithm, using SOn class

* Wrapping Frobenius and Shonan

* Fixed issues with <<

* Use Builder parameters

* Refactored Shonan interface

* Fixed << issues as well as MATLAB segfault, using eval(), as discussed in issue #451

* ShonanAveragingParameters

* New factor FrobeniusWormholeFactorP computes |Rj*P - Ri*P*Rij|

* Fixed broken GetDimension for Lie groups with variable dimension.

* Removed all but Shonan averaging factor and made everything work with new SOn

* Just a single WormholeFactor, wrapped noise model

* Use std <random>

* comments/todos

* added timing script

* add script to process ShonanAveraging timing results

* Now producing a CSV file

* Parse csv file and make combined plot

* Fixed range

* change p value and set two flags on

* input file path, all the csv files proceeses at the same time

* add check convergence rate part

* csv file have name according to input  data name

* correct one mistake in initialization

* generate the convergence rate for each p value

* add yticks for the bar plot

* add noises to the measurements

* test add noise

* Basic structure for checkOptimalityAt

* change optimizer method to cholesky

* buildQ now working. Tests should be better but visually inspected.

* multiple test with cholesky

* back

* computeLambda now works

* make combined plots while make bar plot

* Calculate minimum eigenvalue - the very expensive version

* Exposed computeMinEigenValue

* make plots and bar  togenter

* method change to jacobi

* add time for check optimality, min_eigen_value, sub_bound

* updated plot min_eigen value and subounds

* Adding Spectra headers

* David's min eigenvalue code inserted and made to compile.

* Made it work

* Made "run" method work.

* add rim.g2o name

* Fixed bug in shifting eigenvalues

* roundSolution which replaces projectFrom

* removed extra arguments

* Added to wrapper

* Add SOn to template lists

* roundSolution delete the extra arguement p

* only calculate p=5 and change to the correct way computing f_R

* Fixed conflict and made Google-style name changes

* prototype descent code and unit test for initializeWithDescent

* add averaging cost/time part in processing data

* initializewithDescent success in test

* Formatting and find example rather than hardcode

* Removed accidentally checked in cmake files

* give value to xi by block

* correct gradient descent

* correct xi

* }

* Fix wrapper

* Make Hat/Vee have alternating signs

* MakeATangentVector helpder function

* Fixed cmake files

* changed sign

* add line search

* unit test for line search

* test real data with line search

* correct comment

* Fix boost::uniform_real

* add save .dat file

* correct test case

* add explanation

* delete redundant cout

* add name to .dat output file

* correct checkR

* add get poses_  in shonan

* add Vector Point type for savig data

* Remove cmake file which magically re-appeared??

* Switched to std random library.

* Prepare Klaus test

* Add klaus3.g2o data.

* fix comment

* Fix derivatives

* Fixed broken GetDimension for Lie groups with variable dimension.

* Fix SOn tests to report correct dimension

* Added tests for Klaus3 data

* Add runWithRandomKlaus test for shonan.

* Finish runWithRandomKlaus unittest.

* Correct datafile.

* Correct the format.

* Added measured and keys methods

* Shonan works on Klaus data

* Create dense versions for wrappers, for testing

* Now store D, Q, and L

* Remove another cmake file incorrectly checked in.

* Found and fixed the bug in ComputeLambda !

* Now using Q in Lambdas calculation, so Lambdas agree with Eriksson18cvpr.

* Make FrobeniusFactor not use deprecated methods

* FrobeniusWormholeFactor takes Rot3 as argument

* Wrapped some more methods.

* Wrapped more methods

* Allow creating and populating BetweenFactorPose3s in python

* New constructors for ShonanAveraging

* add function of get measurements number

* Remove option not to use noise model

* wrap Use nrMeasurements

* Made Logmap a bit more tolerant of slightly degenerate rotations (with trace < -1)

* Allow for Anchor index

* Fix anchor bug

* Change outside view to Rot3 rather than SO3

* Add Lift in SOn class

* Make comet working

* Small fixes

* Delete extra function

* Add SOn::Lift

* Removed hardcoded flag

* Moved Frobenius factor to gtsam from unstable

* Added new tests and made an old regression pass again

* Cleaned up formatting and some comments, added EXPORT directives

* Throw exception if wrongly dimensioned values are given

* static_cast and other throw

* Fixed run-time dimension

* Added gauge-constraining factor

* LM parameters now passed in, added Gauge fixing

* 2D test scaffold

* Comments

* Pre-allocated generators

* Document API

* Add optional weight

* New prior weeights infrastructure

* Made d a template parameter

* Recursive Hat and RetractJacobian test

* Added Spectra 0.9.0 to 3rdparty

* Enabling 2D averaging

* Templatized Wormhole factor

* ignore xcode folder

* Fixed vec and VectorizedGenerators templates for fixed N!=3 or 4

* Simplifying constructors
Moved file loading to tests (for now)
All unit tests pass for d==3!

* Templated some methods internally

* Very generic parseToVector

* refactored load2d

* Very much improved FrobeniusWormholeFactor (Shonan) Jacobians

* SO(2) averaging works !

* Templated parse methods

* Switched to new Dataset paradigm

* Moved Shonan to gtsam

* Checked noise model is correctly gotten from file

* Fixed covariance bug

* Making Shonan wrapper work

* Renamed FrobeniusWormholeFactor to ShonanFactor and moved into its own compilation unit in gtsam/sfm

* Fixed wrong include

* Simplified interface (removed irrelevant random inits) and fixed eigenvector test

* Removed stray boost::none

* Added citation as suggested by Jose

* Made descent test deterministic

* Fixed some comments, commented out flaky test

Co-authored-by: Jing Wu <jingwu@gatech.edu>
Co-authored-by: jingwuOUO <wujing2951@gmail.com>
Co-authored-by: swang <swang736@gatech.edu>
Co-authored-by: ss <ss>
Co-authored-by: Fan Jiang <prof.fan@foxmail.com>
2020-08-17 07:43:10 -04:00
Frank Dellaert e62d04ce27 Templated parse methods 2020-08-14 19:10:31 -04:00
Frank Dellaert 269dea3a24
Merge pull request #422 from borglab/dellaert/issue420
Dellaert/issue420
2020-08-02 16:16:01 -04:00
Frank Dellaert e22c24eff5 Removed superfluous size, added doxygen partitions 2020-08-01 15:43:21 -04:00
Frank Dellaert 94f744ecae Allow graph to be queried 2020-08-01 15:40:50 -04:00
Varun Agrawal 8a3be052fe
Merge pull request #419 from borglab/feature/values-print
Values Print Formatting
2020-08-01 02:15:15 -04:00
Frank Dellaert 09bb25498f
Merge branch 'develop' into dellaert/issue420 2020-07-31 16:45:03 -04:00
Varun Agrawal ca88ac568b fixed tests 2020-07-28 15:57:15 -05:00
Jose Luis Blanco Claraco efed4237dc
Deprecate ExpressionFactor2 for 4.1 2020-07-28 20:46:24 +02:00
Jose Luis Blanco Claraco c9bd7ef8a7
Deprecate ExpressionFactor2 2020-07-28 16:20:49 +02:00
Jose Luis Blanco-Claraco 90dc1ce3b5
typo 2020-07-28 16:20:44 +02:00
Jose Luis Blanco-Claraco 947479e9de
Add variadic-template N-ary ExpressionFactor 2020-07-28 16:20:38 +02:00
Jose Luis Blanco-Claraco 8b1f3e1745
docs and missing traits 2020-07-28 16:20:33 +02:00
Varun Agrawal 4756f7359d use \n instead of endl 2020-07-28 09:12:13 -05:00
Varun Agrawal 9bb07851c3 Merge branch 'develop' into feature/values-print 2020-07-28 08:59:35 -05:00
Varun Agrawal c985701fdc
Merge pull request #358 from borglab/feature/rot-print
Consistent Rot3 printing
2020-07-28 09:56:37 -04:00
Frank Dellaert 41cb5f45eb
Merge pull request #441 from acxz/clang-warnings
fix clang warnings
2020-07-28 08:46:29 -04:00
Jose Luis Blanco Claraco 77c8c3bf0b
Values initializer_list constructor 2020-07-28 07:03:36 +02:00
acxz e0791f4e54 workaround to dereferencing a nullptr 2020-07-27 23:43:35 -04:00
Varun Agrawal 2fbdd27f15 Merge branch 'develop' into feature/rot-print 2020-07-27 11:14:13 -05:00
Frank Dellaert b0a48a6ba2
Merge pull request #435 from borglab/fix/clang-warnings
Fix clang warnings
2020-07-27 10:16:40 -04:00
Jose Luis Blanco Claraco 406060b457
Fix missing virtual dtors 2020-07-27 00:14:13 +02:00
Jose Luis Blanco-Claraco 85c576cc47
Merge pull request #432 from borglab/fix/recover-slam-serialization-test
Recover SLAM serialization test
2020-07-26 23:37:17 +02:00
Jose Luis Blanco Claraco 0198c648e3
Fix all new gcc warnings/errors: make explicit virtual/override methods.
Rules are:
- use "virtual" in base classes only.
- use "override" in all derived classes.
2020-07-26 11:20:42 +02:00
Jose Luis Blanco Claraco 8a5097d726
Add docs on serializing expressions. 2020-07-26 08:22:40 +02:00
Jose Luis Blanco Claraco a4b95d273f
recover SLAM serialization test 2020-07-25 18:07:25 +02:00
Varun Agrawal aaf632f583 fix test for FunctorizedFactor printing 2020-07-24 02:30:35 -05:00
acxz c738f6b7f7 remove unused base variable 2020-07-23 15:47:14 -04:00
Frank dellaert 30703ccb6a Removed all deprecated code w Stephanie... 2020-07-22 17:32:25 -04:00
Fan Jiang 456f1baf8f Fix test for full Pose3 expmap 2020-07-21 20:55:21 -04:00
Varun Agrawal b8f9ab1d87 nicer formatting when printing values 2020-07-21 18:41:14 -05:00
Frank Dellaert aebe121ae2
Merge pull request #411 from acxz/fix/adaptautodiff-warn
set default initialization
2020-07-16 07:14:16 -04:00
acxz 02e8966d4f set default initialization 2020-07-15 23:19:44 -04:00
Frank Dellaert 73209e6faa
Merge pull request #269 from borglab/feature/noisemodel_rename_functions
Feature/noisemodel rename functions
2020-07-13 13:15:37 -04:00
yetongumich 7db7455c12 deprecate error in noisemodel, use loss instead; revise virtual with override 2020-07-12 23:05:24 -04:00
Fan Jiang 3d8641c0c3 Merge remote-tracking branch 'origin/develop' into feature/noisemodel_rename_functions 2020-07-09 14:26:39 -04:00
Varun Agrawal 1f66a73147 Merge branch 'develop' into feature/functorized-factor 2020-07-07 10:50:51 -04:00
Varun Agrawal 30ffcdd137 Simplified FunctorizedFactor
By adding the helper function MakeFunctorizedFactor, we now only need to provide the argument type in the template parameter list. This considerably simplifies the factor declaration, while removing the need for argument type and return type in the functor definition.

Also added tests for std::function and lambda functions.
2020-07-06 21:48:51 -04:00
Varun Agrawal 7d0e440293 new definition for FunctorizedFactor to allow for using std::function and lambdas 2020-07-06 17:38:34 -04:00
Fan Jiang 564d2c5873 Fix memory leak in Expressions 2020-07-05 10:19:05 -04:00
Fan Jiang fb21c553a0 Switch to the new alignment marker type 2020-06-24 17:15:00 -04:00
Varun Agrawal 0bbb39687f improved documentation 2020-06-01 19:55:10 -04:00
Varun Agrawal 131213a983 fixes, better tests, docs 2020-06-01 19:52:50 -04:00
Varun Agrawal 1db0f441bc Added FunctorizedFactor and corresponding tests 2020-05-31 22:02:37 -04:00
Frank dellaert 3d42e4e76a Formatting only
# Conflicts:
#	gtsam/nonlinear/NonlinearOptimizer.cpp
#	tests/testPCGSolver.cpp
2020-05-21 14:50:02 -04:00
Varun Agrawal 14ccd06bf2 print custom error message if type names match 2020-05-19 17:34:07 -05:00
Varun Agrawal baaa656628 demangle other type instances 2020-05-18 17:45:45 -05:00