diff --git a/cpp/GaussianFactorGraph.cpp b/cpp/GaussianFactorGraph.cpp index 78085e39e..c0fe723ba 100644 --- a/cpp/GaussianFactorGraph.cpp +++ b/cpp/GaussianFactorGraph.cpp @@ -182,6 +182,14 @@ GaussianFactorGraph GaussianFactorGraph::add_priors(double sigma) const { return result; } +/* ************************************************************************* */ +Errors GaussianFactorGraph::rhs() const { + Errors e; + BOOST_FOREACH(sharedFactor factor,factors_) + e.push_back(ediv(factor->get_b(),factor->get_sigmas())); + return e; +} + /* ************************************************************************* */ pair GaussianFactorGraph::matrix(const Ordering& ordering) const { diff --git a/cpp/GaussianFactorGraph.h b/cpp/GaussianFactorGraph.h index 8e9d459ef..9f99ee201 100644 --- a/cpp/GaussianFactorGraph.h +++ b/cpp/GaussianFactorGraph.h @@ -156,6 +156,11 @@ namespace gtsam { */ GaussianFactorGraph add_priors(double sigma) const; + /** + * Return RHS (b./sigmas) as Errors class + */ + Errors rhs() const; + /** * Return (dense) matrix associated with factor graph * @param ordering of variables needed for matrix column order diff --git a/cpp/testGaussianFactorGraph.cpp b/cpp/testGaussianFactorGraph.cpp index 739ab18f4..f9f8c04b3 100644 --- a/cpp/testGaussianFactorGraph.cpp +++ b/cpp/testGaussianFactorGraph.cpp @@ -606,6 +606,18 @@ TEST( GaussianFactorGraph, transposeMultiplication ) CHECK(assert_equal(expected,actual)); } +/* ************************************************************************* */ +TEST( GaussianFactorGraph, rhs ) +{ + GaussianFactorGraph Ab = createGaussianFactorGraph(); + Errors expected, actual = Ab.rhs(); + expected.push_back(Vector_(2,-1.0,-1.0)); + expected.push_back(Vector_(2, 2.0,-1.0)); + expected.push_back(Vector_(2, 0.0, 1.0)); + expected.push_back(Vector_(2,-1.0, 1.5)); + CHECK(assert_equal(expected,actual)); +} + /* ************************************************************************* */ // Tests ported from ConstrainedGaussianFactorGraph /* ************************************************************************* */