diff --git a/.cproject b/.cproject index 2e1833b0a..176d38a6e 100644 --- a/.cproject +++ b/.cproject @@ -300,6 +300,102 @@ + + make + + all + true + true + true + + + make + + clean + true + true + true + + + make + + check + true + true + true + + + make + + testGaussianConditional.run + true + true + true + + + make + + testGaussianFactor.run + true + true + true + + + make + + timeGaussianFactor.run + true + true + true + + + make + + timeVectorConfig.run + true + true + true + + + make + + testVectorBTree.run + true + true + true + + + make + + testVectorMap.run + true + true + true + + + make + + testNoiseModel.run + true + true + true + + + make + + testBayesNetPreconditioner.run + true + true + true + + + make + + testErrors.run + true + false + true + make check @@ -378,6 +474,110 @@ true true + + make + + clean + true + true + true + + + make + -k + check + true + false + true + + + make + + testBayesTree.run + true + false + true + + + make + + testBinaryBayesNet.run + true + false + true + + + make + + testFactorGraph.run + true + true + true + + + make + + testISAM.run + true + true + true + + + make + + testJunctionTree.run + true + true + true + + + make + + testKey.run + true + true + true + + + make + + testOrdering.run + true + true + true + + + make + + testSymbolicBayesNet.run + true + false + true + + + make + + testSymbolicFactor.run + true + false + true + + + make + + testSymbolicFactorGraph.run + true + false + true + + + make + + timeSymbolMaps.run + true + true + true + make check @@ -540,6 +740,30 @@ true true + + make + + testNonlinearConstraint.run + true + true + true + + + make + + testLieConfig.run + true + true + true + + + make + + testConstraintOptimizer.run + true + true + true + make @@ -584,204 +808,6 @@ true true - - make - -k - check - true - false - true - - - make - -j2 - testGaussianConditional.run - true - true - true - - - make - -j2 - testGaussianFactor.run - true - true - true - - - make - -j2 - testVectorMap.run - true - true - true - - - make - -j2 - timeGaussianFactor.run - true - true - true - - - make - testBayesTree.run - true - false - true - - - make - - testSymbolicBayesNet.run - true - false - true - - - make - testSymbolicFactorGraph.run - true - false - true - - - make - -j2 - testNonlinearConstraint.run - true - true - true - - - make - -j2 - testOrdering.run - true - true - true - - - make - -j2 - testBayesNetPreconditioner.run - true - true - true - - - make - -j2 - testLieConfig.run - true - true - true - - - make - -j2 - testNoiseModel.run - true - true - true - - - make - -j2 - testISAM.run - true - true - true - - - make - -j2 - testKey.run - true - true - true - - - make - -j2 - timeVectorConfig.run - true - true - true - - - make - -j2 - testVectorBTree.run - true - true - true - - - make - testErrors.run - true - false - true - - - make - -j2 - testFactorGraph.run - true - true - true - - - make - testConstraintOptimizer.run - true - true - true - - - make - clean - true - true - true - - - make - all - true - true - true - - - make - testSymbolicFactor.run - true - false - true - - - make - testBinaryBayesNet.run - true - false - true - - - make - testJunctionTree.run - true - true - true - - - make - timeSymbolMaps.run - true - true - true - make all diff --git a/Makefile.am b/Makefile.am index 4482f1c0b..5cc4c5388 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,12 +9,12 @@ ACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = foreign # All the sub-directories that need to be built -SUBDIRS = CppUnitLite colamd ldl spqr_mini base inference geometry nonlinear slam . tests wrap +SUBDIRS = CppUnitLite colamd ldl spqr_mini base geometry inference linear nonlinear slam . tests wrap # And the corresponding libraries produced SUBLIBS = colamd/libcolamd.la ldl/libldl.la \ - base/libbase.la inference/libinference.la \ - geometry/libgeometry.la nonlinear/libnonlinear.la slam/libslam.la + base/libbase.la geometry/libgeometry.la inference/libinference.la \ + linear/liblinear.la nonlinear/libnonlinear.la slam/libslam.la if USE_LAPACK SUBLIBS += spqr_mini/libspqr_mini.la diff --git a/configure.ac b/configure.ac index 6e64b2270..22b54b079 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_PREREQ(2.59) AC_INIT(gtsam, 0.0.0, dellaert@cc.gatech.edu) AM_INIT_AUTOMAKE(gtsam, 0.0.0) -AC_OUTPUT(Makefile CppUnitLite/Makefile colamd/Makefile ldl/Makefile spqr_mini/Makefile base/Makefile inference/Makefile geometry/Makefile nonlinear/Makefile slam/Makefile tests/Makefile wrap/Makefile) +AC_OUTPUT(Makefile CppUnitLite/Makefile colamd/Makefile ldl/Makefile spqr_mini/Makefile base/Makefile inference/Makefile linear/Makefile geometry/Makefile nonlinear/Makefile slam/Makefile tests/Makefile wrap/Makefile) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADER([config.h]) AC_CONFIG_SRCDIR([CppUnitLite/Test.cpp]) @@ -13,7 +13,8 @@ AC_CONFIG_SRCDIR([ldl/ldl.cpp]) AC_CONFIG_SRCDIR([spqr_mini/spqr_front.cpp]) AC_CONFIG_SRCDIR([base/DSFVector.cpp]) AC_CONFIG_SRCDIR([geometry/Cal3_S2.cpp]) -AC_CONFIG_SRCDIR([inference/GaussianFactor.cpp]) +AC_CONFIG_SRCDIR([inference/SymbolicFactor.cpp]) +AC_CONFIG_SRCDIR([linear/GaussianFactor.cpp]) AC_CONFIG_SRCDIR([nonlinear/ConstraintOptimizer.cpp]) AC_CONFIG_SRCDIR([slam/pose2SLAM.cpp]) AC_CONFIG_SRCDIR([tests/testSQP.cpp]) diff --git a/inference/ISAM.h b/inference/ISAM.h index c70529a9d..de19dfa04 100644 --- a/inference/ISAM.h +++ b/inference/ISAM.h @@ -19,7 +19,6 @@ #include "FactorGraph.h" #include "BayesNet.h" #include "BayesTree.h" -#include "VectorConfig.h" namespace gtsam { diff --git a/inference/Makefile.am b/inference/Makefile.am index f2d4a9d2c..b3eb3178c 100644 --- a/inference/Makefile.am +++ b/inference/Makefile.am @@ -1,5 +1,5 @@ #---------------------------------------------------------------------------------------------------- -# GTSAM core functionality: discrete, linear, and non-linear +# GTSAM core functionality: base classes for inference, as well as symbolic and discrete #---------------------------------------------------------------------------------------------------- headers = @@ -25,12 +25,11 @@ headers += inference.h inference-inl.h headers += graph.h graph-inl.h headers += FactorGraph.h FactorGraph-inl.h headers += JunctionTree.h JunctionTree-inl.h -headers += GaussianJunctionTree.h GaussianJunctionTree-inl.h headers += BayesNet.h BayesNet-inl.h headers += BayesTree.h BayesTree-inl.h headers += ISAM.h ISAM-inl.h headers += ISAM2.h ISAM2-inl.h -check_PROGRAMS += testFactorGraph testGaussianJunctionTree testOrdering +check_PROGRAMS += testFactorGraph testOrdering check_PROGRAMS += testBayesTree testISAM #---------------------------------------------------------------------------------------------------- @@ -41,25 +40,8 @@ check_PROGRAMS += testBayesTree testISAM headers += BinaryConditional.h check_PROGRAMS += testBinaryBayesNet -#---------------------------------------------------------------------------------------------------- -# linear -#---------------------------------------------------------------------------------------------------- - -# Gaussian inference -headers += GaussianFactorSet.h SharedGaussian.h SharedDiagonal.h VectorConfig.h Factorization.h -sources += NoiseModel.cpp Errors.cpp VectorMap.cpp VectorBTree.cpp GaussianFactor.cpp -sources += GaussianFactorGraph.cpp GaussianConditional.cpp GaussianBayesNet.cpp -sources += GaussianISAM.cpp -check_PROGRAMS += testVectorMap testVectorBTree testGaussianFactor -check_PROGRAMS += testGaussianConditional testNoiseModel testErrors - -# Iterative Methods -headers += iterative-inl.h SubgraphSolver.h SubgraphSolver-inl.h -sources += iterative.cpp BayesNetPreconditioner.cpp SubgraphPreconditioner.cpp -check_PROGRAMS += testBayesNetPreconditioner - # Timing tests -noinst_PROGRAMS = timeGaussianFactor timeSymbolMaps timeVectorConfig +noinst_PROGRAMS = timeSymbolMaps #---------------------------------------------------------------------------------------------------- # Create a libtool library that is not installed diff --git a/inference/inference-inl.h b/inference/inference-inl.h index 0ec66d98b..a29208970 100644 --- a/inference/inference-inl.h +++ b/inference/inference-inl.h @@ -10,7 +10,6 @@ #include "FactorGraph-inl.h" #include "BayesNet-inl.h" #include "Key.h" -#include "GaussianFactorGraph.h" using namespace std; diff --git a/inference/testISAM.cpp b/inference/testISAM.cpp index 4ee823161..53028809e 100644 --- a/inference/testISAM.cpp +++ b/inference/testISAM.cpp @@ -15,7 +15,6 @@ using namespace boost::assign; #include "SymbolicBayesNet.h" #include "SymbolicFactorGraph.h" #include "Ordering.h" -#include "GaussianBayesNet.h" #include "ISAM-inl.h" using namespace std; diff --git a/inference/BayesNetPreconditioner.cpp b/linear/BayesNetPreconditioner.cpp similarity index 100% rename from inference/BayesNetPreconditioner.cpp rename to linear/BayesNetPreconditioner.cpp diff --git a/inference/BayesNetPreconditioner.h b/linear/BayesNetPreconditioner.h similarity index 100% rename from inference/BayesNetPreconditioner.h rename to linear/BayesNetPreconditioner.h diff --git a/inference/Errors.cpp b/linear/Errors.cpp similarity index 100% rename from inference/Errors.cpp rename to linear/Errors.cpp diff --git a/inference/Errors.h b/linear/Errors.h similarity index 100% rename from inference/Errors.h rename to linear/Errors.h diff --git a/inference/Factorization.h b/linear/Factorization.h similarity index 100% rename from inference/Factorization.h rename to linear/Factorization.h diff --git a/inference/GaussianBayesNet.cpp b/linear/GaussianBayesNet.cpp similarity index 100% rename from inference/GaussianBayesNet.cpp rename to linear/GaussianBayesNet.cpp diff --git a/inference/GaussianBayesNet.h b/linear/GaussianBayesNet.h similarity index 100% rename from inference/GaussianBayesNet.h rename to linear/GaussianBayesNet.h diff --git a/inference/GaussianConditional.cpp b/linear/GaussianConditional.cpp similarity index 100% rename from inference/GaussianConditional.cpp rename to linear/GaussianConditional.cpp diff --git a/inference/GaussianConditional.h b/linear/GaussianConditional.h similarity index 100% rename from inference/GaussianConditional.h rename to linear/GaussianConditional.h diff --git a/inference/GaussianFactor.cpp b/linear/GaussianFactor.cpp similarity index 100% rename from inference/GaussianFactor.cpp rename to linear/GaussianFactor.cpp diff --git a/inference/GaussianFactor.h b/linear/GaussianFactor.h similarity index 100% rename from inference/GaussianFactor.h rename to linear/GaussianFactor.h diff --git a/inference/GaussianFactorGraph.cpp b/linear/GaussianFactorGraph.cpp similarity index 100% rename from inference/GaussianFactorGraph.cpp rename to linear/GaussianFactorGraph.cpp diff --git a/inference/GaussianFactorGraph.h b/linear/GaussianFactorGraph.h similarity index 100% rename from inference/GaussianFactorGraph.h rename to linear/GaussianFactorGraph.h diff --git a/inference/GaussianFactorSet.h b/linear/GaussianFactorSet.h similarity index 100% rename from inference/GaussianFactorSet.h rename to linear/GaussianFactorSet.h diff --git a/inference/GaussianISAM.cpp b/linear/GaussianISAM.cpp similarity index 100% rename from inference/GaussianISAM.cpp rename to linear/GaussianISAM.cpp diff --git a/inference/GaussianISAM.h b/linear/GaussianISAM.h similarity index 100% rename from inference/GaussianISAM.h rename to linear/GaussianISAM.h diff --git a/inference/GaussianJunctionTree-inl.h b/linear/GaussianJunctionTree-inl.h similarity index 100% rename from inference/GaussianJunctionTree-inl.h rename to linear/GaussianJunctionTree-inl.h diff --git a/inference/GaussianJunctionTree.h b/linear/GaussianJunctionTree.h similarity index 100% rename from inference/GaussianJunctionTree.h rename to linear/GaussianJunctionTree.h diff --git a/linear/Makefile.am b/linear/Makefile.am new file mode 100644 index 000000000..e9034d996 --- /dev/null +++ b/linear/Makefile.am @@ -0,0 +1,64 @@ +#---------------------------------------------------------------------------------------------------- +# GTSAM linear: inference in Gaussian factor graphs +#---------------------------------------------------------------------------------------------------- + +headers = +sources = +check_PROGRAMS = + +# Noise Model +headers += SharedGaussian.h SharedDiagonal.h +sources += NoiseModel.cpp Errors.cpp +check_PROGRAMS += testNoiseModel testErrors + +# Vector Configurations +headers += VectorConfig.h +sources += VectorMap.cpp VectorBTree.cpp +check_PROGRAMS += testVectorMap testVectorBTree + +# Gaussian Factor Graphs +headers += GaussianFactorSet.h Factorization.h +sources += GaussianFactor.cpp GaussianFactorGraph.cpp +headers += GaussianJunctionTree.h GaussianJunctionTree-inl.h +sources += GaussianConditional.cpp GaussianBayesNet.cpp +sources += GaussianISAM.cpp +check_PROGRAMS += testGaussianFactor testGaussianJunctionTree testGaussianConditional + +# Iterative Methods +headers += iterative-inl.h SubgraphSolver.h SubgraphSolver-inl.h +sources += iterative.cpp BayesNetPreconditioner.cpp SubgraphPreconditioner.cpp +check_PROGRAMS += testBayesNetPreconditioner + +# Timing tests +noinst_PROGRAMS = timeGaussianFactor timeVectorConfig + +#---------------------------------------------------------------------------------------------------- +# Create a libtool library that is not installed +# It will be packaged in the toplevel libgtsam.la as specfied in ../Makefile.am +# The headers are installed in $(includedir)/gtsam: +#---------------------------------------------------------------------------------------------------- +headers += $(sources:.cpp=.h) +pkginclude_HEADERS = $(headers) +noinst_LTLIBRARIES = liblinear.la +liblinear_la_SOURCES = $(sources) +AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference +AM_CXXFLAGS = + +#---------------------------------------------------------------------------------------------------- +# rules to build local programs +#---------------------------------------------------------------------------------------------------- +TESTS = $(check_PROGRAMS) +AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization) +LDADD = liblinear.la ../inference/libinference.la ../base/libbase.la +LDADD += ../CppUnitLite/libCppUnitLite.a ../colamd/libcolamd.la ../ldl/libldl.la +AM_DEFAULT_SOURCE_EXT = .cpp + +# rule to run an executable +%.run: % $(LDADD) + ./$^ + +if USE_LAPACK +AM_CXXFLAGS += -DGT_USE_LAPACK +LDADD += ../spqr_mini/libspqr_mini.la +endif + diff --git a/inference/NoiseModel.cpp b/linear/NoiseModel.cpp similarity index 100% rename from inference/NoiseModel.cpp rename to linear/NoiseModel.cpp diff --git a/inference/NoiseModel.h b/linear/NoiseModel.h similarity index 100% rename from inference/NoiseModel.h rename to linear/NoiseModel.h diff --git a/inference/SharedDiagonal.h b/linear/SharedDiagonal.h similarity index 100% rename from inference/SharedDiagonal.h rename to linear/SharedDiagonal.h diff --git a/inference/SharedGaussian.h b/linear/SharedGaussian.h similarity index 100% rename from inference/SharedGaussian.h rename to linear/SharedGaussian.h diff --git a/inference/SubgraphPreconditioner.cpp b/linear/SubgraphPreconditioner.cpp similarity index 100% rename from inference/SubgraphPreconditioner.cpp rename to linear/SubgraphPreconditioner.cpp diff --git a/inference/SubgraphPreconditioner.h b/linear/SubgraphPreconditioner.h similarity index 100% rename from inference/SubgraphPreconditioner.h rename to linear/SubgraphPreconditioner.h diff --git a/inference/SubgraphSolver-inl.h b/linear/SubgraphSolver-inl.h similarity index 100% rename from inference/SubgraphSolver-inl.h rename to linear/SubgraphSolver-inl.h diff --git a/inference/SubgraphSolver.h b/linear/SubgraphSolver.h similarity index 100% rename from inference/SubgraphSolver.h rename to linear/SubgraphSolver.h diff --git a/inference/VectorBTree.cpp b/linear/VectorBTree.cpp similarity index 100% rename from inference/VectorBTree.cpp rename to linear/VectorBTree.cpp diff --git a/inference/VectorBTree.h b/linear/VectorBTree.h similarity index 100% rename from inference/VectorBTree.h rename to linear/VectorBTree.h diff --git a/inference/VectorConfig.h b/linear/VectorConfig.h similarity index 100% rename from inference/VectorConfig.h rename to linear/VectorConfig.h diff --git a/inference/VectorMap.cpp b/linear/VectorMap.cpp similarity index 100% rename from inference/VectorMap.cpp rename to linear/VectorMap.cpp diff --git a/inference/VectorMap.h b/linear/VectorMap.h similarity index 100% rename from inference/VectorMap.h rename to linear/VectorMap.h diff --git a/inference/iterative-inl.h b/linear/iterative-inl.h similarity index 100% rename from inference/iterative-inl.h rename to linear/iterative-inl.h diff --git a/inference/iterative.cpp b/linear/iterative.cpp similarity index 100% rename from inference/iterative.cpp rename to linear/iterative.cpp diff --git a/inference/iterative.h b/linear/iterative.h similarity index 100% rename from inference/iterative.h rename to linear/iterative.h diff --git a/inference/testBayesNetPreconditioner.cpp b/linear/testBayesNetPreconditioner.cpp similarity index 100% rename from inference/testBayesNetPreconditioner.cpp rename to linear/testBayesNetPreconditioner.cpp diff --git a/inference/testErrors.cpp b/linear/testErrors.cpp similarity index 100% rename from inference/testErrors.cpp rename to linear/testErrors.cpp diff --git a/inference/testGaussianConditional.cpp b/linear/testGaussianConditional.cpp similarity index 100% rename from inference/testGaussianConditional.cpp rename to linear/testGaussianConditional.cpp diff --git a/inference/testGaussianFactor.cpp b/linear/testGaussianFactor.cpp similarity index 99% rename from inference/testGaussianFactor.cpp rename to linear/testGaussianFactor.cpp index 8d956d0b0..d975d9e9f 100644 --- a/inference/testGaussianFactor.cpp +++ b/linear/testGaussianFactor.cpp @@ -19,7 +19,8 @@ using namespace boost::assign; #include "Matrix.h" #include "Ordering.h" -#include "GaussianConditional.h" +#include "GaussianFactorGraph.h" +#include "SharedDiagonal.h" #include "inference-inl.h" using namespace std; diff --git a/inference/testGaussianJunctionTree.cpp b/linear/testGaussianJunctionTree.cpp similarity index 100% rename from inference/testGaussianJunctionTree.cpp rename to linear/testGaussianJunctionTree.cpp diff --git a/inference/testNoiseModel.cpp b/linear/testNoiseModel.cpp similarity index 100% rename from inference/testNoiseModel.cpp rename to linear/testNoiseModel.cpp diff --git a/inference/testVectorBTree.cpp b/linear/testVectorBTree.cpp similarity index 100% rename from inference/testVectorBTree.cpp rename to linear/testVectorBTree.cpp diff --git a/inference/testVectorMap.cpp b/linear/testVectorMap.cpp similarity index 100% rename from inference/testVectorMap.cpp rename to linear/testVectorMap.cpp diff --git a/inference/timeGaussianFactor.cpp b/linear/timeGaussianFactor.cpp similarity index 100% rename from inference/timeGaussianFactor.cpp rename to linear/timeGaussianFactor.cpp diff --git a/inference/timeVectorConfig.cpp b/linear/timeVectorConfig.cpp similarity index 100% rename from inference/timeVectorConfig.cpp rename to linear/timeVectorConfig.cpp diff --git a/nonlinear/Makefile.am b/nonlinear/Makefile.am index e52bb1c97..0f953e18f 100644 --- a/nonlinear/Makefile.am +++ b/nonlinear/Makefile.am @@ -38,7 +38,7 @@ headers += $(sources:.cpp=.h) pkginclude_HEADERS = $(headers) noinst_LTLIBRARIES = libnonlinear.la libnonlinear_la_SOURCES = $(sources) -AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference +AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference -I../linear AM_CXXFLAGS = #---------------------------------------------------------------------------------------------------- @@ -46,7 +46,7 @@ AM_CXXFLAGS = #---------------------------------------------------------------------------------------------------- TESTS = $(check_PROGRAMS) AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization) -LDADD = libnonlinear.la ../inference/libinference.la ../base/libbase.la +LDADD = libnonlinear.la ../linear/liblinear.la ../inference/libinference.la ../base/libbase.la LDADD += ../CppUnitLite/libCppUnitLite.a ../colamd/libcolamd.la ../ldl/libldl.la AM_DEFAULT_SOURCE_EXT = .cpp diff --git a/slam/Makefile.am b/slam/Makefile.am index 7352a558e..2aebc2864 100644 --- a/slam/Makefile.am +++ b/slam/Makefile.am @@ -56,7 +56,7 @@ headers += $(sources:.cpp=.h) pkginclude_HEADERS = $(headers) noinst_LTLIBRARIES = libslam.la libslam_la_SOURCES = $(sources) -AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference -I../nonlinear -I../geometry +AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference -I../linear -I../nonlinear -I../geometry #---------------------------------------------------------------------------------------------------- # rules to build local programs @@ -64,7 +64,7 @@ AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference -I../nonlinear -I TESTS = $(check_PROGRAMS) AM_DEFAULT_SOURCE_EXT = .cpp AM_LDFLAGS = $(BOOST_LDFLAGS) $(boost_serialization) -LDADD = libslam.la ../geometry/libgeometry.la ../inference/libinference.la ../nonlinear/libnonlinear.la ../base/libbase.la +LDADD = libslam.la ../geometry/libgeometry.la ../nonlinear/libnonlinear.la ../linear/liblinear.la ../inference/libinference.la ../base/libbase.la LDADD += ../CppUnitLite/libCppUnitLite.a ../ldl/libldl.la ../colamd/libcolamd.la if USE_LAPACK diff --git a/tests/Makefile.am b/tests/Makefile.am index 7a995d7bb..3002e398a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,7 +20,8 @@ noinst_PROGRAMS = timeGaussianFactorGraph noinst_HEADERS = smallExample.h noinst_LIBRARIES = libtests.a libtests_a_SOURCES = smallExample.cpp -AM_CPPFLAGS = -I$(boost) -I../colamd -I../base -I../inference -I../nonlinear -I../geometry -I../nonlinear -I../slam +AM_CPPFLAGS = -I$(boost) -I../colamd +AM_CPPFLAGS += -I../base -I../geometry -I../inference -I../linear -I../nonlinear -I../slam #---------------------------------------------------------------------------------------------------- # rules to build unit tests