createUnknowns

release/4.3a0
dellaert 2014-10-15 10:38:54 +02:00
parent 00d0a7b045
commit 79ff0c54f9
2 changed files with 22 additions and 3 deletions

View File

@ -181,5 +181,15 @@ Expression<T> operator*(const Expression<T>& expression1,
expression1, expression2); expression1, expression2);
} }
/// Construct an array of leaves
template<typename T>
std::vector<Expression<T> > createUnknowns(size_t n, char c, size_t start = 0) {
std::vector<Expression<T> > unknowns;
unknowns.reserve(n);
for (size_t i = start; i < start + n; i++)
unknowns.push_back(Expression<T>(c, i));
return unknowns;
}
} }

View File

@ -34,7 +34,6 @@ using namespace std;
using namespace gtsam; using namespace gtsam;
/* ************************************************************************* */ /* ************************************************************************* */
template<class CAL> template<class CAL>
Point2 uncalibrate(const CAL& K, const Point2& p, Point2 uncalibrate(const CAL& K, const Point2& p,
boost::optional<Matrix25&> Dcal, boost::optional<Matrix2&> Dp) { boost::optional<Matrix25&> Dcal, boost::optional<Matrix2&> Dp) {
@ -57,7 +56,7 @@ TEST(Expression, constant) {
/* ************************************************************************* */ /* ************************************************************************* */
// Leaf // Leaf
TEST(Expression, leaf) { TEST(Expression, Leaf) {
Expression<Rot3> R(100); Expression<Rot3> R(100);
Values values; Values values;
values.insert(100, someR); values.insert(100, someR);
@ -74,8 +73,18 @@ TEST(Expression, leaf) {
} }
/* ************************************************************************* */ /* ************************************************************************* */
// Many Leaves
TEST(Expression, Leaves) {
Values values;
Point3 somePoint(1, 2, 3);
values.insert(Symbol('p', 10), somePoint);
std::vector<Expression<Point3> > points = createUnknowns<Point3>(10, 'p', 1);
EXPECT(assert_equal(somePoint,points.back().value(values)));
}
//TEST(Expression, nullaryMethod) { /* ************************************************************************* */
//TEST(Expression, NullaryMethod) {
// Expression<Point3> p(67); // Expression<Point3> p(67);
// Expression<LieScalar> norm(p, &Point3::norm); // Expression<LieScalar> norm(p, &Point3::norm);
// Values values; // Values values;