15 #include <gtest/gtest.h>
29 using testing::StaticOccupancyGrid;
31 TEST(Raycasting, Nominal) {
32 constexpr
double kResolution = 0.5;
39 false,
false,
false,
false,
false,
40 false,
false,
false,
false,
false,
41 false,
false, true ,
false,
false,
42 false,
false,
false,
false,
false,
43 false,
false,
false,
false,
false},
47 constexpr
double kMaxRange = 5.;
51 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{0.5, 0.}};
52 const auto ray =
Ray2d{grid, pose, kMaxRange};
58 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{0., 1.}};
59 const auto ray =
Ray2d{grid, pose, kMaxRange};
65 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{0., 1.}};
66 const auto ray =
Ray2d{grid, pose, kMaxRange};
68 EXPECT_EQ(distance, std::nullopt);
73 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{1., 1.}};
74 const auto ray =
Ray2d{grid, pose, kMaxRange};
76 EXPECT_EQ(distance, 0.);
81 constexpr
double kShortenedRange = 1.;
83 const auto ray =
Ray2d{grid, pose, kShortenedRange};
89 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{1., 0.}};
90 const auto ray =
Ray2d{grid, pose, kMaxRange};
92 EXPECT_EQ(distance, 1.);
97 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{0., 0.}};
98 const auto ray =
Ray2d{grid, pose, kMaxRange};
100 EXPECT_EQ(distance, std::sqrt(2));
104 TEST(Raycasting, NonIdentityGridOrigin) {
105 constexpr
double kResolution = 0.5;
114 false,
false,
false,
false,
false,
115 false,
false,
false,
false,
false,
116 false,
false, true ,
false,
false,
117 false,
false,
false,
false,
false,
118 false,
false,
false,
false,
false},
119 kResolution, origin};
122 constexpr
double kMaxRange = 5.;
126 const auto pose =
Sophus::SE2d{0., Eigen::Vector2d{0.5, 0.}};
127 const auto ray =
Ray2d{grid, pose, kMaxRange};
129 EXPECT_EQ(distance, std::sqrt(2));
133 TEST(BaselineRaycasting, Nominal) {
134 constexpr
double kResolution = 0.5;
141 false,
false,
false,
false,
false,
142 false,
false,
false,
false,
false,
143 false,
false, true ,
false,
false,
144 false,
false,
false,
false,
false,
145 false,
false,
false,
false,
false},
149 constexpr
double kMaxRange = 5.;
155 const auto pose = Eigen::Vector2d{0.5, 0.};
156 const auto source = grid.cell_near(pose);
163 const auto pose = Eigen::Vector2d{0., 1.};
164 const auto source = grid.cell_near(pose);
171 const auto pose = Eigen::Vector2d{0., 1.};
172 const auto source = grid.cell_near(pose);
179 const auto pose = Eigen::Vector2d{1., 1.};
180 const auto source = grid.cell_near(pose);
187 constexpr
double kShortenedRange = 1.;
188 const auto pose = Eigen::Vector2d{0., 0.};
189 const auto source = grid.cell_near(pose);
196 const auto pose = Eigen::Vector2d{1., 0.};
197 const auto source = grid.cell_near(pose);
204 const auto pose = Eigen::Vector2d{0., 0.};
205 const auto source = grid.cell_near(pose);