main.cpp
Go to the documentation of this file.
1 
2 
3 #include <cstdlib>
4 #include <string>
5 
7 
8 #include "MapRegistration.h"
9 #include "models.h"
10 #include "pcl/io/pcd_io.h"
11 
12 namespace x = armarx;
13 
14 int
16 {
17 
18  auto mapRegistration = x::MapRegistration::createFromFile(
19  "/home/fabi/repos/RobotComponents/data/RobotComponents/maps/2021-04-06-09-27.carto");
20  const auto cloud = mapRegistration.readPointClouds();
21 
22  const auto clusters = mapRegistration.detectClusters(cloud);
23 
24  int i = 0;
25  for (const auto& cluster : clusters)
26  {
27  pcl::io::savePCDFileASCII("/tmp/cluster_" + std::to_string(i) + ".pcd", *cluster.points);
28  i++;
29  }
30 
31 
32  const x::Model pillarFront = x::makeCube({-1.8, 3.85 - 0.112}, 0.42);
33  const x::Model pillarBack = x::makeCube({-1.8, -0.4}, 0.42);
34  const std::vector<x::Model> models{pillarFront, pillarBack};
35 
36 
37  const auto associations = mapRegistration.matchModelsToClusters(models, clusters);
38 
39 
40  std::vector<x::MapRegistration::ModelCorrection> corrections;
41 
42 
43  int j = 0;
44  for (const auto& association : associations)
45  {
46 
47  // mapRegistration.align(model, cluster);
48  pcl::io::savePCDFileASCII("/tmp/assoc_" + std::to_string(j) + ".pcd",
49  *association.cluster.points);
50 
51  x::MapRegistration::ModelCorrection mc =
52  mapRegistration.alignModelToCluster(association.model, association.cluster);
53  corrections.push_back(mc);
54 
55  ARMARX_INFO << "Correction" << mc.correction.translation();
56 
57  j++;
58  }
59 
60  x::MapRegistration::ModelCorrection combinedCorrection =
61  mapRegistration.computeCombinedCorrection(models, corrections);
62 
63  mapRegistration.visualizeResult(cloud, models, combinedCorrection);
64 
65 
66  pcl::io::savePCDFileASCII("/tmp/cloud.pcd", *cloud);
67 
68  return EXIT_SUCCESS;
69 }
armarx::armem::server::motions::mdb::conversion::createFromFile
std::optional< armarx::motion::mdb::arondto::MDBReference > createFromFile(const std::filesystem::path &pathToInfoJson)
Definition: mdb_conversions.cpp:9
main
int main(int argc, char *argv[])
Definition: main.cpp:32
armarx::to_string
const std::string & to_string(const std::string &s)
Definition: StringHelpers.h:41
models.h
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
MapRegistration.h
Logging.h
armarx::wykobi::makeCube
Model makeCube(const Eigen::Vector2f &position, const float width)
Definition: models.h:39
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27