Commit Graph

123 Commits (3247751b5db8193b5fbd924b66b1e48325db7e7c)

Author SHA1 Message Date
Frank Dellaert 3247751b5d Major check-in: there are now two interchangeable implementations of VectorConfig.
VectorMap uses a straightforward stl::map of Vectors. It has O(log n)
insert and access, and is fairly fast at both. However, it has high overhead
for arithmetic operations such as +, scale, axpy etc...

VectorBTree uses a functional BTree as a way to access SubVectors
in an ordinary Vector. Inserting is O(n) and much slower, but accessing,
is O(log n) and might be a bit slower than VectorMap. Arithmetic operations
are blindingly fast, however. The cost is it is not as KISS as VectorMap.

Access to vectors is now exclusively via operator[]
Vector access in VectorMap is via a Vector reference
Vector access in VectorBtree is via the SubVector type (see Vector.h)

Feb 16 2010: FD: I made VectorMap the default, because I decided to try
and speed up conjugate gradients by using Sparse FactorGraphs all the way.
2010-02-17 03:29:12 +00:00
Manohar Paluri 39708194a3 added TrifocalTensor test and changed DLT to use non-sorted version. 2010-02-15 23:45:53 +00:00
Manohar Paluri 8691d633a7 added testTensors to the tests 2010-02-15 20:25:38 +00:00
Manohar Paluri 1cc5bf748b make file changes and added make targets to the cproject 2010-02-14 07:26:10 +00:00
Alex Cunningham f88438bab4 Removed SQP optimizer and moved remaining SQP optimizer tests into testSQP. All equality constraints should be fully functional now. Inequality constraints still to come. 2010-02-06 14:48:46 +00:00
Alex Cunningham 2889a25aeb Fixed autotools files for GSL inclusion so that they don't include the wrong BLAS implementation when ATLAS is enabled 2010-01-31 18:26:18 +00:00
Frank Dellaert 65bc90bf15 timing VectorConfig to speed up iterative 2010-01-29 13:57:45 +00:00
Kai Ni ed45d436be add gsl and atlas to configure 2010-01-27 05:15:52 +00:00
Alex Cunningham 59c7ce7e29 Integrated householder-based QR into NoiseModel. Note that the examples for GFG have changed to ensure that they are actually a linearized version of the nonlinear example. 2010-01-27 04:39:35 +00:00
Frank Dellaert 8b87eebba6 commented GSl bit 2010-01-27 01:03:49 +00:00
Manohar Paluri a0b96e7684 corrected case of Pose2SLAMoptimizer 2010-01-25 14:50:25 +00:00
Frank Dellaert 807cffbd61 Pose2SLAMOptimizer prototype for use in MATLAB 2010-01-23 00:57:54 +00:00
Kai Ni e88ae4a944 add dataset.h/cpp 2010-01-22 20:18:40 +00:00
Frank Dellaert 351cdd18c2 case change: SharedGaussian and SharedDiagonal are now classes with their own header file. Needed for MATLAB TORO hail Mary 2010-01-22 17:36:57 +00:00
Richard Roberts 5367e5a157 All std::map<Symbol,T> are now SymbolMap<T>, which is just a thin wrapper around std::map. at(Key) is used instead of first checking with find when an exception should be thrown for non-existent keys. This does not change any behavior or timing currently. This check-in also includes some functions in BayesTree for gathering clique statistics. 2010-01-22 04:41:40 +00:00
Frank Dellaert 41a6e64bbb Fixed insert to use IndexTable, a new class 2010-01-22 02:27:26 +00:00
Alex Cunningham 9db7623f80 Improved instructions for GSL/ATLAS 2010-01-21 01:03:34 +00:00
Alex Cunningham 063aa14118 Reimplemented matrix::householder_update using GSL and BLAS, you'll need to edit Makefile.am to enable the new version -- see email 2010-01-21 00:59:33 +00:00
Richard Roberts eb03f78e7d Removing dependency hack speeds up compilation 2010-01-20 20:47:15 +00:00
Alex Cunningham 67878830a6 Added timeMatrix.cpp to test specific matrix operations 2010-01-19 20:59:22 +00:00
Alex Cunningham 88e465910a SQP tests and implementation now use the new Key system 2010-01-19 05:33:44 +00:00
Frank Dellaert e523b148cf Moved tree stuff to graph, removed ordering-inl.h 2010-01-18 19:11:22 +00:00
Alex Cunningham dfeacb218e Added tests for Keys, Added TypedLabeledSymbol class to allow for runtime symbols on keys 2010-01-18 16:18:02 +00:00
Kai Ni 05b07d443e add linear system solver as a template class parameter in nonlinear optimizer. 2010-01-18 05:51:19 +00:00
Frank Dellaert 8967027198 Testing R and Whiten 2010-01-17 03:29:23 +00:00
Frank Dellaert 4518069218 2010-01-17 00:35:49 +00:00
Manohar Paluri 09d2cb9101 added numericalDerivative.h to headers 2010-01-16 23:10:38 +00:00
Frank Dellaert 049cea6964 3D Pose SLAM + removed obsolete Urban files that somehow re-appeared in CitySLAM 2010-01-16 19:37:17 +00:00
Richard Roberts f0ae2c064e Merging in NoiseModel, not yet used though 2010-01-16 18:39:39 +00:00
Frank Dellaert 99db4c37d8 2D Pose SLAM: created a new templated factor to accommodate GPS measurements, and as part of the refactor I consolidated all Pose2 SLAM classes in pose2SLAM.h. For backwards compatibility it contains
typedef pose2SLAM::Prior Pose2Prior;
	typedef pose2SLAM::Odometry Pose2Factor;
	typedef pose2SLAM::Constraint Pose2Constraint;
	typedef pose2SLAM::Config Pose2Config;
	typedef pose2SLAM::Graph Pose2Graph;
