31 #include <Eigen/Geometry>
33 #include <pcl/point_cloud.h>
34 #include <pcl/point_types.h>
36 #include <SimoxUtility/shapes/OrientedBox.h>
39 #include <ArmarXCore/interface/serialization/Eigen/Eigen_fdi.h>
45 #include "../InterpolatingTimeQueue.h"
50 class MapBuilderInterface;
74 std::array<Eigen::Vector2f, 4>
77 const Eigen::Affine2f centerPose =
78 Eigen::Translation2f(
center) * Eigen::Rotation2Df(
angle);
80 const Eigen::Vector2f e2 =
extends / 2.F;
82 return {centerPose * Eigen::Vector2f{e2.x(), e2.y()},
83 centerPose * Eigen::Vector2f{-e2.x(), e2.y()},
84 centerPose * Eigen::Vector2f{-e2.x(), -e2.y()},
85 centerPose * Eigen::Vector2f{e2.x(), -e2.y()}};
91 const float cornerAngle =
angle + (i - 2) * M_PI_2f32;
94 ref_T_corner.translation().template head<2>() =
boundary().at(i);
95 ref_T_corner.linear() =
96 Eigen::AngleAxisf(cornerAngle, Eigen::Vector3f::UnitZ()).toRotationMatrix();
105 MapRegistration(std::unique_ptr<::cartographer::mapping::MapBuilderInterface> mapBuilder);
143 const Eigen::Isometry3f& world_T_map)
const;
161 const Eigen::Isometry3f& world_T_map)
const;
165 const std::vector<ModelCorrection>& modelCorrections)
const;
168 const std::vector<wykobi::Model>& models,
173 simox::math::InterpolatingTimeQueue<simox::math::PoseStamped>
robotPoseQueue()
const;
175 std::vector<Eigen::Isometry3f>
robotPoses()
const;
186 std::unique_ptr<::cartographer::mapping::MapBuilderInterface> mapBuilder;