Repository navigation
2.0.0
A major version because node parameters and public helpers are removed.
Removed
osm_cloud: theauto_utmandutm_to_localparameters and thepublish_static_tflaunch argument;transform_modecovers themMapData: theflipandcurrent_robot_positionarguments andexclude_ways(); useapply_traversability(TraversabilityRules().extend(...)). The nodes'exclude_highwayparameter is unchangedutils.gpx:parse_path,parse_gpx_file,parse_yaml_file,convert_waypointandutm_path_to_latlon.MapDatareads GPX itself; YAML waypoint files are no longer accepted- The
python -m map_data.pathsolver.replanCLI and its matplotlib visualizer;map_data_planis the offline planner Way.to_pcd_pointsandutils.points_to_graph_pointsTraversabilityRules.describe,summaryandedge_factor,OverpassClient.query, andutils.launch.package_config_dir(nowutils.config.package_share)- The
tqdmandmatplotlibdependencies
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 newrrt:section ofconfig/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_linerebuilds the unbuffered line from a way's node ids MapData.loadrecomputes the node-based crossroads instead of trusting the ones in the file, so a.mapdatawritten 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