@@ -258,34 +258,29 @@ bool GridMapGeo::addLayerFromGeotiff(const std::string &layer_name, const std::s
258
258
bool GridMapGeo::AddLayerDistanceTransform (const double surface_distance, const std::string &layer_name,
259
259
std::string reference_layer) {
260
260
grid_map_.add (layer_name);
261
- // grid_map_.add("offset_surface");
262
- // grid_map_.add("error_surface");
263
261
264
262
for (grid_map::GridMapIterator iterator (grid_map_); !iterator.isPastEnd (); ++iterator) {
265
263
const grid_map::Index MapIndex = *iterator;
266
264
Eigen::Vector3d center_pos;
267
265
grid_map_.getPosition3 (reference_layer, MapIndex, center_pos);
268
- // grid_map_.at("offset_surface", MapIndex) = center_pos(2); // elevation
269
266
for (grid_map::CircleIterator submapIterator (grid_map_, center_pos.head (2 ), std::abs (surface_distance));
270
267
!submapIterator.isPastEnd (); ++submapIterator) {
271
268
const grid_map::Index SubmapIndex = *submapIterator;
272
269
Eigen::Vector3d cell_position;
273
270
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) {
280
275
center_pos (2 ) = cell_position (2 ) + elevation_difference;
281
- } else {
276
+ }
277
+ } else {
278
+ if (center_pos (2 ) > cell_position (2 ) - elevation_difference) {
282
279
center_pos (2 ) = cell_position (2 ) - elevation_difference;
283
280
}
284
281
}
285
282
}
286
283
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
289
284
}
290
285
return true ;
291
286
}
0 commit comments