Fixed bug in equality check
parent
12290dc7b2
commit
6b14e652ff
|
@ -117,11 +117,13 @@ void LinearContainerFactor::print(const std::string& s, const KeyFormatter& keyF
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
bool LinearContainerFactor::equals(const NonlinearFactor& f, double tol) const {
|
bool LinearContainerFactor::equals(const NonlinearFactor& f, double tol) const {
|
||||||
const LinearContainerFactor* jcf = dynamic_cast<const LinearContainerFactor*>(&f);
|
const LinearContainerFactor* jcf = dynamic_cast<const LinearContainerFactor*>(&f);
|
||||||
if (!jcf || factor_->equals(*jcf->factor_, tol) || NonlinearFactor::equals(f))
|
if (!jcf || !factor_->equals(*jcf->factor_, tol) || !NonlinearFactor::equals(f))
|
||||||
return false;
|
return false;
|
||||||
if (!linearizationPoint_ && !jcf->linearizationPoint_)
|
if (!linearizationPoint_ && !jcf->linearizationPoint_)
|
||||||
return true;
|
return true;
|
||||||
return jcf->linearizationPoint_ && linearizationPoint_->equals(*jcf->linearizationPoint_, tol);
|
if (linearizationPoint_ && jcf->linearizationPoint_)
|
||||||
|
return linearizationPoint_->equals(*jcf->linearizationPoint_, tol);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <gtsam_unstable/nonlinear/LinearContainerFactor.h>
|
#include <gtsam_unstable/nonlinear/LinearContainerFactor.h>
|
||||||
|
|
||||||
|
#include <gtsam/base/TestableAssertions.h>
|
||||||
#include <gtsam/geometry/Pose2.h>
|
#include <gtsam/geometry/Pose2.h>
|
||||||
|
|
||||||
using namespace gtsam;
|
using namespace gtsam;
|
||||||
|
@ -95,6 +96,11 @@ TEST( testLinearContainerFactor, jacobian_factor_withlinpoints ) {
|
||||||
values.insert(x2, poseA2);
|
values.insert(x2, poseA2);
|
||||||
|
|
||||||
LinearContainerFactor actFactor(expLinFactor, ordering, values);
|
LinearContainerFactor actFactor(expLinFactor, ordering, values);
|
||||||
|
LinearContainerFactor actFactorNolin(expLinFactor, ordering);
|
||||||
|
|
||||||
|
EXPECT(assert_equal(actFactor, actFactor, tol));
|
||||||
|
EXPECT(assert_inequal(actFactor, actFactorNolin, tol));
|
||||||
|
EXPECT(assert_inequal(actFactorNolin, actFactor, tol));
|
||||||
|
|
||||||
// Check contents
|
// Check contents
|
||||||
Values expLinPoint;
|
Values expLinPoint;
|
||||||
|
|
Loading…
Reference in New Issue