Skip to content

Commit 0ccebf4

Browse files
authored
Cleanup distance computations (#19)
1 parent ee75e28 commit 0ccebf4

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

src/grid_map_geo.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -258,34 +258,29 @@ bool GridMapGeo::addLayerFromGeotiff(const std::string &layer_name, const std::s
258258
bool GridMapGeo::AddLayerDistanceTransform(const double surface_distance, const std::string &layer_name,
259259
std::string reference_layer) {
260260
grid_map_.add(layer_name);
261-
// grid_map_.add("offset_surface");
262-
// grid_map_.add("error_surface");
263261

264262
for (grid_map::GridMapIterator iterator(grid_map_); !iterator.isPastEnd(); ++iterator) {
265263
const grid_map::Index MapIndex = *iterator;
266264
Eigen::Vector3d center_pos;
267265
grid_map_.getPosition3(reference_layer, MapIndex, center_pos);
268-
// grid_map_.at("offset_surface", MapIndex) = center_pos(2); // elevation
269266
for (grid_map::CircleIterator submapIterator(grid_map_, center_pos.head(2), std::abs(surface_distance));
270267
!submapIterator.isPastEnd(); ++submapIterator) {
271268
const grid_map::Index SubmapIndex = *submapIterator;
272269
Eigen::Vector3d cell_position;
273270
grid_map_.getPosition3(reference_layer, SubmapIndex, cell_position);
274-
double distance = (cell_position - center_pos).norm();
275-
if (distance < std::abs(surface_distance)) {
276-
double distance_2d = (cell_position.head(2) - center_pos.head(2)).norm();
277-
double elevation_difference = std::sqrt(std::pow(surface_distance, 2) - std::pow(distance_2d, 2));
278-
279-
if (surface_distance > 0.0) {
271+
double distance_2d = (cell_position.head(2) - center_pos.head(2)).norm();
272+
double elevation_difference = std::sqrt(std::pow(surface_distance, 2) - std::pow(distance_2d, 2));
273+
if (surface_distance > 0.0) {
274+
if (center_pos(2) < cell_position(2) + elevation_difference) {
280275
center_pos(2) = cell_position(2) + elevation_difference;
281-
} else {
276+
}
277+
} else {
278+
if (center_pos(2) > cell_position(2) - elevation_difference) {
282279
center_pos(2) = cell_position(2) - elevation_difference;
283280
}
284281
}
285282
}
286283
grid_map_.at(layer_name, MapIndex) = center_pos(2);
287-
// grid_map_.at("error_surface", MapIndex) =
288-
// grid_map_.at("distance_surface", MapIndex) - grid_map_.at("offset_surface", MapIndex); // elevation
289284
}
290285
return true;
291286
}

0 commit comments

Comments
 (0)