Commit Graph

29 Commits (d4f92c7bb60092728ed27c75259de333ddecee46)

Author SHA1 Message Date
Kai Ni d4f92c7bb6 pass FactorGraph as reference into split 2010-01-08 20:27:10 +00:00
Kai Ni 06b7f8ee04 add split to FactorGraph 2010-01-08 19:07:46 +00:00
Richard Roberts 19a3e228d7 Large refactoring - made several Lie group functions global, which used to be member functions, to treat Lie groups more uniformly. Also created Lie.h, and a preprocessor flag in numericalDerivative to change the coordinate frame derivatives are reported in. gtsam and easylib build and pass unit tests, but this will probably break other projects, which will require a few small changes to work again. Email coming in a few minutes to describe the changes. 2010-01-08 00:40:17 +00:00
Kai Ni 6298a45050 use prim algorithm instead of kruskal for finding MST, which yields the parent map. 2010-01-07 06:25:54 +00:00
Kai Ni 9845a5ae37 add findMinimumSpanningTree to FactorGraph 2010-01-06 11:15:37 +00:00
Frank Dellaert d0b757da48 remove method to set factor to NULL 2009-12-20 21:21:01 +00:00
Richard Roberts ff817551de Added FactorGraph::replace(index, factor) to replace one factor with another (used in FrameSLAM). 2009-12-18 00:13:38 +00:00
Viorela Ila 8a9f05059c implement getOrdering_ to work in matlab 2009-12-11 22:53:48 +00:00
Frank Dellaert 715dc4474d functional STL magic 2009-11-20 14:18:26 +00:00
Frank Dellaert b2eee54b5a push_back an entire factor graph 2009-11-19 06:34:07 +00:00
Michael Kaess f56bf8c79f added missing include to satisfy stricter compiler; added isam test file 2009-11-17 21:47:42 +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
Frank Dellaert 8d2d48d252 made removeAndCombineFactors a function, not a method 2009-11-11 05:12:45 +00:00
Frank Dellaert a3de1964d7 BIG CHANGE:
1) eliminate methods no longer return a shared pointer. Shared pointers are good for Factors and Conditionals (which are also non-copyable), because these are often passed around under the hood. However, a BayesNet is simple a list of shared pointers and hence does not cost a lot to return as an object (which is compiler-optimized anyway: there is no copy). So, the signature of all eliminate methods changed to simply return a BayesNet<> object (not a shared pointer).

2) GaussianBayesNet::optimize is now replaced by optimize(GaussianBayesNet) and returns a VectorConfig and not a shared pointer

3) GaussianBayesNet and SymbolicBayesNet are now simply typedefs, not derived classes. This is desirable because the BayesTree class uses templated methods that return BayesNet<Conditional>, not a specific BayesNet derived class.
2009-11-09 07:04:26 +00:00
Frank Dellaert 532be063f9 new templated function combine 2009-11-08 02:50:19 +00:00
Frank Dellaert cc5a2c3183 Renamed double-templated functions to _eliminate and _eliminateOne, and created FactorGraph-specific eliminateOne methods to make life easier 2009-11-07 21:03:30 +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 7f516394df Added dummy argument to work around compile conundrum 2009-11-05 06:30:10 +00:00
Frank Dellaert 3d334401f5 Constructor from BayesNet now in FactorGraph base class
FactorGraph::eliminate
Removed eliminate_partially
2009-11-05 04:56:59 +00:00
Richard Roberts e2414561be Merged r895:900 from branch weightedQR - LinearFactorGraph now has sigmas and ConditionalGaussian now has precisions 2009-11-04 20:59:16 +00:00
Frank Dellaert 80b162a412 LinearFactorGraph::eliminate_one is now FactorGraph::eliminateOne<ConditionalGaussian>
Symbolic version FactorGraph::eliminateOne<SymbolicConditional> also implemented and tested
2009-10-29 14:34:34 +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 f0c23a2828 Moved [factors] to FactorGraph 2009-10-29 04:49: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 94da98411c Fixed NULL problem 2009-10-27 20:22:02 +00:00
Frank Dellaert 3b30fe50b0 Moved print and equals to -inl.h 2009-10-25 22:27:18 +00:00
Chris Beall 52bedcad3a order 1 factors by using map 2009-10-22 21:33:00 +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