Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "cartographer/sensor/point_cloud.h"
00018
00019 #include <cmath>
00020
00021 #include "cartographer/transform/transform.h"
00022 #include "gtest/gtest.h"
00023
00024 namespace cartographer {
00025 namespace sensor {
00026 namespace {
00027
00028 TEST(PointCloudTest, TransformPointCloud) {
00029 PointCloud point_cloud;
00030 point_cloud.push_back({Eigen::Vector3f{0.5f, 0.5f, 1.f}});
00031 point_cloud.push_back({Eigen::Vector3f{3.5f, 0.5f, 42.f}});
00032 const PointCloud transformed_point_cloud = TransformPointCloud(
00033 point_cloud, transform::Embed3D(transform::Rigid2f::Rotation(M_PI_2)));
00034 EXPECT_NEAR(-0.5f, transformed_point_cloud[0].position.x(), 1e-6);
00035 EXPECT_NEAR(0.5f, transformed_point_cloud[0].position.y(), 1e-6);
00036 EXPECT_NEAR(-0.5f, transformed_point_cloud[1].position.x(), 1e-6);
00037 EXPECT_NEAR(3.5f, transformed_point_cloud[1].position.y(), 1e-6);
00038 }
00039
00040 TEST(PointCloudTest, TransformTimedPointCloud) {
00041 TimedPointCloud point_cloud;
00042 point_cloud.push_back({Eigen::Vector3f{0.5f, 0.5f, 1.f}, 0.f});
00043 point_cloud.push_back({Eigen::Vector3f{3.5f, 0.5f, 42.f}, 0.f});
00044 const TimedPointCloud transformed_point_cloud = TransformTimedPointCloud(
00045 point_cloud, transform::Embed3D(transform::Rigid2f::Rotation(M_PI_2)));
00046 EXPECT_NEAR(-0.5f, transformed_point_cloud[0].position.x(), 1e-6);
00047 EXPECT_NEAR(0.5f, transformed_point_cloud[0].position.y(), 1e-6);
00048 EXPECT_NEAR(-0.5f, transformed_point_cloud[1].position.x(), 1e-6);
00049 EXPECT_NEAR(3.5f, transformed_point_cloud[1].position.y(), 1e-6);
00050 }
00051
00052 }
00053 }
00054 }