review comment: move check outside lambda
parent
ab1b926dcd
commit
f7fed8b5f5
|
|
@ -149,16 +149,17 @@ TEST(Pose3, Adjoint_full)
|
||||||
// Check Adjoint numerical derivatives
|
// Check Adjoint numerical derivatives
|
||||||
TEST(Pose3, Adjoint_jacobians)
|
TEST(Pose3, Adjoint_jacobians)
|
||||||
{
|
{
|
||||||
|
Vector6 xi = (Vector6() << 0.1, 1.2, 2.3, 3.1, 1.4, 4.5).finished();
|
||||||
|
|
||||||
|
// Check evaluation sanity check
|
||||||
|
EQUALITY(static_cast<gtsam::Vector>(T.AdjointMap() * xi), T.Adjoint(xi));
|
||||||
|
EQUALITY(static_cast<gtsam::Vector>(T2.AdjointMap() * xi), T2.Adjoint(xi));
|
||||||
|
EQUALITY(static_cast<gtsam::Vector>(T3.AdjointMap() * xi), T3.Adjoint(xi));
|
||||||
|
|
||||||
|
// Check jacobians
|
||||||
Matrix6 actualH1, actualH2, expectedH1, expectedH2;
|
Matrix6 actualH1, actualH2, expectedH1, expectedH2;
|
||||||
std::function<Vector6(const Pose3&, const Vector6&)> Adjoint_proxy =
|
std::function<Vector6(const Pose3&, const Vector6&)> Adjoint_proxy =
|
||||||
[&](const Pose3& T, const Vector6& xi) {
|
[&](const Pose3& T, const Vector6& xi) { return T.AdjointMap() * xi; };
|
||||||
Vector6 res1 = T.AdjointMap() * xi, res2 = T.Adjoint(xi);
|
|
||||||
EXPECT(assert_equal(res1, res2));
|
|
||||||
return res1;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtsam::Vector6 xi =
|
|
||||||
(gtsam::Vector6() << 0.1, 1.2, 2.3, 3.1, 1.4, 4.5).finished();
|
|
||||||
|
|
||||||
T.Adjoint(xi, actualH1, actualH2);
|
T.Adjoint(xi, actualH1, actualH2);
|
||||||
expectedH1 = numericalDerivative21(Adjoint_proxy, T, xi);
|
expectedH1 = numericalDerivative21(Adjoint_proxy, T, xi);
|
||||||
|
|
@ -183,18 +184,23 @@ TEST(Pose3, Adjoint_jacobians)
|
||||||
// Check AdjointTranspose and jacobians
|
// Check AdjointTranspose and jacobians
|
||||||
TEST(Pose3, AdjointTranspose)
|
TEST(Pose3, AdjointTranspose)
|
||||||
{
|
{
|
||||||
|
Vector6 xi = (Vector6() << 0.1, 1.2, 2.3, 3.1, 1.4, 4.5).finished();
|
||||||
|
|
||||||
|
// Check evaluation
|
||||||
|
EQUALITY(static_cast<Vector>(T.AdjointMap().transpose() * xi),
|
||||||
|
T.AdjointTranspose(xi));
|
||||||
|
EQUALITY(static_cast<Vector>(T2.AdjointMap().transpose() * xi),
|
||||||
|
T2.AdjointTranspose(xi));
|
||||||
|
EQUALITY(static_cast<Vector>(T3.AdjointMap().transpose() * xi),
|
||||||
|
T3.AdjointTranspose(xi));
|
||||||
|
|
||||||
|
// Check jacobians
|
||||||
Matrix6 actualH1, actualH2, expectedH1, expectedH2;
|
Matrix6 actualH1, actualH2, expectedH1, expectedH2;
|
||||||
std::function<Vector6(const Pose3&, const Vector6&)> AdjointTranspose_proxy =
|
std::function<Vector6(const Pose3&, const Vector6&)> AdjointTranspose_proxy =
|
||||||
[&](const Pose3& T, const Vector6& xi) {
|
[&](const Pose3& T, const Vector6& xi) {
|
||||||
Vector6 res1 = T.AdjointMap().transpose() * xi,
|
return T.AdjointMap().transpose() * xi;
|
||||||
res2 = T.AdjointTranspose(xi);
|
|
||||||
EXPECT(assert_equal(res1, res2));
|
|
||||||
return res1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gtsam::Vector6 xi =
|
|
||||||
(gtsam::Vector6() << 0.1, 1.2, 2.3, 3.1, 1.4, 4.5).finished();
|
|
||||||
|
|
||||||
T.AdjointTranspose(xi, actualH1, actualH2);
|
T.AdjointTranspose(xi, actualH1, actualH2);
|
||||||
expectedH1 = numericalDerivative21(AdjointTranspose_proxy, T, xi);
|
expectedH1 = numericalDerivative21(AdjointTranspose_proxy, T, xi);
|
||||||
expectedH2 = numericalDerivative22(AdjointTranspose_proxy, T, xi);
|
expectedH2 = numericalDerivative22(AdjointTranspose_proxy, T, xi);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue