Skip to content

NavMap InflationFilter: inflate from 3D distances to the real border - #116

Merged
fmrico merged 1 commit into
rollingfrom
navmap_inflation_distance_field
Oct 15, 2026
Merged

fmrico merged 1 commit into
rollingfrom
navmap_inflation_distance_field

Conversation

@fmrico

@fmrico fmrico commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Fixes #113

Depends on EasyNavigation/NavMap#33 (NavMap::distance_field). CI will fail until that PR is merged into NavMap rolling.

The NavMap InflationFilter now takes its distances from NavMap::distance_field:

  • 3D distances along the surface, to the obstacle cells and, with inflate_borders (new, default true), to the open edges of the mesh as real segments;
  • border cells are no longer lethal as a whole: they get the cost of their real distance to the edge;
  • ramps get their true (3D) distances;
  • an obstacle on one floor does not inflate the floor above;
  • the costmap_2d cost formula is unchanged, and unknown cells keep their value and carry the distance as before.

Validation

Parking garage playground (multi-level NavMap at 0.4 m, ramps 2.9 m wide between side walls, 0.7 m inscribed radius):

  • before: the planner found no path to the upper floors, because the ramps came out blocked;
  • after: the Summit reaches floor 1 (62 s) and floor 2 (129 s).

Battery of the other NavMap playgrounds: unchanged.

Playground Before After
Summit excavation FINISHED, 0.58 m FINISHED, 0.60 m
TIAGo house FINISHED, 0.18 m FINISHED, 0.17 m
Summit warehouse FINISHED FINISHED

The warehouse time varies with an RPP issue at the goal (#115), not with this change.

Tests

5 new tests:

  • border cells are not lethal and cost by their real distance;
  • a narrow corridor keeps its true width;
  • inflate_borders: false;
  • slope distance along the surface;
  • an obstacle on one floor does not inflate the floor above.

The existing inflation tests pass unchanged.

The filter now takes its distances from NavMap::distance_field: 3D, along
the surface, to the obstacle cells and (inflate_borders, default true) to
the open edges of the mesh as real segments. Border cells are no longer
lethal as a whole, ramps get their true distances, and an obstacle on one
floor does not inflate the floor above. The costmap_2d cost formula is
unchanged.

Fixes #113

Signed-off-by: Francisco Martín Rico <fmrico@gmail.com>
@fmrico
fmrico merged commit b0888c2 into rolling Oct 15, 2026
1 of 2 checks passed
@fmrico
fmrico deleted the navmap_inflation_distance_field branch October 15, 2026 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NavMap InflationFilter: border cells are lethal and distances ignore z

1 participant