@@ -39,15 +39,15 @@ TEST(NormalEstimation2DTest, SinglePoint) {
39
39
CreateNormalEstimationOptions2D (parameter_dictionary.get ());
40
40
auto range_data = sensor::RangeData ();
41
41
const size_t num_angles = 100 ;
42
- range_data.origin .x () = 0 .f ;
43
- range_data.origin .y () = 0 .f ;
42
+ const auto origin = Eigen::Vector3f::Zero ();
44
43
for (size_t angle_idx = 0 ; angle_idx < num_angles; ++angle_idx) {
45
44
const double angle = static_cast <double >(angle_idx) /
46
45
static_cast <double >(num_angles) * 2 . * M_PI -
47
46
M_PI;
48
47
range_data.returns = sensor::PointCloud (
49
48
{{Eigen::Vector3d{std::cos (angle), std::sin (angle), 0 .}
50
- .cast <float >()}});
49
+ .cast <float >(),
50
+ origin}});
51
51
std::vector<float > normals;
52
52
normals = EstimateNormals (range_data, options);
53
53
EXPECT_NEAR (common::NormalizeAngleDifference (angle - normals[0 ] - M_PI),
@@ -64,38 +64,43 @@ TEST(NormalEstimation2DTest, StraightLineGeometry) {
64
64
const proto::NormalEstimationOptions2D options =
65
65
CreateNormalEstimationOptions2D (parameter_dictionary.get ());
66
66
auto range_data = sensor::RangeData ();
67
- range_data.returns .push_back ({Eigen::Vector3f{-1 .f , 1 .f , 0 .f }});
68
- range_data.returns .push_back ({Eigen::Vector3f{0 .f , 1 .f , 0 .f }});
69
- range_data.returns .push_back ({Eigen::Vector3f{1 .f , 1 .f , 0 .f }});
70
- range_data.origin .x () = 0 .f ;
71
- range_data.origin .y () = 0 .f ;
67
+ const auto origin = Eigen::Vector3f::Zero ();
68
+ range_data.returns .push_back ({Eigen::Vector3f{-1 .f , 1 .f , 0 .f }, origin});
69
+ range_data.returns .push_back ({Eigen::Vector3f{0 .f , 1 .f , 0 .f }, origin});
70
+ range_data.returns .push_back ({Eigen::Vector3f{1 .f , 1 .f , 0 .f }, origin});
72
71
std::vector<float > normals;
73
72
normals = EstimateNormals (range_data, options);
74
73
for (const float normal : normals) {
75
74
EXPECT_NEAR (normal , -M_PI_2, 1e-4 );
76
75
}
77
76
normals.clear ();
78
- range_data.returns = sensor::PointCloud ({{Eigen::Vector3f{1 .f , 1 .f , 0 .f }},
79
- {Eigen::Vector3f{1 .f , 0 .f , 0 .f }},
80
- {Eigen::Vector3f{1 .f , -1 .f , 0 .f }}});
77
+ range_data.returns = sensor::PointCloud ({
78
+ {Eigen::Vector3f{1 .f , 1 .f , 0 .f }, origin},
79
+ {Eigen::Vector3f{1 .f , 0 .f , 0 .f }, origin},
80
+ {Eigen::Vector3f{1 .f , -1 .f , 0 .f }, origin},
81
+ });
81
82
normals = EstimateNormals (range_data, options);
82
83
for (const float normal : normals) {
83
84
EXPECT_NEAR (std::abs (normal ), M_PI, 1e-4 );
84
85
}
85
86
86
87
normals.clear ();
87
- range_data.returns = sensor::PointCloud ({{Eigen::Vector3f{1 .f , -1 .f , 0 .f }},
88
- {Eigen::Vector3f{0 .f , -1 .f , 0 .f }},
89
- {Eigen::Vector3f{-1 .f , -1 .f , 0 .f }}});
88
+ range_data.returns = sensor::PointCloud ({
89
+ {Eigen::Vector3f{1 .f , -1 .f , 0 .f }, origin},
90
+ {Eigen::Vector3f{0 .f , -1 .f , 0 .f }, origin},
91
+ {Eigen::Vector3f{-1 .f , -1 .f , 0 .f }, origin},
92
+ });
90
93
normals = EstimateNormals (range_data, options);
91
94
for (const float normal : normals) {
92
95
EXPECT_NEAR (normal , M_PI_2, 1e-4 );
93
96
}
94
97
95
98
normals.clear ();
96
- range_data.returns = sensor::PointCloud ({{Eigen::Vector3f{-1 .f , -1 .f , 0 .f }},
97
- {Eigen::Vector3f{-1 .f , 0 .f , 0 .f }},
98
- {Eigen::Vector3f{-1 .f , 1 .f , 0 .f }}});
99
+ range_data.returns = sensor::PointCloud ({
100
+ {Eigen::Vector3f{-1 .f , -1 .f , 0 .f }, origin},
101
+ {Eigen::Vector3f{-1 .f , 0 .f , 0 .f }, origin},
102
+ {Eigen::Vector3f{-1 .f , 1 .f , 0 .f }, origin},
103
+ });
99
104
normals = EstimateNormals (range_data, options);
100
105
for (const float normal : normals) {
101
106
EXPECT_NEAR (normal , 0 , 1e-4 );
@@ -115,16 +120,17 @@ TEST_P(CircularGeometry2DTest, NumSamplesPerNormal) {
115
120
const proto::NormalEstimationOptions2D options =
116
121
CreateNormalEstimationOptions2D (parameter_dictionary.get ());
117
122
auto range_data = sensor::RangeData ();
123
+ const auto origin = Eigen::Vector3f::Zero ();
118
124
const size_t num_angles = 100 ;
119
125
for (size_t angle_idx = 0 ; angle_idx < num_angles; ++angle_idx) {
120
126
const double angle = static_cast <double >(angle_idx) /
121
127
static_cast <double >(num_angles) * 2 . * M_PI -
122
128
M_PI;
123
129
range_data.returns .push_back (
124
- {Eigen::Vector3d{std::cos (angle), std::sin (angle), 0 .}.cast <float >()});
130
+ {Eigen::Vector3d{std::cos (angle), std::sin (angle), 0 .}.cast <float >(),
131
+ origin});
125
132
}
126
- range_data.origin .x () = 0 .f ;
127
- range_data.origin .y () = 0 .f ;
133
+ range_data.origin = origin;
128
134
std::vector<float > normals;
129
135
normals = EstimateNormals (range_data, options);
130
136
for (size_t angle_idx = 0 ; angle_idx < num_angles; ++angle_idx) {
0 commit comments