Merge branch 'master' into retraction_name
parent
fd601b55d8
commit
b3501efdec
|
|
@ -22,11 +22,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <functional>
|
||||
#include <gtsam/inference/FactorGraph.h>
|
||||
#include <gtsam/inference/graph-inl.h>
|
||||
#include <gtsam/base/DSF.h>
|
||||
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
|
@ -36,9 +34,11 @@
|
|||
#include <boost/graph/prim_minimum_spanning_tree.hpp>
|
||||
#include <boost/iterator/transform_iterator.hpp>
|
||||
|
||||
#include <gtsam/inference/FactorGraph.h>
|
||||
#include <gtsam/inference/graph-inl.h>
|
||||
#include <gtsam/base/DSF.h>
|
||||
#include <stdio.h>
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <functional>
|
||||
|
||||
#define INSTANTIATE_FACTOR_GRAPH(F) \
|
||||
template class FactorGraph<F>; \
|
||||
|
|
@ -55,7 +55,7 @@ namespace gtsam {
|
|||
cout << "size: " << size() << endl;
|
||||
for (size_t i = 0; i < factors_.size(); i++) {
|
||||
stringstream ss;
|
||||
ss << "factor " << i;
|
||||
ss << "factor " << i << ": ";
|
||||
if (factors_[i] != NULL) factors_[i]->print(ss.str());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <cmath>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <gtsam/nonlinear/NonlinearFactorGraph.h>
|
||||
#include <gtsam/inference/FactorGraph-inl.h>
|
||||
#include <gtsam/inference/inference.h>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <cmath>
|
||||
|
||||
#define INSTANTIATE_NONLINEAR_FACTOR_GRAPH(C) \
|
||||
INSTANTIATE_FACTOR_GRAPH(NonlinearFactor<C>); \
|
||||
|
|
@ -57,7 +57,6 @@ namespace gtsam {
|
|||
return total_error;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
/* ************************************************************************* */
|
||||
template<class VALUES>
|
||||
std::set<Symbol> NonlinearFactorGraph<VALUES>::keys() const {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
**/
|
||||
#pragma once
|
||||
|
||||
#include <gtsam/base/Testable.h>
|
||||
#include <gtsam/nonlinear/NonlinearFactor.h>
|
||||
#include <gtsam/base/Testable.h>
|
||||
|
||||
namespace gtsam {
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ namespace gtsam {
|
|||
|
||||
/** print */
|
||||
virtual void print(const std::string& s) const {
|
||||
std::cout << s << ": PriorFactor(" << (std::string) this->key_ << ")\n";
|
||||
std::cout << s << "PriorFactor(" << (std::string) this->key_ << ")\n";
|
||||
prior_.print(" prior");
|
||||
this->noiseModel_->print(" noise model");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,28 +10,28 @@
|
|||
* -------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* @file testPose2Graph.cpp
|
||||
* @file testPose2SLAM.cpp
|
||||
* @author Frank Dellaert, Viorela Ila
|
||||
**/
|
||||
|
||||
#include <iostream>
|
||||
// Magically casts strings like "x3" to a Symbol('x',3) key, see Key.h
|
||||
#define GTSAM_MAGIC_KEY
|
||||
|
||||
#include <gtsam/slam/pose2SLAM.h>
|
||||
#include <gtsam/nonlinear/NonlinearOptimizer-inl.h>
|
||||
#include <gtsam/inference/FactorGraph-inl.h>
|
||||
#include <gtsam/base/numericalDerivative.h>
|
||||
using namespace gtsam;
|
||||
|
||||
#include <CppUnitLite/TestHarness.h>
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/assign/std/list.hpp>
|
||||
using namespace boost;
|
||||
using namespace boost::assign;
|
||||
|
||||
#include <CppUnitLite/TestHarness.h>
|
||||
|
||||
// Magically casts strings like "x3" to a Symbol('x',3) key, see Key.h
|
||||
#define GTSAM_MAGIC_KEY
|
||||
|
||||
#include <gtsam/base/numericalDerivative.h>
|
||||
#include <gtsam/nonlinear/NonlinearOptimizer-inl.h>
|
||||
#include <gtsam/inference/FactorGraph-inl.h>
|
||||
#include <gtsam/slam/pose2SLAM.h>
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
using namespace gtsam;
|
||||
|
||||
// common measurement covariance
|
||||
static double sx=0.5, sy=0.5,st=0.1;
|
||||
|
|
@ -44,11 +44,32 @@ static noiseModel::Gaussian::shared_ptr covariance(
|
|||
//static noiseModel::Gaussian::shared_ptr I3(noiseModel::Unit::Create(3));
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST( Pose2Graph, constructor )
|
||||
Vector f(const Pose2& pose1, const Pose2& pose2) {
|
||||
Pose2 z(2,2,M_PI_2);
|
||||
Pose2Factor constraint(1, 2, z, covariance);
|
||||
return constraint.evaluateError(pose1, pose2);
|
||||
}
|
||||
|
||||
TEST( Pose2SLAM, constraint )
|
||||
{
|
||||
// create a factor between unknown poses p1 and p2
|
||||
Pose2 pose1, pose2(2,2,M_PI_2);
|
||||
Pose2Factor constraint(1, 2, pose2, covariance);
|
||||
Matrix H1, H2;
|
||||
Vector actual = constraint.evaluateError(pose1, pose2, H1, H2);
|
||||
|
||||
Matrix numericalH1 = numericalDerivative21(&f , pose1, pose2);
|
||||
EXPECT(assert_equal(numericalH1,H1,5e-3));
|
||||
|
||||
Matrix numericalH2 = numericalDerivative22(&f , pose1, pose2);
|
||||
EXPECT(assert_equal(numericalH2,H2));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST( Pose2SLAM, constructor )
|
||||
{
|
||||
// create a factor between unknown poses p1 and p2
|
||||
Pose2 measured(2,2,M_PI_2);
|
||||
Pose2Factor constraint(1,2,measured, covariance);
|
||||
Pose2Graph graph;
|
||||
graph.addConstraint(1,2,measured, covariance);
|
||||
// get the size of the graph
|
||||
|
|
@ -56,11 +77,10 @@ TEST( Pose2Graph, constructor )
|
|||
// verify
|
||||
size_t expected = 1;
|
||||
CHECK(actual == expected);
|
||||
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST( Pose2Graph, linearization )
|
||||
TEST( Pose2SLAM, linearization )
|
||||
{
|
||||
// create a factor between unknown poses p1 and p2
|
||||
Pose2 measured(2,2,M_PI_2);
|
||||
|
|
|
|||
Loading…
Reference in New Issue