2 GTSAM Copyright 2010-2019, Georgia Tech Research Corporation, 3 Atlanta, Georgia 30332-0415 6 See LICENSE for the license information 8 Unit tests for Linear Factor Graphs. 9 Author: Frank Dellaert & Gerry Chen 13 from __future__
import print_function
25 """Create a basic linear factor graph for testing""" 35 graph.add(x1, np.eye(1), x0, -np.eye(1), np.ones(1), BETWEEN_NOISE)
36 graph.add(x2, np.eye(1), x1, -np.eye(1), 2 * np.ones(1), BETWEEN_NOISE)
37 graph.add(x0, np.eye(1), np.zeros(1), PRIOR_NOISE)
39 return graph, (x0, x1, x2)
43 """Tests for Gaussian Factor Graphs.""" 46 """Test solving a linear factor graph""" 48 result = graph.optimize()
53 self.assertAlmostEqual(EXPECTEDX[0], result.at(X[0]), delta=1e-8)
54 self.assertAlmostEqual(EXPECTEDX[1], result.at(X[1]), delta=1e-8)
55 self.assertAlmostEqual(EXPECTEDX[2], result.at(X[2]), delta=1e-8)
58 """Test converting a linear factor graph to a nonlinear one""" 66 nlresult = optimizer.optimizeSafely()
70 m = [marginals.marginalCovariance(x)
for x
in X]
73 self.assertAlmostEqual(EXPECTEDM[0], m[0], delta=1e-8)
74 self.assertAlmostEqual(EXPECTEDM[1], m[1], delta=1e-8)
75 self.assertAlmostEqual(EXPECTEDM[2], m[2], delta=1e-8)
78 """Marginalize a linear factor graph""" 80 result = graph.optimize()
86 m = [marginals.marginalCovariance(x)
for x
in X]
89 self.assertAlmostEqual(EXPECTEDM[0], m[0], delta=1e-8)
90 self.assertAlmostEqual(EXPECTEDM[1], m[1], delta=1e-8)
91 self.assertAlmostEqual(EXPECTEDM[2], m[2], delta=1e-8)
97 for key
in keys[::-1]:
98 ordering.push_back(key)
100 bn = gfg.eliminateSequential(ordering)
101 self.assertEqual(bn.size(), 3)
103 keyVector = [keys[2]]
104 ordering = gtsam.Ordering.ColamdConstrainedLastGaussianFactorGraph(
106 bn = gfg.eliminateSequential(ordering)
107 self.assertEqual(bn.size(), 3)
110 if __name__ ==
'__main__':
def test_convertNonlinear(self)
static shared_ptr Sigmas(const Vector &sigmas, bool smart=true)
static NonlinearFactorGraph ConvertLinearGraph(const GaussianFactorGraph &linear_graph, const Values &linearizationPoint=Values())
def test_linearMarginalization(self)