2010-01-16 18:01:16 +00:00
Frank Dellaert 4914091c87 Pose2Prior test 2010-01-16 15:39:39 +00:00
Frank Dellaert 26246188af Added planar graph to timing script 2010-01-16 04:46:35 +00:00
Frank Dellaert a4ed0a191d Forgotten header numericalDerivative.h 2010-01-16 04:22:41 +00:00
Chris Beall a956c1a8be svn restored from 1733.
this commit updates gtsam to version 1774, which now appears as 1734.
2010-01-16 01:16:59 +00:00
Frank Dellaert e7bf219498 removed .cpp 2010-01-14 15:31:58 +00:00
Kai Ni e1388c0f0d add Ordering-inl.h 2010-01-14 07:56:03 +00:00
Frank Dellaert dd697a838d added TupleConfig.h as header 2010-01-14 06:20:34 +00:00
Frank Dellaert df62213619 RangeFactor works 2010-01-14 06:00:17 +00:00
Richard Roberts 8562c00a52 Explicit instantiation to fix link error on Linux, also header to install that was missing from Makefile.am 2010-01-14 05:01:40 +00:00
Richard Roberts ac10c440e1 PairConfig is implemented, VSLAMConfig is now a typedef! 2010-01-14 02:58:29 +00:00
Frank Dellaert 6b3e8cf49c simulated2D now reduced to one .h and .cpp, in its own namespace, better naming, and new-style functions to serve as example 2010-01-14 02:50:06 +00:00
Frank Dellaert 93465945e9 Large gtsam refactoring
To support faster development *and* better performance Richard and I pushed through a large refactoring of NonlinearFactors.

The following are the biggest changes:

1) NonLinearFactor1 and NonLinearFactor2 are now templated on Config, Key type, and X type, where X is the argument to the measurement function.

2) The measurement itself is no longer kept in the nonlinear factor. Instead, a derived class (see testVSLAMFactor, testNonlinearEquality, testPose3Factor etc...) has to implement a function to compute the errors, "evaluateErrors". Instead of (h(x)-z), it needs to return (z-h(x)), so Ax-b is an approximation of the error. IMPORTANT: evaluateErrors needs - if asked - *combine* the calculation of the function value h(x) and the derivatives dh(x)/dx. This was a major performance issue. To do this, boost::optional<Matrix&> arguments are provided, and tin EvaluateErrors you just  says something like

	if (H) *H = Matrix_(3,6,....);

3) We are no longer using int or strings for nonlinear factors. Instead, the preferred key type is now Symbol, defined in Key.h. This is both fast and cool: you can construct it from an int, and cast it to a strong. It also does type checking: a Symbol<Pose3,'x'> will not match a Symbol<Pose2,'x'>

4) minor: take a look at LieConfig.h: it help you avoid writing a lot of code bu automatically creating configs for a certain type. See e.g. Pose3Config.h. A "double" LieConfig is on the way - Thanks Richard and Manohar !
2010-01-13 22:25:03 +00:00
Kai Ni 4369cd2d92 1) add a compose function that compose all the poses in a factor graph given the spanning tree
2) add a new graph-inl.h which takes care of all the boost graph related functions to prevent the copy and paste across several classes
2010-01-12 16:12:25 +00:00
Frank Dellaert fcb7c024a7 bearing functions and derivatives 2010-01-12 02:10:42 +00:00
Frank Dellaert d11b2e6bd5 Added omitted headers 2010-01-10 18:37:55 +00:00
Richard Roberts 88ae5380a8 Removed Vector-specific versions of NumericalDerivative, instead Vector is now a Lie object 2010-01-10 18:23:47 +00:00
Frank Dellaert 1a96ef41cf Created Pose3Config, Pose3Graph, and tested loop closure optimization. 2010-01-10 18:21:20 +00:00
Frank Dellaert 65e4dc1342 pose2Circle 2010-01-10 15:46:18 +00:00
Richard Roberts 4fa53a1f79 Merging lieconfig branch - LieConfig works but currently requires Lie objects to have a global print function. 2010-01-10 06:35:16 +00:00
Richard Roberts 2b82ff65e7 Deriving Lie objects from a base class Lie<T>, which provides member functions to access global functions, for use in MATLAB. 2010-01-09 23:15:06 +00:00