diff --git a/.cproject b/.cproject
index bc7ae6d9a..1ac3c8ca9 100644
--- a/.cproject
+++ b/.cproject
@@ -2436,6 +2436,22 @@
true
true
+
+ make
+ -j6 -j8
+ gtsam_unstable-shared
+ true
+ true
+ true
+
+
+ make
+ -j6 -j8
+ gtsam_unstable-static
+ true
+ true
+ true
+
make
-j5
diff --git a/gtsam_unstable/CMakeLists.txt b/gtsam_unstable/CMakeLists.txt
index 07a913355..bc120756b 100644
--- a/gtsam_unstable/CMakeLists.txt
+++ b/gtsam_unstable/CMakeLists.txt
@@ -7,7 +7,7 @@ set (gtsam_unstable_subdirs
linear
dynamics
nonlinear
- slam
+ #slam
)
set(GTSAM_UNSTABLE_BOOST_LIBRARIES ${GTSAM_BOOST_LIBRARIES})
@@ -19,10 +19,26 @@ add_custom_target(check.unstable COMMAND ${CMAKE_CTEST_COMMAND} --output-on-fail
# Sources to remove from builds
set (excluded_sources # "")
"${CMAKE_CURRENT_SOURCE_DIR}/slam/serialization.cpp"
+
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/BatchFixedLagSmoother.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentBatchFilter.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentBatchSmoother.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentFilteringAndSmoothing.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/FixedLagSmoother.cpp"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/IncrementalFixedLagSmoother.cpp"
+# "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/LinearizedFactor.cpp"
)
set (excluded_headers # "")
"${CMAKE_CURRENT_SOURCE_DIR}/slam/serialization.h"
+
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/BatchFixedLagSmoother.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentBatchFilter.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentBatchSmoother.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/ConcurrentFilteringAndSmoothing.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/FixedLagSmoother.h"
+ "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/IncrementalFixedLagSmoother.h"
+# "${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/LinearizedFactor.h"
)
# assemble core libaries
diff --git a/gtsam_unstable/linear/bayesTreeOperations.cpp b/gtsam_unstable/linear/bayesTreeOperations.cpp
index c2e84dec3..d9c9eda32 100644
--- a/gtsam_unstable/linear/bayesTreeOperations.cpp
+++ b/gtsam_unstable/linear/bayesTreeOperations.cpp
@@ -13,14 +13,6 @@ using namespace std;
namespace gtsam {
-/* ************************************************************************* */
-std::set keysToIndices(const KeySet& keys, const Ordering& ordering) {
- std::set result;
- BOOST_FOREACH(const Key& key, keys)
- result.insert(ordering[key]);
- return result;
-}
-
/* ************************************************************************* */
GaussianFactorGraph splitFactors(const GaussianFactorGraph& fullgraph) {
GaussianFactorGraph result;
@@ -55,9 +47,9 @@ GaussianFactorGraph splitFactor(const GaussianFactor::shared_ptr& factor) {
size_t nrRows = std::min(rowsRemaining, varDim);
// Extract submatrices
- std::vector > matrices;
+ std::vector > matrices;
for (colIt = rowIt; colIt != jf->end(); ++colIt) {
- Index idx = *colIt;
+ Key idx = *colIt;
const Matrix subA = jf->getA(colIt).middleRows(startRow, nrRows);
matrices.push_back(make_pair(idx, subA));
}
@@ -103,11 +95,11 @@ void findCliques(const GaussianBayesTree::sharedClique& current_clique,
/* ************************************************************************* */
std::set findAffectedCliqueConditionals(
- const GaussianBayesTree& bayesTree, const std::set& savedIndices) {
+ const GaussianBayesTree& bayesTree, const std::set& savedIndices) {
std::set affected_cliques;
// FIXME: track previously found keys more efficiently
- BOOST_FOREACH(const Index& index, savedIndices) {
- GaussianBayesTree::sharedClique clique = bayesTree.nodes()[index];
+ BOOST_FOREACH(const Key& index, savedIndices) {
+ GaussianBayesTree::sharedClique clique = bayesTree[index];
// add path back to root to affected set
findCliques(clique, affected_cliques);
diff --git a/gtsam_unstable/linear/bayesTreeOperations.h b/gtsam_unstable/linear/bayesTreeOperations.h
index 3f85dc12c..b29ead520 100644
--- a/gtsam_unstable/linear/bayesTreeOperations.h
+++ b/gtsam_unstable/linear/bayesTreeOperations.h
@@ -12,15 +12,9 @@
#include
#include
#include
-#include
namespace gtsam {
-// Managing orderings
-
-/** Converts sets of keys to indices by way of orderings */
-GTSAM_UNSTABLE_EXPORT std::set keysToIndices(const KeySet& keys, const Ordering& ordering);
-
// Linear Graph Operations
/**
@@ -47,7 +41,7 @@ GTSAM_UNSTABLE_EXPORT GaussianFactorGraph removePriors(const GaussianFactorGraph
* @return the set of conditionals extracted from cliques.
*/
GTSAM_UNSTABLE_EXPORT std::set findAffectedCliqueConditionals(
- const GaussianBayesTree& bayesTree, const std::set& savedIndices);
+ const GaussianBayesTree& bayesTree, const std::set& savedIndices);
/**
* Recursively traverses from a given clique in a Bayes Tree and collects all of the conditionals
@@ -78,9 +72,9 @@ GaussianFactorGraph liquefy(const typename BAYESTREE::sharedClique& root, bool s
if (root && root->conditional()) {
GaussianConditional::shared_ptr conditional = root->conditional();
if (!splitConditionals)
- result.push_back(conditional->toFactor());
+ result.push_back(conditional);
else
- result.push_back(splitFactor(conditional->toFactor()));
+ result.push_back(splitFactor(conditional));
}
BOOST_FOREACH(const typename BAYESTREE::sharedClique& child, root->children())
result.push_back(liquefy(child, splitConditionals));
diff --git a/gtsam_unstable/linear/conditioning.cpp b/gtsam_unstable/linear/conditioning.cpp
index c02f4d48c..63871776c 100644
--- a/gtsam_unstable/linear/conditioning.cpp
+++ b/gtsam_unstable/linear/conditioning.cpp
@@ -8,13 +8,16 @@
#include
#include
+#include
+
using namespace std;
+using namespace boost::assign;
namespace gtsam {
/* ************************************************************************* */
GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shared_ptr& initConditional,
- const std::set& saved_indices, const VectorValues& solution) {
+ const std::set& saved_indices, const VectorValues& solution) {
const bool verbose = false;
if (!initConditional)
@@ -26,12 +29,12 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
}
// Check for presence of variables to remove
- std::set frontalsToRemove, parentsToRemove;
- BOOST_FOREACH(const Index& frontal, initConditional->frontals())
+ std::set frontalsToRemove, parentsToRemove;
+ BOOST_FOREACH(const Key& frontal, initConditional->frontals())
if (!saved_indices.count(frontal))
frontalsToRemove.insert(frontal);
- BOOST_FOREACH(const Index& parent, initConditional->parents())
+ BOOST_FOREACH(const Key& parent, initConditional->parents())
if (!saved_indices.count(parent))
parentsToRemove.insert(parent);
@@ -50,14 +53,14 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
size_t oldOffset = 0;
vector newDims, oldDims;
vector oldColOffsets;
- vector newIndices;
+ vector newIndices;
vector newIdxToOldIdx; // Access to arrays, maps from new var to old var
- const vector& oldIndices = initConditional->keys();
+ const vector& oldIndices = initConditional->keys();
const size_t oldNrFrontals = initConditional->nrFrontals();
GaussianConditional::const_iterator varIt = initConditional->beginFrontals();
size_t oldIdx = 0;
for (; varIt != initConditional->endFrontals(); ++varIt) {
- size_t varDim = initConditional->dim(varIt);
+ size_t varDim = initConditional->getDim(varIt);
oldDims += varDim;
if (!frontalsToRemove.count(*varIt)) {
newTotalCols += varDim;
@@ -73,7 +76,7 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
}
varIt = initConditional->beginParents();
for (; varIt != initConditional->endParents(); ++varIt) {
- size_t varDim = initConditional->dim(varIt);
+ size_t varDim = initConditional->getDim(varIt);
oldDims += varDim;
if (!parentsToRemove.count(*varIt)) {
newTotalCols += varDim;
@@ -99,7 +102,7 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
size_t oldColOffset = oldColOffsets.at(newfrontalIdx);
// get R block, sliced by row
- Eigen::Block rblock =
+ Eigen::Block rblock =
initConditional->get_R().block(oldColOffset, oldColOffset, dim, oldRNrCols-oldColOffset);
if (verbose) cout << " rblock\n" << rblock << endl;
@@ -113,14 +116,14 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
if (verbose) cout << " full_matrix: set rhs\n" << full_matrix << endl;
// set sigmas
- sigmas.segment(newColOffset, dim) = initConditional->get_sigmas().segment(oldColOffset, dim);
+ sigmas.segment(newColOffset, dim) = initConditional->get_model()->sigmas().segment(oldColOffset, dim);
// add parents in R block, while updating rhs
// Loop through old variable list
size_t newParentStartCol = newColOffset + dim;
size_t oldParentStartCol = dim; // Copying from Rblock - offset already accounted for
for (size_t oldIdx = newIdxToOldIdx[newfrontalIdx]+1; oldIdxbeginParents();
for (; oldParent != initConditional->endParents(); ++oldParent) {
- Index parentKey = *oldParent;
- size_t parentDim = initConditional->dim(oldParent);
+ Key parentKey = *oldParent;
+ size_t parentDim = initConditional->getDim(oldParent);
if (verbose) cout << " Adding parents from S: parentKey: " << parentKey << " parentDim: " << parentDim << endl;
if (parentsToRemove.count(parentKey)) {
// Solve out the variable
@@ -169,17 +172,18 @@ GaussianConditional::shared_ptr conditionDensity(const GaussianConditional::shar
// Construct a new conditional
if (verbose) cout << "backsubSummarize() Complete!" << endl;
- GaussianConditional::rsd_type matrices(full_matrix, newDims.begin(), newDims.end());
+// GaussianConditional::rsd_type matrices(full_matrix, newDims.begin(), newDims.end());
+ VerticalBlockMatrix matrices(newDims, full_matrix);
return GaussianConditional::shared_ptr(new
- GaussianConditional(newIndices.begin(), newIndices.end(), newNrFrontals, matrices, sigmas));
+ GaussianConditional(newIndices, newNrFrontals, matrices, noiseModel::Diagonal::Sigmas(sigmas)));
}
/* ************************************************************************* */
GaussianFactorGraph conditionDensity(const GaussianBayesTree& bayesTree,
- const std::set& saved_indices) {
+ const std::set& saved_indices) {
const bool verbose = false;
- VectorValues solution = optimize(bayesTree);
+ VectorValues solution = bayesTree.optimize();
// FIXME: set of conditionals does not manage possibility of solving out whole separators
std::set affected_cliques = findAffectedCliqueConditionals(bayesTree, saved_indices);
@@ -191,7 +195,7 @@ GaussianFactorGraph conditionDensity(const GaussianBayesTree& bayesTree,
GaussianConditional::shared_ptr reducedConditional = conditionDensity(conditional, saved_indices, solution);
if (reducedConditional) {
if (verbose) reducedConditional->print("Final conditional");
- summarized_graph.push_back(reducedConditional->toFactor());
+ summarized_graph.push_back(reducedConditional);
} else if (verbose) {
cout << "Conditional removed after summarization!" << endl;
}
diff --git a/gtsam_unstable/linear/conditioning.h b/gtsam_unstable/linear/conditioning.h
index fbd5d6918..22eeaaeb2 100644
--- a/gtsam_unstable/linear/conditioning.h
+++ b/gtsam_unstable/linear/conditioning.h
@@ -12,7 +12,6 @@
#include
#include
#include
-#include
namespace gtsam {
@@ -27,16 +26,18 @@ namespace gtsam {
* @param saved_indices is the set of indices that should appear in the result
* @param solution is a full solution for the system
*/
-GTSAM_UNSTABLE_EXPORT gtsam::GaussianConditional::shared_ptr conditionDensity(const gtsam::GaussianConditional::shared_ptr& initConditional,
- const std::set& saved_indices, const gtsam::VectorValues& solution);
+GTSAM_UNSTABLE_EXPORT GaussianConditional::shared_ptr conditionDensity(
+ const GaussianConditional::shared_ptr& initConditional,
+ const std::set& saved_indices, const VectorValues& solution);
/**
* Backsubstitution-based conditioning for a complete Bayes Tree - reduces
* conditionals by solving out variables to eliminate. Traverses the tree to
* add the correct dummy factors whenever a separator is eliminated.
*/
-GTSAM_UNSTABLE_EXPORT gtsam::GaussianFactorGraph conditionDensity(const gtsam::GaussianBayesTree& bayesTree,
- const std::set& saved_indices);
+GTSAM_UNSTABLE_EXPORT GaussianFactorGraph conditionDensity(
+ const GaussianBayesTree& bayesTree,
+ const std::set& saved_indices);
} // \namespace gtsam
diff --git a/gtsam_unstable/nonlinear/CMakeLists.txt b/gtsam_unstable/nonlinear/CMakeLists.txt
index e40ffdc09..2a7aa37dc 100644
--- a/gtsam_unstable/nonlinear/CMakeLists.txt
+++ b/gtsam_unstable/nonlinear/CMakeLists.txt
@@ -19,7 +19,14 @@ set (nonlinear_full_libs
${gtsam_unstable-default})
# Exclude tests that don't work
-set (nonlinear_excluded_tests "")
+set (nonlinear_excluded_tests #"")
+"${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/test/testBatchFixedLagSmoother.cpp"
+"${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/test/testConcurrentBatchFilter.cpp"
+"${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/test/testConcurrentBatchSmoother.cpp"
+"${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/test/testIncrementalFixedLagSmoother.cpp"
+#"${CMAKE_CURRENT_SOURCE_DIR}/nonlinear/test/testLinearizedFactor.cpp"
+)
+
# Add all tests
gtsam_add_subdir_tests(nonlinear_unstable "${nonlinear_local_libs}" "${nonlinear_full_libs}" "${nonlinear_excluded_tests}")
diff --git a/gtsam_unstable/nonlinear/LinearizedFactor.cpp b/gtsam_unstable/nonlinear/LinearizedFactor.cpp
index eb5a83c79..1c486f3a0 100644
--- a/gtsam_unstable/nonlinear/LinearizedFactor.cpp
+++ b/gtsam_unstable/nonlinear/LinearizedFactor.cpp
@@ -22,38 +22,31 @@
namespace gtsam {
/* ************************************************************************* */
-LinearizedGaussianFactor::LinearizedGaussianFactor(const GaussianFactor::shared_ptr& gaussian, const Ordering& ordering, const Values& lin_points) {
+LinearizedGaussianFactor::LinearizedGaussianFactor(
+ const GaussianFactor::shared_ptr& gaussian, const Values& lin_points)
+: NonlinearFactor(gaussian->keys())
+{
// Extract the keys and linearization points
- BOOST_FOREACH(const Index& idx, gaussian->keys()) {
- // find full symbol
- if (idx < ordering.size()) {
- Key key = ordering.key(idx);
-
- // extract linearization point
- assert(lin_points.exists(key));
- this->lin_points_.insert(key, lin_points.at(key));
-
- // store keys
- this->keys_.push_back(key);
- } else {
- throw std::runtime_error("LinearizedGaussianFactor: could not find index in decoder!");
- }
+ BOOST_FOREACH(const Key& key, gaussian->keys()) {
+ // extract linearization point
+ assert(lin_points.exists(key));
+ this->lin_points_.insert(key, lin_points.at(key));
}
}
-
-
+/* ************************************************************************* */
+// LinearizedJacobianFactor
/* ************************************************************************* */
LinearizedJacobianFactor::LinearizedJacobianFactor() : Ab_(matrix_) {
}
/* ************************************************************************* */
-LinearizedJacobianFactor::LinearizedJacobianFactor(const JacobianFactor::shared_ptr& jacobian,
- const Ordering& ordering, const Values& lin_points)
-: Base(jacobian, ordering, lin_points), Ab_(matrix_) {
+LinearizedJacobianFactor::LinearizedJacobianFactor(
+ const JacobianFactor::shared_ptr& jacobian, const Values& lin_points)
+: Base(jacobian, lin_points), Ab_(matrix_) {
// Get the Ab matrix from the Jacobian factor, with any covariance baked in
- AbMatrix fullMatrix = jacobian->matrix_augmented(true);
+ AbMatrix fullMatrix = jacobian->augmentedJacobian();
// Create the dims array
size_t *dims = (size_t *)alloca(sizeof(size_t) * (jacobian->size() + 1));
@@ -110,12 +103,12 @@ double LinearizedJacobianFactor::error(const Values& c) const {
/* ************************************************************************* */
boost::shared_ptr
-LinearizedJacobianFactor::linearize(const Values& c, const Ordering& ordering) const {
+LinearizedJacobianFactor::linearize(const Values& c) const {
// Create the 'terms' data structure for the Jacobian constructor
std::vector > terms;
BOOST_FOREACH(Key key, keys()) {
- terms.push_back(std::make_pair(ordering[key], this->A(key)));
+ terms.push_back(std::make_pair(key, this->A(key)));
}
// compute rhs
@@ -140,19 +133,16 @@ Vector LinearizedJacobianFactor::error_vector(const Values& c) const {
return errorVector;
}
-
-
-
-
-
+/* ************************************************************************* */
+// LinearizedHessianFactor
/* ************************************************************************* */
LinearizedHessianFactor::LinearizedHessianFactor() : info_(matrix_) {
}
/* ************************************************************************* */
-LinearizedHessianFactor::LinearizedHessianFactor(const HessianFactor::shared_ptr& hessian,
- const Ordering& ordering, const Values& lin_points)
-: Base(hessian, ordering, lin_points), info_(matrix_) {
+LinearizedHessianFactor::LinearizedHessianFactor(
+ const HessianFactor::shared_ptr& hessian, const Values& lin_points)
+: Base(hessian, lin_points), info_(matrix_) {
// Copy the augmented matrix holding G, g, and f
Matrix fullMatrix = hessian->info();
@@ -228,13 +218,7 @@ double LinearizedHessianFactor::error(const Values& c) const {
/* ************************************************************************* */
boost::shared_ptr
-LinearizedHessianFactor::linearize(const Values& c, const Ordering& ordering) const {
-
- // Use the ordering to convert the keys into indices;
- std::vector js;
- BOOST_FOREACH(Key key, this->keys()){
- js.push_back(ordering.at(key));
- }
+LinearizedHessianFactor::linearize(const Values& c) const {
// Make a copy of the info matrix
Matrix newMatrix;
@@ -275,7 +259,7 @@ LinearizedHessianFactor::linearize(const Values& c, const Ordering& ordering) co
// Create a Hessian Factor from the modified info matrix
//return boost::shared_ptr(new HessianFactor(js, newInfo));
- return boost::shared_ptr(new HessianFactor(js, Gs, gs, f));
+ return boost::shared_ptr(new HessianFactor(keys(), Gs, gs, f));
}
} // \namespace aspn
diff --git a/gtsam_unstable/nonlinear/LinearizedFactor.h b/gtsam_unstable/nonlinear/LinearizedFactor.h
index 330df0c6a..1c8d994f4 100644
--- a/gtsam_unstable/nonlinear/LinearizedFactor.h
+++ b/gtsam_unstable/nonlinear/LinearizedFactor.h
@@ -19,7 +19,6 @@
#include
#include
-#include
#include
#include
#include
@@ -51,10 +50,9 @@ public:
/**
* @param gaussian: A jacobian or hessian factor
- * @param ordering: The full ordering used to linearize this factor
* @param lin_points: The linearization points for, at least, the variables used by this factor
*/
- LinearizedGaussianFactor(const GaussianFactor::shared_ptr& gaussian, const Ordering& ordering, const Values& lin_points);
+ LinearizedGaussianFactor(const GaussianFactor::shared_ptr& gaussian, const Values& lin_points);
virtual ~LinearizedGaussianFactor() {};
@@ -111,11 +109,9 @@ public:
/**
* @param jacobian: A jacobian factor
- * @param ordering: The ordering used to linearize this factor
* @param lin_points: The linearization points for, at least, the variables used by this factor
*/
- LinearizedJacobianFactor(const JacobianFactor::shared_ptr& jacobian,
- const Ordering& ordering, const Values& lin_points);
+ LinearizedJacobianFactor(const JacobianFactor::shared_ptr& jacobian, const Values& lin_points);
virtual ~LinearizedJacobianFactor() {}
@@ -148,8 +144,7 @@ public:
* Reimplemented from NoiseModelFactor to directly copy out the
* matrices and only update the RHS b with an updated residual
*/
- boost::shared_ptr linearize(
- const Values& c, const Ordering& ordering) const;
+ boost::shared_ptr linearize(const Values& c) const;
/** (A*x-b) */
Vector error_vector(const Values& c) const;
@@ -204,11 +199,9 @@ public:
/**
* Use this constructor with the ordering used to linearize the graph
* @param hessian: A hessian factor
- * @param ordering: The ordering used to linearize this factor
* @param lin_points: The linearization points for, at least, the variables used by this factor
*/
- LinearizedHessianFactor(const HessianFactor::shared_ptr& hessian,
- const Ordering& ordering, const Values& lin_points);
+ LinearizedHessianFactor(const HessianFactor::shared_ptr& hessian, const Values& lin_points);
virtual ~LinearizedHessianFactor() {}
@@ -270,8 +263,7 @@ public:
* Reimplemented from NoiseModelFactor to directly copy out the
* matrices and only update the RHS b with an updated residual
*/
- boost::shared_ptr linearize(
- const Values& c, const Ordering& ordering) const;
+ boost::shared_ptr linearize(const Values& c) const;
private:
/** Serialization function */
diff --git a/gtsam_unstable/nonlinear/sequentialSummarization.cpp b/gtsam_unstable/nonlinear/sequentialSummarization.cpp
deleted file mode 100644
index 8a362bb8a..000000000
--- a/gtsam_unstable/nonlinear/sequentialSummarization.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file summarization.cpp
- *
- * @date Jun 22, 2012
- * @author Alex Cunningham
- */
-
-#include
-
-#include
-
-using namespace std;
-
-namespace gtsam {
-
-/* ************************************************************************* */
-GaussianFactorGraph::shared_ptr summarizeGraphSequential(
- const GaussianFactorGraph& full_graph, const std::vector& indices, bool useQR) {
- GaussianSequentialSolver solver(full_graph, useQR);
- return solver.jointFactorGraph(indices);
-}
-
-/* ************************************************************************* */
-GaussianFactorGraph::shared_ptr summarizeGraphSequential(
- const GaussianFactorGraph& full_graph, const Ordering& ordering, const KeySet& saved_keys, bool useQR) {
- std::vector indices;
- BOOST_FOREACH(const Key& k, saved_keys)
- indices.push_back(ordering[k]);
- return summarizeGraphSequential(full_graph, indices, useQR);
-}
-
-/* ************************************************************************* */
-} // \namespace gtsam
-
diff --git a/gtsam_unstable/nonlinear/sequentialSummarization.h b/gtsam_unstable/nonlinear/sequentialSummarization.h
deleted file mode 100644
index 8a4f30e09..000000000
--- a/gtsam_unstable/nonlinear/sequentialSummarization.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file summarization.h
- *
- * @brief Types and utility functions for summarization
- *
- * @date Jun 22, 2012
- * @author Alex Cunningham
- */
-
-#pragma once
-
-#include
-#include
-
-#include
-#include
-
-namespace gtsam {
-
-/**
- * Summarization function that eliminates a set of variables (does not convert to Jacobians)
- * NOTE: uses sequential solver - requires fully constrained system
- */
-GaussianFactorGraph::shared_ptr GTSAM_UNSTABLE_EXPORT summarizeGraphSequential(
- const GaussianFactorGraph& full_graph, const std::vector& indices, bool useQR = false);
-
-/** Summarization that also converts keys to indices */
-GaussianFactorGraph::shared_ptr GTSAM_UNSTABLE_EXPORT summarizeGraphSequential(
- const GaussianFactorGraph& full_graph, const Ordering& ordering,
- const KeySet& saved_keys, bool useQR = false);
-
-} // \namespace gtsam
-
-