Fixes due to bad merge
parent
8592e6b2c6
commit
d340e556b5
2
gtsam.h
2
gtsam.h
|
|
@ -40,7 +40,7 @@ class Pose2 {
|
|||
int dim() const;
|
||||
Pose2* compose_(const Pose2& p2);
|
||||
Pose2* between_(const Pose2& p2);
|
||||
Vector logmap(const Pose2& p);
|
||||
Vector localCoordinates(const Pose2& p);
|
||||
};
|
||||
|
||||
class SharedGaussian {
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ TEST(Pose3, expmaps_galore)
|
|||
actual = Pose3::Retract(xi);
|
||||
EXPECT(assert_equal(expm<Pose3>(xi), actual,1e-6));
|
||||
EXPECT(assert_equal(Agrawal06iros(xi), actual,1e-6));
|
||||
EXPECT(assert_equal(xi, logmap(actual),1e-6));
|
||||
EXPECT(assert_equal(xi, localCoordinates(actual),1e-6));
|
||||
|
||||
xi = Vector_(6,0.1,-0.2,0.3,-0.4,0.5,-0.6);
|
||||
for (double theta=1.0;0.3*theta<=M_PI;theta*=2) {
|
||||
|
|
@ -156,7 +156,7 @@ TEST(Pose3, expmaps_galore)
|
|||
actual = Pose3::Retract(txi);
|
||||
EXPECT(assert_equal(expm<Pose3>(txi,30), actual,1e-6));
|
||||
EXPECT(assert_equal(Agrawal06iros(txi), actual,1e-6));
|
||||
Vector log = logmap(actual);
|
||||
Vector log = localCoordinates(actual);
|
||||
EXPECT(assert_equal(actual, Pose3::Retract(log),1e-6));
|
||||
EXPECT(assert_equal(txi,log,1e-6)); // not true once wraps
|
||||
}
|
||||
|
|
@ -166,7 +166,7 @@ TEST(Pose3, expmaps_galore)
|
|||
actual = Pose3::Retract(xi);
|
||||
EXPECT(assert_equal(expm<Pose3>(xi,10), actual,1e-5));
|
||||
EXPECT(assert_equal(Agrawal06iros(xi), actual,1e-6));
|
||||
EXPECT(assert_equal(xi, logmap(actual),1e-6));
|
||||
EXPECT(assert_equal(xi, localCoordinates(actual),1e-6));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace gtsam {
|
|||
* This class is functional, meaning every method is \c const, and returns a new
|
||||
* copy of the class.
|
||||
*
|
||||
* \tparam VALUES The LieValues or TupleValues type to hold the values to be
|
||||
* \tparam VALUES The Values or TupleValues type to hold the values to be
|
||||
* estimated.
|
||||
*
|
||||
* \tparam GAUSSIAN_SOLVER The linear solver to use at each iteration,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace gtsam {
|
|||
* here matches that in "trustregion.pdf" in gtsam_experimental/doc, see this
|
||||
* file for further explanation of the computations performed by this class.
|
||||
*
|
||||
* \tparam VALUES The LieValues or TupleValues type to hold the values to be
|
||||
* \tparam VALUES The Values or TupleValues type to hold the values to be
|
||||
* estimated.
|
||||
*
|
||||
* \tparam GAUSSIAN_SOLVER The linear solver to use at each iteration,
|
||||
|
|
@ -60,7 +60,7 @@ struct DoglegOptimizerImpl {
|
|||
* @tparam M The type of the Bayes' net or tree, currently
|
||||
* either BayesNet<GaussianConditional> (or GaussianBayesNet) or BayesTree<GaussianConditional>.
|
||||
* @tparam F For normal usage this will be NonlinearFactorGraph<VALUES>.
|
||||
* @tparam VALUES The LieValues or TupleValues to pass to F::error() to evaluate
|
||||
* @tparam VALUES The Values or TupleValues to pass to F::error() to evaluate
|
||||
* the error function.
|
||||
* @param initialDelta The initial trust region radius.
|
||||
* @param Rd The Bayes' net or tree as described above.
|
||||
|
|
@ -159,7 +159,7 @@ typename DoglegOptimizerImpl::IterationResult DoglegOptimizerImpl::Iterate(
|
|||
if(verbose) cout << "Delta = " << Delta << ", dx_d_norm = " << result.dx_d.vector().norm() << endl;
|
||||
|
||||
// Compute expmapped solution
|
||||
const VALUES x_d(x0.expmap(result.dx_d, ordering));
|
||||
const VALUES x_d(x0.retract(result.dx_d, ordering));
|
||||
|
||||
// Compute decrease in f
|
||||
result.f_error = f.error(x_d);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ check_PROGRAMS =
|
|||
#----------------------------------------------------------------------------------------------------
|
||||
|
||||
# Lie Groups
|
||||
headers += LieValues.h LieValues-inl.h TupleValues.h TupleValues-inl.h
|
||||
check_PROGRAMS += tests/testLieValues tests/testKey tests/testOrdering
|
||||
headers += Values.h Values-inl.h TupleValues.h TupleValues-inl.h
|
||||
check_PROGRAMS += tests/testValues tests/testKey tests/testOrdering
|
||||
|
||||
# Nonlinear nonlinear
|
||||
headers += Key.h
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ namespace gtsam {
|
|||
DoglegOptimizerImpl::IterationResult result = DoglegOptimizerImpl::Iterate(
|
||||
parameters_->lambda_, DoglegOptimizerImpl::ONE_STEP_PER_ITERATION, *solver.eliminate(),
|
||||
*graph_, *values_, *ordering_, error_);
|
||||
shared_values newValues(new T(values_->expmap(result.dx_d, *ordering_)));
|
||||
shared_values newValues(new T(values_->retract(result.dx_d, *ordering_)));
|
||||
cout << "newValues: " << newValues.get() << endl;
|
||||
return newValuesErrorLambda_(newValues, result.f_error, result.Delta);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -405,7 +405,7 @@ TEST(DoglegOptimizer, Iterate) {
|
|||
DoglegOptimizerImpl::IterationResult result = DoglegOptimizerImpl::Iterate(Delta, DoglegOptimizerImpl::SEARCH_EACH_ITERATION, gbn, *fg, *config, *ord, fg->error(*config));
|
||||
Delta = result.Delta;
|
||||
EXPECT(result.f_error < fg->error(*config)); // Check that error decreases
|
||||
simulated2D::Values newConfig(config->expmap(result.dx_d, *ord));
|
||||
simulated2D::Values newConfig(config->retract(result.dx_d, *ord));
|
||||
(*config) = newConfig;
|
||||
DOUBLES_EQUAL(fg->error(*config), result.f_error, 1e-5); // Check that error is correctly filled in
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue