15 #include <mrpt/poses/Lie/SE.h> 
   19     using namespace mrpt::poses::Lie;
 
   32         pp.global = {1, 0, 0};
 
   33         pp.local  = groundTruth.inverseComposePoint(pp.global);
 
   36         auto& pp  = p.paired_pt2pt.emplace_back();
 
   37         pp.global = {0, 1, 0};
 
   38         pp.local  = groundTruth.inverseComposePoint(pp.global);
 
   41         auto& pp  = p.paired_pt2pt.emplace_back();
 
   42         pp.global = {0, 0, 1};
 
   43         pp.local  = groundTruth.inverseComposePoint(pp.global);
 
   46     std::cout << 
"Input pairings: " << p.contents_summary() << std::endl;
 
   51     mrpt::containers::yaml solverParams;
 
   52     solverParams[
"maxIterations"]    = 25;
 
   53     solverParams[
"innerLoopVerbose"] = 
true;
 
   57     for (
int Case = 0; Case < 3; Case++)
 
   63         auto& prior = sc.
prior.emplace();
 
   65             mrpt::poses::CPose3D::FromXYZYawPitchRoll(2.0, 3.0, 4.0, 10.0_deg, 10.0_deg, 10.0_deg);
 
   66         prior.cov_inv.fill(0);
 
   68         mrpt::poses::CPose3D      expected;
 
   69         std::function<void(
void)> checkFn;
 
   75                 expected = groundTruth;
 
   78                          mrpt::poses::Lie::SE<3>::log(result.
optimalPose - expected).norm(), 0.0,
 
   83                 expected = prior.mean;
 
   84                 for (
int i = 0; i < 3; i++) prior.cov_inv(i, i) = 100.0;
 
   87                     for (
int i = 0; i < 3; i++)
 
   88                         ASSERT_NEAR_(result.
optimalPose[i], prior.mean[i], 0.05);
 
   92                 expected = prior.mean;
 
   93                 for (
int i = 3; i < 6; i++) prior.cov_inv(i, i) = 100.0;
 
   96                     for (
int i = 3; i < 6; i++)
 
   97                         ASSERT_NEAR_(result.
optimalPose[i], prior.mean[i], 0.05);
 
  104         std::cout << 
"Case:" << Case << 
"\n" 
  105                   << 
"Found    optimalPose: " << result.
optimalPose << std::endl;
 
  106         std::cout << 
"Expected optimalPose: " << expected << std::endl;
 
  117 int main([[maybe_unused]] 
int argc, [[maybe_unused]] 
char** argv)
 
  119     using mrpt::poses::CPose3D;
 
  120     using namespace mrpt;  
 
  124         test_opt_prior(CPose3D::FromXYZYawPitchRoll(1.0, 2.0, 3.0, 5.0_deg, 15.0_deg, 20.0_deg));
 
  126     catch (std::exception& e)
 
  128         std::cerr << mrpt::exception_to_str(e) << 
"\n";