Commit Graph

12084 Commits (84afc944582e1ee518908169f815ce05ea4768cc)

Author SHA1 Message Date
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 ae4968328d
Merge pull request #472 from borglab/feature/actions_ci_add
Minimal PR to add GitHub Actions CI to develop
2020-08-16 23:40:47 -04:00
Frank Dellaert 42e1af5358 Merge branch 'develop' into feature/actions_ci_add
# Conflicts:
#	.travis.yml
2020-08-16 23:21:18 -04:00
Frank Dellaert aceaa139ab
Merge pull request #471 from borglab/feature/dataset-refactor
Refactoring dataset.h/.cpp
2020-08-16 23:15:02 -04:00
Fan Jiang 84049ebecf Add Python to the name of CI 2020-08-16 20:02:35 -04:00
Fan Jiang 0d5ee3fbc6 Always build unstable 2020-08-16 19:50:01 -04:00
Frank Dellaert 8288b55d4e Addressed review comments 2020-08-16 17:30:52 -04:00
Varun Agrawal a2e7481300 add description for CI scripts 2020-08-16 08:31:44 -05:00
Varun Agrawal b23dd711b0 remove unnecessary prints 2020-08-15 23:40:43 -05:00
Varun Agrawal 51b201988f correctly add LD_LIBRARY_PATH boost lib directory 2020-08-15 20:20:31 -05:00
Varun Agrawal 5315e3ed35 test LD_LIBRARY_PATH 2020-08-15 19:26:36 -05:00
Varun Agrawal e04ef84948 set LD_LIBRARY_PATH 2020-08-15 18:45:40 -05:00
Varun Agrawal ba6b18947d fix build script 2020-08-15 18:45:18 -05:00
Frank Dellaert 4f28a0b88d Fixed covariance bug 2020-08-15 17:56:24 -04:00
Varun Agrawal 7f0767e85f fix cython path 2020-08-15 16:22:01 -05:00
Varun Agrawal de2344fc2e fix script name 2020-08-15 16:03:44 -05:00
Varun Agrawal 1e3ca015f0 updates to macOS and Linux CIs 2020-08-15 16:01:40 -05:00
Varun Agrawal 808c043e73 moved CI script for unix based systems 2020-08-15 16:01:24 -05:00
Varun Agrawal 0172cd3c8c updates to python CI yml file 2020-08-15 15:50:59 -05:00
Varun Agrawal d9f5c1ebb7 remove travis.python.sh and instead add script in .github folder 2020-08-15 15:50:10 -05:00
Varun Agrawal 635c6f89b0 renamed from build-cython to build-python 2020-08-15 15:44:22 -05:00
Fan Jiang 7f7bf563f6 Real reason why cannot find boost 2020-08-15 15:28:56 -04:00
Fan Jiang 799486b2f3 Do not search for the cmake boost file 2020-08-15 14:45:58 -04:00
Fan Jiang ae341c83a4 Fix wrong include path 2020-08-15 14:13:07 -04:00
Fan Jiang 2d7fb05f6c Ignore system boost 2020-08-15 13:54:02 -04:00
Fan Jiang bfae556168 typo 2020-08-15 13:33:00 -04:00
Frank Dellaert b1e3b5495c Some behavior changes.
- maxIndex now does what it says
- id = size_t, Key is only for Values and Graph)
- re-admitted methods needed for wrapper.
2020-08-15 13:05:58 -04:00
Fan Jiang b9f4f28e1a Manually specify BOOST_ROOT 2020-08-15 13:05:53 -04:00
Fan Jiang 288195ba16 Add a display for current boost version 2020-08-15 12:54:31 -04:00
Varun Agrawal 84705102c3
Merge pull request #457 from mawallace/remove-set-zlabel
Update plot_pose2 to stop trying to set zlabel on axes with no z-axis
2020-08-15 12:31:26 -04:00
Fan Jiang b3caa6de83 typo 2020-08-15 12:06:07 -04:00
Fan Jiang bb0de4f63b switch to boost 1.69.0 2020-08-15 11:52:37 -04:00
Fan Jiang a5b722d237 Correct .travis.sh 2020-08-15 11:52:37 -04:00
Fan Jiang 96169665b0 Remove pybind build 2020-08-15 11:52:37 -04:00
Fan Jiang d43d8b7c69 Limit python triggering 2020-08-15 11:52:37 -04:00
Fan Jiang 10754080fc Remove travis and appveyor 2020-08-15 11:52:35 -04:00
Fan Jiang d0724a77bb Backport GitHub Actions CI (#259)
* Add GitHub Actions
* Add Windows Check
* Fix wrong os selection
* Add XCode version
* Upgrade GCC Version
* Make GCC match Ubuntu name
* Do not fail everyone when one failed
* More checks on ccache
* Do not expose GenericValue on Windows
* Fix BetweenFactor for Windows
* Update
* Add Python CI
* Typo
* Add note about GENERICVALUE_VISIBILITY
* Fix Windows Boost
* Change substitution scheme to PowerShell
* Fix the spurious error of the Point3 default constructor
* Separate builds to allow easier restarts
* Fix uninitialized variable usage
* Change of policy, only build python stuff, mac and win on PRs
* Further separate the Python tests
2020-08-15 11:52:00 -04:00
Frank Dellaert fc08562641 Hunted down deprecated use of parse3DLandmarks 2020-08-15 08:06:37 -04:00
Frank Dellaert 97537f2a36 Avoid clang warnings about double-brace initialization 2020-08-15 08:06:15 -04:00
Varun Agrawal 2f0e76fab3
Merge pull request #462 from borglab/feature/cmake-even-print
Consistent width printing of CMake flags
2020-08-15 01:03:07 -04:00
Frank Dellaert de7b56a491 Turn off gcc build as it times out every time 2020-08-14 22:02:17 -04:00
Varun Agrawal c4a4d6d174 Merge branch 'develop' into remove-set-zlabel 2020-08-14 18:21:17 -05:00
Varun Agrawal 763b126e46 Merge branch 'develop' into feature/cmake-even-print 2020-08-14 18:19:18 -05:00
Frank Dellaert e62d04ce27 Templated parse methods 2020-08-14 19:10:31 -04:00
Frank Dellaert aa3c0f8c5d refactored load2d 2020-08-14 18:31:05 -04:00
Frank Dellaert d67afa8a3d Very generic parseToVector 2020-08-14 18:30:56 -04:00
Frank Dellaert a978c15d8e Templated some methods internally 2020-08-14 18:30:45 -04:00
Frank Dellaert 7befacee9d
Merge pull request #470 from borglab/fix/windows-build-error
Fix FrobeniusBetweenFactor declaration
2020-08-14 17:53:54 -04:00
Varun Agrawal 4194f97897 comment out timing-out CI stage 2020-08-14 14:58:07 -05:00
Varun Agrawal e8f91c663f fix FrobeniusBetweenFactor declaration 2020-08-13 21:55:17 -05:00