Fixed compilation issues

release/4.3a0
Frank 2015-10-19 14:59:40 -07:00
parent 5faf09726b
commit 1c83329b9b
1 changed files with 8 additions and 6 deletions

View File

@ -412,38 +412,40 @@ TEST (Unit3, FromPoint3) {
//******************************************************************************* //*******************************************************************************
TEST(Unit3, ErrorBetweenFactor) { TEST(Unit3, ErrorBetweenFactor) {
std::vector<Unit3> data = {Unit3(1.0, 0.0, 0.0), Unit3(0.0, 0.0, 1.0)}; std::vector<Unit3> data;
data.push_back(Unit3(1.0, 0.0, 0.0));
data.push_back(Unit3(0.0, 0.0, 1.0));
NonlinearFactorGraph graph; NonlinearFactorGraph graph;
Values initial_values; Values initial_values;
// Add prior factors. // Add prior factors.
SharedNoiseModel R_prior = noiseModel::Unit::Create(2); SharedNoiseModel R_prior = noiseModel::Unit::Create(2);
for (int i = 0; i < data.size(); i++) { for (size_t i = 0; i < data.size(); i++) {
graph.add(PriorFactor<Unit3>(U(i), data[i], R_prior)); graph.add(PriorFactor<Unit3>(U(i), data[i], R_prior));
} }
// Add process factors using the dot product error function. // Add process factors using the dot product error function.
SharedNoiseModel R_process = noiseModel::Isotropic::Sigma(2, 0.01); SharedNoiseModel R_process = noiseModel::Isotropic::Sigma(2, 0.01);
for (int i = 0; i < data.size() - 1; i++) { for (size_t i = 0; i < data.size() - 1; i++) {
Expression<Vector2> exp(Expression<Unit3>(U(i)), &Unit3::errorVector, Expression<Unit3>(U(i + 1))); Expression<Vector2> exp(Expression<Unit3>(U(i)), &Unit3::errorVector, Expression<Unit3>(U(i + 1)));
graph.addExpressionFactor<Vector2>(R_process, Vector2::Zero(), exp); graph.addExpressionFactor<Vector2>(R_process, Vector2::Zero(), exp);
} }
// Add initial values. Since there is no identity, just pick something. // Add initial values. Since there is no identity, just pick something.
for (int i = 0; i < data.size(); i++) { for (size_t i = 0; i < data.size(); i++) {
initial_values.insert(U(i), Unit3(0.0, 1.0, 0.0)); initial_values.insert(U(i), Unit3(0.0, 1.0, 0.0));
} }
Values values = GaussNewtonOptimizer(graph, initial_values).optimize(); Values values = GaussNewtonOptimizer(graph, initial_values).optimize();
// Check that the y-value is very small for each. // Check that the y-value is very small for each.
for (int i = 0; i < data.size(); i++) { for (size_t i = 0; i < data.size(); i++) {
EXPECT(assert_equal(0.0, values.at<Unit3>(U(i)).unitVector().y(), 1e-3)); EXPECT(assert_equal(0.0, values.at<Unit3>(U(i)).unitVector().y(), 1e-3));
} }
// Check that the dot product between variables is close to 1. // Check that the dot product between variables is close to 1.
for (int i = 0; i < data.size() - 1; i++) { for (size_t i = 0; i < data.size() - 1; i++) {
EXPECT(assert_equal(1.0, values.at<Unit3>(U(i)).dot(values.at<Unit3>(U(i + 1))), 1e-2)); EXPECT(assert_equal(1.0, values.at<Unit3>(U(i)).dot(values.at<Unit3>(U(i + 1))), 1e-2));
} }
} }