16 #include <mrpt/poses/Lie/SE.h>
20 using namespace mrpt::poses::Lie;
32 pp.pl_global = {mrpt::math::TPlane::FromPointAndNormal({0, 0, 0}, {0, 0, 1}), {0, 0, 0}};
33 pp.pt_local = groundTruth.inverseComposePoint({0.5, 0, 0});
36 auto& pp = p.paired_pt2pl.emplace_back();
37 pp.pl_global = {mrpt::math::TPlane::FromPointAndNormal({0, 0, 0}, {1, 0, 0}), {0, 0, 0}};
38 pp.pt_local = groundTruth.inverseComposePoint({0, 0.8, 0});
41 auto& pp = p.paired_pt2pl.emplace_back();
42 pp.pl_global = {mrpt::math::TPlane::FromPointAndNormal({0, 0, 0}, {0, 1, 0}), {0, 0, 0}};
43 pp.pt_local = groundTruth.inverseComposePoint({0, 0, 0.3});
46 auto& pp = p.paired_pt2pt.emplace_back();
47 pp.global = {0, 0, 0};
48 const auto loc = groundTruth.inverseComposePoint({0, 0, 0});
52 std::cout <<
"Input pairings: " << p.contents_summary() << std::endl;
62 std::cout <<
"Found optimalPose: " << result.
optimalPose << std::endl;
63 std::cout <<
"Expected optimalPose: " << groundTruth << std::endl;
67 ASSERT_NEAR_(mrpt::poses::Lie::SE<3>::log(result.
optimalPose - groundTruth).norm(), 0.0, 1e-3);
74 using mrpt::poses::CPose3D;
80 mrpt::containers::yaml solverParams;
81 solverParams[
"maxIterations"] = 25;
87 const std::vector<const mp2p_icp::Solver*> solvers = {
92 for (
const auto solverPtr : solvers)
94 const auto& solver = *solverPtr;
95 std::cout <<
"Using solver: " << solver.GetRuntimeClass()->className
97 "=========================================================\n";
109 test_opt_pt2pl(CPose3D::FromYawPitchRoll(20.0_deg, 0.0_deg, 0.0_deg), solver);
110 test_opt_pt2pl(CPose3D::FromYawPitchRoll(-20.0_deg, 0.0_deg, 0.0_deg), solver);
112 test_opt_pt2pl(CPose3D::FromYawPitchRoll(0.0_deg, 10.0_deg, 0.0_deg), solver);
113 test_opt_pt2pl(CPose3D::FromYawPitchRoll(0.0_deg, -10.0_deg, 0.0_deg), solver);
115 test_opt_pt2pl(CPose3D::FromYawPitchRoll(0.0_deg, 0.0_deg, 15.0_deg), solver);
116 test_opt_pt2pl(CPose3D::FromYawPitchRoll(0.0_deg, 0.0_deg, -15.0_deg), solver);
120 CPose3D::FromXYZYawPitchRoll(1.0, 2.0, 3.0, -10.0_deg, 5.0_deg, 30.0_deg), solver);
124 int main([[maybe_unused]]
int argc, [[maybe_unused]]
char** argv)
130 catch (std::exception& e)
132 std::cerr << mrpt::exception_to_str(e) <<
"\n";