From 411e9343856c65c06cfd5e54fe3f7ae75de3c76c Mon Sep 17 00:00:00 2001 From: Richard Roberts Date: Tue, 5 Nov 2013 16:06:14 +0000 Subject: [PATCH] Fixed a bug in checking for empty-matrix Jacobians that still have keys (kind of a hack) --- gtsam/linear/HessianFactor.cpp | 2 +- gtsam/linear/JacobianFactor.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gtsam/linear/HessianFactor.cpp b/gtsam/linear/HessianFactor.cpp index 400f2251d..1572521f6 100644 --- a/gtsam/linear/HessianFactor.cpp +++ b/gtsam/linear/HessianFactor.cpp @@ -73,7 +73,7 @@ Scatter::Scatter(const GaussianFactorGraph& gfg, boost::optionalbegin(); variable != factor->end(); ++variable) { // TODO: Fix this hack to cope with zero-row Jacobians that come from BayesTreeOrphanWrappers const JacobianFactor* asJacobian = dynamic_cast(factor.get()); - if(!asJacobian || asJacobian->rows() > 0) + if(!asJacobian || asJacobian->cols() > 1) this->insert(make_pair(*variable, SlotEntry(none, factor->getDim(variable)))); } } diff --git a/gtsam/linear/JacobianFactor.cpp b/gtsam/linear/JacobianFactor.cpp index 50d03a7ad..a35b44295 100644 --- a/gtsam/linear/JacobianFactor.cpp +++ b/gtsam/linear/JacobianFactor.cpp @@ -162,7 +162,7 @@ namespace gtsam { const size_t sourceVarpos = slots->second[sourceFactorI]; if(sourceVarpos < numeric_limits::max()) { const JacobianFactor& sourceFactor = *factors[sourceFactorI]; - if(sourceFactor.cols() > 0) { + if(sourceFactor.cols() > 1) { foundVariable = true; DenseIndex vardim = sourceFactor.getDim(sourceFactor.begin() + sourceVarpos);