Added optional flag to ConcurrentBatchFilter to control relinearization

during syncs.
release/4.3a0
Stephen Williams 2013-05-17 08:06:06 +00:00
parent d83b5b20cd
commit 1c5061cf3c
2 changed files with 3 additions and 2 deletions

View File

@ -126,7 +126,7 @@ void ConcurrentBatchFilter::synchronize(const NonlinearFactorGraph& summarizedFa
if(factors_.size() > 0) {
// Perform an optional optimization on the to-be-sent-to-the-smoother factors
if(true) {
if(relin_) {
// Create ordering and delta
Ordering ordering = *graph.orderingCOLAMD(values);
VectorValues delta = values.zeroVectors(ordering);

View File

@ -54,7 +54,7 @@ public:
};
/** Default constructor */
ConcurrentBatchFilter(const LevenbergMarquardtParams& parameters = LevenbergMarquardtParams()) : parameters_(parameters) {};
ConcurrentBatchFilter(const LevenbergMarquardtParams& parameters = LevenbergMarquardtParams(), bool relin = true) : parameters_(parameters), relin_(relin) {};
/** Default destructor */
virtual ~ConcurrentBatchFilter() {};
@ -122,6 +122,7 @@ public:
protected:
LevenbergMarquardtParams parameters_; ///< LM parameters
bool relin_;
NonlinearFactorGraph factors_; ///< The set of all factors currently in the filter
Values theta_; ///< Current linearization point of all variables in the filter
Ordering ordering_; ///< The current ordering used to calculate the linear deltas