Repository navigation
Add easynav_bigmap_maps_manager; navmap_planner: weighted A*, replan hysteresis, cheaper plans, multi-floor fixes; regulated_pp: height-aware goal - #177
Open
jmguerreroh wants to merge 3 commits into
Conversation
…floor fixes; regulated_pp: height-aware goal Signed-off-by: Jose Miguel <josemiguel.guerrero@urjc.es>
…oarse far away Signed-off-by: Jose Miguel <josemiguel.guerrero@urjc.es>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
easynav_bigmap_maps_manager: a maps manager for maps too big to plan on at full resolution. It holds one NavMap that is fine around the robot and coarse far away, re-meshes it as the robot moves and puts the sensor obstacles on it. Planners and controllers read it through the NavState (map.navmap) like any other NavMap.easynav_navmap_planner: weighted A*, a replanning hysteresis, plans that cost what they explore and not the size of the map, and fixes for floors over each other. Everything new is off by default except the floor fixes.easynav_regulated_pp_controller: a goal on another floor no longer counts as reached when the robot passes above or below it.easynav_bigmap_maps_managerTwo engines, chosen by
multilevel.enabled: the grid engine (outdoor terrain: a height grid meshed with RTIN) and the hierarchy engine (buildings with floors over each other: the NavMap's own triangles merged by clustering).occupancy,obstacles,inflated_obstacles,obstacle_hits,elevation,lod_size,traversed, published on<node>/bigmap/map.lengths.cell_size.minnear the robot up tocell_size.maxfar away, and always fine over ramps, narrow passages and the ground the robot has driven over.lod.observed); a finer map when there is no path (recovery.*); optional re-mesh in a worker (lod.async_remesh).easynav_navmap_maps_managerapplied on top.config/example_indoor.yaml,config/example_outdoor.yaml) and a README.easynav_navmap_plannerheuristic_weight(default 1, the admissible A* as before): weighted A* without re-opening; each NavCel is expanded once and paths are at most that factor longer.uint8of the map's size (no copy per plan), and the search buffers are validated by an epoch stamp instead of being reset.replan_hysteresis,replan_hysteresis_horizon(default 0, off): the path being followed is kept while it stays traversable unless a new one is shorter by that fraction, against the oscillation of replanning on a level-of-detail map. What is left of the path is measured in 3D and never starts behind the robot. Documented in the README of the package.last_search_stats_(NavCels expanded and pushed), for measurements.easynav_regulated_pp_controllerThe robot passing right above or below the goal in the plane was taken as at the goal. It now uses the system's
goal_tolerance.height. The default (10000 m) and a NavState without it ignore the height, as before.CI and README
easynav_bigmap_maps_manageris added to the packages thatrolling.yamlbuilds and to the table of the README.Testing
colcon testin a clean build from source (18 packages up to these three):easynav_navmap_plannereasynav_regulated_pp_controllereasynav_bigmap_maps_managerThe counts include the lint tests (
cpplint,uncrustify...). Same result with NavMap atrollingand with the NavMap branchesnavmap-core-fixesandnavmap-tools-dem. 17 new tests: weighted A*, hysteresis, floors, search statistics, a non-uint8cost layer, 10 plans in a row equal to the first of a new planner, and the goal on another floor. Skipped: tests that need data of your own (see the README of the plugin).Notes
uint8cost layer originally re-createdobstacleswith another type, which crashedNavMap::operator=(fixed in NavMap'snavmap-core-fixes). The test now uses a layer of its own (inflated_obstacles), so it passes with or without that fix.bigmap_bringup(the application and its parameter files) andeasynav_playground_bigmap(the simulations), which live in other repositories. Neither is needed to build or use the plugin.easynav_bigmap_maps_managerneedsnavmap_core,navmap_rosandeasynav_navmap_maps_manager.