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
12namespace x = armarx;
13
14int
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}
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
This file offers overloads of toIce() and fromIce() functions for STL container types.