Commit Graph

387 Commits (d00a5b19ab0be0b460f07f4cee44c43e84320deb)

Author SHA1 Message Date
Kai Ni 3f1029483c add isSingleton to DSFVector 2010-11-15 01:12:37 +00:00
Frank Dellaert 0d1163648d Some more test targets 2010-11-08 20:35:26 +00:00
Kai Ni fa81eb4b5e added new constructor for VectorValues 2010-11-07 23:12:21 +00:00
Kai Ni 448ada270a create n-way factor, return keys from nonlinear factor graph 2010-10-30 19:27:30 +00:00
Kai Ni 71ddf0b755 memory boundrary check 2010-10-28 21:50:46 +00:00
Kai Ni 427cf8f9ed fix memory issue in DenseQR 2010-10-23 06:12:57 +00:00
Alex Cunningham 6f2ef4ed72 Pacified warnings 2010-10-22 00:17:08 +00:00
Richard Roberts 812e3277ee New linear solver interface, global inference functions removed. 2010-10-21 22:59:54 +00:00
Kai Ni e718306fd0 fix test wrap problem 2010-10-18 16:15:06 +00:00
Frank Dellaert b56b0fe3a4 Moved test to inference and added ETree prototype code 2010-10-12 05:19:51 +00:00
Frank Dellaert bc0e855453 added testConditional 2010-10-12 00:15:11 +00:00
Richard Roberts 45456aab8e Fixed computing shortcuts in BayesTree 2010-10-10 03:10:03 +00:00
Richard Roberts 84d6b5be6a Re-enabled computing marginals of a set of variables (Inference::Marginal(...)) 2010-10-10 00:51:57 +00:00
Richard Roberts 1d52ff90a8 Merged simplelinear branch into trunk 2010-10-08 22:04:47 +00:00
Alex Cunningham f6ada87314 Removed LDL, ConstraintOptimizer things, and FusionTupleConfig. Added *.valgrind run commands so that tests can be checked for memory errors. Removed some extraneous stuff in configure.ac 2010-10-02 23:38:01 +00:00
Kai Ni 9a805d68bf add testLieScalar 2010-09-30 03:37:15 +00:00
Frank Dellaert 51b1650b08 improved and moved DLT function to Matrix.cpp 2010-09-28 14:58:36 +00:00
Frank Dellaert 2f83d194eb added target 2010-09-20 21:20:39 +00:00
Frank Dellaert 91ff36c5da make target 2010-09-20 20:49:27 +00:00
Frank Dellaert c76e9aa7eb added testFundamental 2010-09-13 03:25:27 +00:00
Alex Cunningham a461680a2b Removed extraneous headers that were causing problems related to boost serialization and added testSerialization with conditional compiling (--enable-serialization). Currently, the test is all commented out, and it should not affect those not using the flag. 2010-08-27 15:31:20 +00:00
Alex Cunningham d17aef492c Added two example scripts to gtsam from the tutorial, with a single planar example that either contains all typedefs and manually creates the structure, and another that uses planarSLAM.h. Also added a BearingRange helper function to planarSLAM 2010-08-26 21:21:15 +00:00
Alex Cunningham 23a30f8475 Removed remaining global lie functions on lie objects and configs, switched the Lie base class to a simple concept check function, fixed build script for examples. ISAM2 and MastSLAM verified as compiling. 2010-08-26 19:55:40 +00:00
Alex Cunningham f3ccfaf100 Added dummy initialization of LieConfigs from arbitrary other LieConfigs, FusionTupleConfigs can now be created from arbitrary other FusionConfigs. 2010-08-13 19:51:04 +00:00
Alex Cunningham c2a83759cb Added experimental replacement for TupleConfig using boost.fusion - this should eventually make it possible to make nonlinear factors interchangable regardless of config type. 2010-08-12 15:23:03 +00:00
Frank Dellaert 4b6eb67340 moved timing scripts back to main directory, added timeCalibratedCamera 2010-08-08 18:46:56 +00:00
Alex Cunningham 99e4c09a7e Added a FixedVector class that uses a bounded boost vector to allow for type-level dimension specification 2010-08-02 19:01:00 +00:00
Alex Cunningham d1ae7132ac Added constructor to upgrade a TypedSymbol to a labeled symbol 2010-07-26 17:23:18 +00:00
Kai Ni bde73355b8 fixed duplicated symbols between simulated2D and planarSLAM 2010-07-20 14:38:27 +00:00
Alex Cunningham d938f92844 Replaced instances of PairConfig with TupleConfig2, cleaned up documentation on TupleConfigs 2010-07-19 19:55:24 +00:00
Kai Ni 2a2bc2f70f multi-frontal solver works now as a result of flight delay 2010-07-18 20:23:23 +00:00
Alex Cunningham a3da89b63a NonlinearConstraints are now implemented using the simple linearization method with quadratic merit function 2010-07-18 19:55:53 +00:00
Frank Dellaert b5c0f3cee8 Simplified Cluster class, elimination tree constructors tested, junction tree tests disabled for now. 2010-07-14 23:48:51 +00:00
Frank Dellaert bd58c65a9c Added EliminationTree framework 2010-07-14 15:22:37 +00:00
Frank Dellaert c3a907127f Created ClusterTree (duplicate of Junction tree for now, will split later). GaussianJunctionTree is no longer a template. TestJunctionTree now tests with SymbolicFactorGraph 2010-07-13 22:03:18 +00:00
Frank Dellaert 30b377e441 Fix makefiles to refer to $(top_srcdir) to enable parallel build 2010-07-13 19:13:07 +00:00
Frank Dellaert 559eaf8cc1 Moved smallExample to slam, as used in some project unit tests as well. [tests] no longer builds a local library as a consequence. 2010-07-13 05:26:19 +00:00
Frank Dellaert 8ce5e321c8 Last part of re-organization for now: all things linear/Gaussian are now in the "linear" sub-directory. 2010-07-12 22:18:38 +00:00
Frank Dellaert c9db61e137 Newly functional build: second part of re-organization. cpp now split into inference and nonlinear. 2010-07-12 16:36:58 +00:00
Frank Dellaert fea5beb638 Re-organization: moving all files.
I re-organized into original cpp directory and 4 additional directories: base, geometry, slam, and tests.
cpp will be further renamed/sub-divided and contains the core library.
I wanted it not depend on geometry or slam, which necessitated moving complicated tests to a dedicated directory.
2010-07-12 07:16:31 +00:00
Kai Ni 6248db54dd distribute the factors along the junction tree 2010-07-09 07:31:15 +00:00
Michael Kaess 39d18328e6 added CCOLAMD, changed colamd compile from C++ to C compiler, added extern accordingly 2010-07-08 21:54:53 +00:00
Kai Ni d5c6f62387 massive check in for using spqr_front 2010-07-04 23:50:21 +00:00
Kai Ni 2d40df17ac added a vector-based DSF implmentation 2010-06-25 06:35:44 +00:00
Kai Ni 553cf83194 created some unit tests to help viorela to debug 2010-06-10 18:09:57 +00:00
Alex Cunningham e8979dafad Renabled BLAS using ATLAS for Linux, fixed a variety of annoying warnings 2010-05-21 17:59:26 +00:00
Alex Cunningham 6eca454de1 Added a separate ConstraintOptimizer, and moved CQP test from testMatrix to testConstraintOptimizer 2010-04-23 02:08:34 +00:00
Kai Ni a647c84c16 added splitMinimumSpanningTree that uses DSF 2010-03-30 07:27:10 +00:00
Kai Ni cc2e42aa15 added DSF 2010-03-27 06:05:06 +00:00
Frank Dellaert 47a01b1d90 Tried making tests less verbose 2010-02-23 15:13:49 +00:00
Frank Dellaert 274265a401 Errors:axpy and testErrors 2010-02-21 00:01:43 +00:00
Frank Dellaert cd5c281c76 Added get and set 2010-02-18 14:30:16 +00:00
Alex Cunningham c044b749cc Removed old make targets 2010-02-17 14:21:09 +00:00
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 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
Frank Dellaert 65bc90bf15 timing VectorConfig to speed up iterative 2010-01-29 13:57:45 +00:00
Kai Ni 1685920d52 fixed Ab2 bug 2010-01-23 05:29:04 +00:00
Kai Ni b092fee64b pose2slamoptimizer unit tests worked 2010-01-23 03:49:05 +00:00
Frank Dellaert 807cffbd61 Pose2SLAMOptimizer prototype for use in MATLAB 2010-01-23 00:57:54 +00:00
Frank Dellaert 41a6e64bbb Fixed insert to use IndexTable, a new class 2010-01-22 02:27:26 +00:00
Frank Dellaert 0dc4f417e9 sampling from NoiseModel 2010-01-21 08:31:18 +00:00
Alex Cunningham 5f588031bc Merged NoiseQR back into trunk 2010-01-20 18:32:48 +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
Michael Kaess 0e6607d160 relinearization working, but currently applied to all variables 2010-01-18 22:37:44 +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
Frank Dellaert 3a83e0678d KISS refactor of NoiseModel 2010-01-17 00:37:34 +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
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 df62213619 RangeFactor works 2010-01-14 06:00:17 +00:00
Richard Roberts ac10c440e1 PairConfig is implemented, VSLAMConfig is now a typedef! 2010-01-14 02:58:29 +00:00
Frank Dellaert 5a02b36723 Solved some linking problems 2010-01-14 01:44:00 +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 769763a35d new target/ignore 2010-01-12 03:16:45 +00:00
Richard Roberts 1dcc864d97 Comment cleanup to /** style and adding global print functions 2010-01-10 22:41:23 +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
Frank Dellaert 794ffd3b2f Fixed significant bug in Pose2Factor, where we forgot to multiply the error with the square root inverse covariance. 2010-01-10 13:55:55 +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
Kai Ni e5fe4a69f7 change no. of build processes in eclipse to 2 2010-01-08 07:51:29 +00:00
Kai Ni 9845a5ae37 add findMinimumSpanningTree to FactorGraph 2010-01-06 11:15:37 +00:00
Frank Dellaert f82b46f96c Sped up rodriguez and replaced slow implementation with call to fast implementation. Also moved some functions to cpp. 2010-01-02 14:28:18 +00:00
Frank Dellaert a1c55b9f62 Updated Pose2Config to expected coding standard 2010-01-02 10:33:33 +00:00
Frank Dellaert 603b692406 New Targets 2009-12-31 12:57:06 +00:00
Michael Kaess 75ab62a729 ISAM2 (nonlinear ISAM) partially there, unit test currently disabled 2009-12-29 05:57:05 +00:00
Frank Dellaert d9fd502656 moved CG tests from testGFG to testIterative 2009-12-28 09:44:30 +00:00
Michael Kaess 5dfd1921e1 template nightmare resolved, all tests working 2009-12-27 23:15:36 +00:00
Frank Dellaert b14094cb1f testUrbanOdometry 2009-12-18 07:15:19 +00:00
Frank Dellaert 7dfc67860c unit tests for new Urban* classes 2009-12-18 01:24:28 +00:00
Frank Dellaert a9dc57db2c 2009-12-09 21:00:53 +00:00
Viorela Ila 8e079a9794 add testPose2Constraint.run target 2009-12-09 17:30:47 +00:00
Alex Cunningham 107c6846fb Added basic inequality constraint handling to NonlinearConstraint. Demo still in progress, but now constraints are explicitly handled as either equality or inequality constraints, with an active() function to determine if it is necessary to use the constraint.
Created testOrdering for new subtract() function to remove parts of an ordering.
2009-11-28 18:35:36 +00:00
Alex Cunningham cf6474c99b Added a graph implementation for multi-robot control systems. Currently can only really constrain the ends of a trajectory.
Made a number of fixes and updates to the ControlConfig as well.
2009-11-27 17:59:03 +00:00
Alex Cunningham 2a2e11d05d Added the config and units for a robot control system example that keeps a position and velocity model of a robot's motion. 2009-11-26 05:52:17 +00:00
Alex Cunningham d788e9833d Added tests to ensure that configs will only update existing values when using exmap and not add new ones if there are more values in the delta config. VectorConfig and VSLAMConfig both do this properly now. 2009-11-24 15:12:59 +00:00
Michael Kaess 7d384488e3 BayesTree::update generalized and moved from testIncremental to BayesTree; testIncremental removed 2009-11-22 23:35:13 +00:00
Frank Dellaert 82aae3c161 Some re-factoring (using BOOST_FOREACH to loop over string list), root is now NULL after removing root clique 2009-11-21 21:48:10 +00:00
Alex Cunningham 429f27550c Added a NonlinearConstraint and testNonlinearConstraint. There is currently an abstract base class for constraints and a partially implemented unary constraint. 2009-11-19 16:50:18 +00:00
Frank Dellaert ceed2ae17d symbolic tree in testIncremental 2009-11-18 15:37:19 +00:00
Alex Cunningham 20830a1534 Added testSQP demo to show a simple problem solved by Sequential Quadratic Programming. To see the outputs, set verbose=true at the start of the test. 2009-11-16 19:12:56 +00:00
Frank Dellaert fc440f823b New make targets 2009-11-13 06:20:41 +00:00
Alex Cunningham 35bbca7155 Switched make targets to use correct GaussianFactor/Graph 2009-11-13 02:22:50 +00:00
Alex Cunningham 67c2ea8263 NonlinearEquality factor is now working for generic configs. Currently, the feasible point must be specified in the form of a full config with the point in it, but this avoid needing to increase the requirements on the configs. 2009-11-13 02:06:52 +00:00
Frank Dellaert 8bc29cf11b new target 2009-11-12 23:42:38 +00:00
Chris Beall ef0fc9fbac added testVSLAMGraph unit test. will fail until we can add a constraint to either one of the two cameras. 2009-11-12 18:54:46 +00:00
Alex Cunningham c7b86cec97 Renamed ConditionalGaussian -> GaussianConditional 2009-11-12 16:41:18 +00:00
Alex Cunningham 40f8ba740d Fixed build target references to LinearFactor/Graph 2009-11-12 16:20:30 +00:00
Alex Cunningham 77a1754b69 Renamed LinearFactor -> GaussianFactor, LinearFactorGraph -> GaussianFactorGraph 2009-11-12 16:16:32 +00:00
Frank Dellaert f677341108 Moved inference methods to new compilation unit. Added [factor], and [marginalize] now returns a factor graph. 2009-11-12 04:56:30 +00:00
Alex Cunningham 2c37c94b5d Replaced the householder transform with the weighted system
Removed constrained components from makefile, they will disappear shortly
2009-11-09 21:34:20 +00:00
Frank Dellaert df3e5f2416 BIG: eliminate and eliminateOne now doubly templated functions, not methods.
Minor: Standardized on new shared_ptr naming convention:
shared_factor -> sharedFactor
conditional_ptr -> sharedConditional
node_ptr -> sharedClique
2009-11-07 19:31:39 +00:00
Frank Dellaert e9d942f81e BayesNet is now list-based for fast bi-directional access
SLOW O(n) random access operator[key] provided 
(should maybe be called [at] as it does bounds checking)
I also fixed a bug in equals.
2009-11-03 06:29:56 +00:00
Frank Dellaert eab038651e Renamed BayesNet::insert -> push_back. BayesTree now uses Bayes nets as nodes. 2009-11-02 05:17:44 +00:00
Frank Dellaert a8d267c4ca Small change necessitating lots of edits: Conditionals now include key of random variable
This simplifies Bayes nets quite a bit. Also created a Conditional base class, derived classes ConditionalGaussian and SymbolicConditional
Finally, some changes were needed because I moved some headers to .cpp
2009-11-02 03:50:30 +00:00
Alex Cunningham 4c48bb08e1 Vector and Matrix updated with improved weighted householder operations and more tests. 2009-10-29 12:52:27 +00:00
Frank Dellaert a513ae0287 Changed names and moved two LinearFactorGraph functions to FactorGraph
Added SymbolicFactorGraph compiulation unit and unit tests
Added symbolic combine constructor
2009-10-29 05:39:13 +00:00
Frank Dellaert b6cee73571 Significant change: Made FactorGraph templated on Factor only, and moved error and probPrime to derived classes
Moved find_and_remove_factors to base class
Added and tested symbolic factor graph constructor and conversion from any factor graph type
2009-10-29 04:11:23 +00:00
Frank Dellaert bb15697cf9 Prototype framework for Bayes chain (new name for Chordal Bayes net) and Bayes tree class hierarchy 2009-10-27 20:23:19 +00:00
Frank Dellaert 626d06905c Removed obsolete optimize call and documented better 2009-10-27 14:14:36 +00:00
Frank Dellaert 4d9ff77249 moved timing example here from EasySLAM 2009-10-27 13:34:36 +00:00
Frank Dellaert 3792c79706 Fixed NonlinearFactor2 equals and added some unit tests for equals 2009-10-24 20:01:47 +00:00
Frank Dellaert 2aec16d3cf Combined evaluation/derivatives now return the function value instead of using a pointer 2009-10-22 14:44:27 +00:00
Frank Dellaert 82d541f6a3 Fixed wrapper problem
This was because VectorConfig was parsed as Vector. Just changing the order of the parsers fixed this.
2009-10-17 04:29:14 +00:00
Frank Dellaert 0d66ee8f72 comments only 2009-10-15 14:56:40 +00:00
Alex Cunningham 66dac8a52f Generalized constraint handling to create a LinearConstraint which implements linear equality constraints that can be eliminated as a part of a ConstrainedLinearFactorGraph. DeltaFunction has been changed to be a ConstrainedConditionalGaussian, which has a more robust solve() function. The new tests no longer use the "constrained" example from smallExample, so those functions have been commented.
''Limitations: ''
 * Any given node can only have one constraint on it, but constraints can be of arbitrary size
 * Constraints can only be specified as a blockwise system, where each block must be square and invertible to support arbitrary elimination orderings.  
  * ConstrainedNonlinearFactorGraph is disabled until a better solution for handling constraints in the nonlinear case is determined.
2009-10-08 13:57:22 +00:00
Frank Dellaert 989f290c99 '''BIG CHANGE''': avoid converting back and to FGConfigs by templating on configuration type. Details:
* Factors are now templated on the configuration type. Factor Graphs are now templated on the factor type and configuration type.
 * LinearFactor is a factor on an FGConfig.
 * LinearFactorGraph uses LinearFactor and FGConfig.
 * NonLinearFactor is still templated on Config.
 * NonLinearFactorGraph uses NonLinearFactors, but is still templated on Config.
 * Tests and VSLAMFactor have been updated to reflect those changes.
2009-10-06 18:25:04 +00:00
Frank Dellaert 68e20eec2c 2 BIG changes:
(1) FactorGraph and NonlinearOptimizer now no longer have a .cpp file, but a -inl.h file as in [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google's C++ Style Guide]. This means if you expect to instantiate one of the functions in a cpp file, you have to include the -inl.h file.
(1) getOrdering is now in FactorGraph, and the non-linear version does *not* take a config anymore. 
Long version: I made this change because colamd works on the graph structure alone, and should not depend on the type of graph. Instead, because getOrdering happened to implemented in LinearFactorGraph first, the non-linear version converted to a linear factor graph (at the cost of an unnecessary linearization), and then threw all that away to call colamd. To implement this in a key-neutral way (a hidden agenda), i had to modify the keys_ type to a list, so a lot of changes resulted from that.
2009-09-13 04:13:03 +00:00
Frank Dellaert ead3d03866 BIG: replaced optimize in NonlinearFactorGraph with specialized NonlinearOptimizer object. This does away with the artificial ErrorVectorConfig and the like as NonlinearOptimizer is templated and can use "exmap", the exponential map defined for any differentiable manifold. 2009-09-09 04:43:04 +00:00
Alireza Fathi 214637cee9 fixed rodriguez in Rot3 2009-09-03 17:43:02 +00:00
Frank Dellaert c69d8d9b36 Factor Graph serialization, and renaming of factors -> factors_ 2009-08-31 02:40:26 +00:00
Frank Dellaert 3432b6c50f new Pose2 class 2009-08-29 01:24:26 +00:00
Frank Dellaert af6d98253f solve is now const 2009-08-27 01:23:05 +00:00
Frank Dellaert 4911fbd6ff check target 2009-08-26 23:07:29 +00:00
Frank Dellaert dcff7be2f0 added $(HOME)/include in Eclipse paths so tests are correctly parsed 2009-08-24 04:22:42 +00:00
Richard Roberts 2ed5cc31bf Fixing file locations 2009-08-21 22:25:43 +00:00