Skip to content

2.0.0

Choose a tag to compare

@vlk-jan vlk-jan released this 14 Sep 18:26
3ff1fb9

A major version because node parameters and public helpers are removed.

Removed

  • osm_cloud: the auto_utm and utm_to_local parameters and the publish_static_tf launch argument; transform_mode covers them
  • MapData: the flip and current_robot_position arguments and exclude_ways(); use apply_traversability(TraversabilityRules().extend(...)). The nodes' exclude_highway parameter is unchanged
  • utils.gpx: parse_path, parse_gpx_file, parse_yaml_file, convert_waypoint and utm_path_to_latlon. MapData reads GPX itself; YAML waypoint files are no longer accepted
  • The python -m map_data.pathsolver.replan CLI and its matplotlib visualizer; map_data_plan is the offline planner
  • Way.to_pcd_points and utils.points_to_graph_points
  • TraversabilityRules.describe, summary and edge_factor, OverpassClient.query, and utils.launch.package_config_dir (now utils.config.package_share)
  • The tqdm and matplotlib dependencies

Changed

  • RRTruns as Informed RRT: once a path is found it keeps improving it for up to rrt.improve_iter (200) iterations, sampling the informed ellipse with an adaptive rewiring radius. The settings live in a new rrt: section of config/planner_defaults.yaml
  • Grid Aand RRT paths are simplified once, over the whole route, instead of per segment and then again at the end
  • Obstacles are rasterised with shapely.contains_xy; the demo map's grid is identical
  • Viewer: collapsible panels are native <details> (the whole header toggles), the wormhole share dialog is a Bootstrap modal, and the duplicated frontend and route code is consolidated
  • Annotation stores in legacy formats are normalised once, when loaded

Fixed

  • Crossroad detection no longer invents junctions where one corridor is mapped twice. A node was a crossroad when several ways used it, so a cycleway or an annotated path drawn along an existing footway — which reuses its node ids — made a junction of every node of the shared run. A node is now a crossroad when more than two distinct neighbouring nodes leave it: two ways passing between the same neighbours are one path, three directions are a fork. On the full Stromovka map this drops 64 junctions, every one of them mid-corridor
  • Roads take part in crossroad detection. Only footways were considered, so a footway meeting a service road was not a junction at all and the same physical junction was found or missed depending on how the through way happened to be tagged — 93 of them on the full Stromovka map, 42 on one drawn road alone. This matters now that the graph planner routes over roads (highway_types: [footway, road])
  • The geometric detector used for annotated paths matches centre line against centre line. It tested the drawn line against the other way's buffered geometry, which yields the stretch of line inside a 3 m (footway) or 7 m (road) corridor rather than a crossing: a path merely running alongside a way reported a junction it never reaches, every real crossing was placed half a corridor — up to 3.5 m, most of the follower's 5 m enter radius — from where it happens, and the T-junction tolerance reached half a corridor too far. MapData.centre_line rebuilds the unbuffered line from a way's node ids
  • MapData.load recomputes the node-based crossroads instead of trusting the ones in the file, so a .mapdata written by an older version is corrected on load; crossroads that cannot be recomputed from node ids (an annotated path's) are kept as saved

Pull requests

Full Changelog: v1.4.0...v2.0.0 · changelog