Added optional template parameter for NonlinearISAM to specify a specialized graph
parent
f0b5e5ea3b
commit
6d961844c4
|
@ -30,8 +30,8 @@ using namespace std;
|
|||
using namespace gtsam;
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Values>
|
||||
void NonlinearISAM<Values>::update(const Factors& newFactors,
|
||||
template<class VALUES, class GRAPH>
|
||||
void NonlinearISAM<VALUES,GRAPH>::update(const Factors& newFactors,
|
||||
const Values& initialValues) {
|
||||
|
||||
if(newFactors.size() > 0) {
|
||||
|
@ -63,8 +63,8 @@ void NonlinearISAM<Values>::update(const Factors& newFactors,
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Values>
|
||||
void NonlinearISAM<Values>::reorder_relinearize() {
|
||||
template<class VALUES, class GRAPH>
|
||||
void NonlinearISAM<VALUES,GRAPH>::reorder_relinearize() {
|
||||
|
||||
// cout << "Reordering, relinearizing..." << endl;
|
||||
|
||||
|
@ -90,8 +90,8 @@ void NonlinearISAM<Values>::reorder_relinearize() {
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Values>
|
||||
Values NonlinearISAM<Values>::estimate() const {
|
||||
template<class VALUES, class GRAPH>
|
||||
VALUES NonlinearISAM<VALUES,GRAPH>::estimate() const {
|
||||
if(isam_.size() > 0)
|
||||
return linPoint_.retract(optimize(isam_), ordering_);
|
||||
else
|
||||
|
@ -99,14 +99,14 @@ Values NonlinearISAM<Values>::estimate() const {
|
|||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Values>
|
||||
Matrix NonlinearISAM<Values>::marginalCovariance(const Symbol& key) const {
|
||||
template<class VALUES, class GRAPH>
|
||||
Matrix NonlinearISAM<VALUES,GRAPH>::marginalCovariance(const Symbol& key) const {
|
||||
return isam_.marginalCovariance(ordering_[key]);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
template<class Values>
|
||||
void NonlinearISAM<Values>::print(const std::string& s) const {
|
||||
template<class VALUES, class GRAPH>
|
||||
void NonlinearISAM<VALUES,GRAPH>::print(const std::string& s) const {
|
||||
cout << "ISAM - " << s << ":" << endl;
|
||||
cout << " ReorderInterval: " << reorderInterval_ << " Current Count: " << reorderCounter_ << endl;
|
||||
isam_.print("GaussianISAM");
|
||||
|
|
|
@ -25,11 +25,12 @@ namespace gtsam {
|
|||
/**
|
||||
* Wrapper class to manage ISAM in a nonlinear context
|
||||
*/
|
||||
template<class Values>
|
||||
template<class VALUES, class GRAPH = gtsam::NonlinearFactorGraph<VALUES> >
|
||||
class NonlinearISAM {
|
||||
public:
|
||||
|
||||
typedef gtsam::NonlinearFactorGraph<Values> Factors;
|
||||
typedef VALUES Values;
|
||||
typedef GRAPH Factors;
|
||||
|
||||
protected:
|
||||
|
||||
|
|
Loading…
Reference in New Issue