50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
/**
|
|
* @file summarization.h
|
|
*
|
|
* @brief Types and utility functions for summarization
|
|
*
|
|
* @date Jun 22, 2012
|
|
* @author Alex Cunningham
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <gtsam_unstable/base/dllexport.h>
|
|
#include <gtsam/nonlinear/NonlinearFactorGraph.h>
|
|
|
|
#include <gtsam/linear/GaussianFactorGraph.h>
|
|
#include <gtsam/nonlinear/Ordering.h>
|
|
|
|
namespace gtsam {
|
|
|
|
// Sequential graph summarization
|
|
typedef FactorGraph<JacobianFactor> JacobianGraph;
|
|
typedef boost::shared_ptr<JacobianGraph> shared_jacobianGraph;
|
|
|
|
/**
|
|
* 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<Index>& 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);
|
|
|
|
/**
|
|
* Summarization function to remove a subset of variables from a system using
|
|
* a partial cholesky approach. This does not require that the system be fully constrained.
|
|
*
|
|
* Performs linearization to apply an ordering
|
|
*/
|
|
std::pair<GaussianFactorGraph,Ordering> GTSAM_UNSTABLE_EXPORT
|
|
partialCholeskySummarization(const NonlinearFactorGraph& graph, const Values& values,
|
|
const KeySet& overlap_keys);
|
|
|
|
|
|
} // \namespace gtsam
|
|
|
|
|