a-b-street / a-b-street/abstreet
Looping uber-turn causing a crash
- Langage dominant
- Rust
- Étoiles
- 8.2k
- Forks
- 380
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
I've seen a crash at https://github.com/a-b-street/abstreet/blob/37404044e3e3f6ae2c8e85eeb05f9691c1df8197/map_model/src/pathfind/v2.rs#L299 in a few maps, like leeds/huge. We're transforming directed road-level uber turns to lane-level uber-turns, and if we don't wind up with the same number of input and output, the assertion trips.
The example in Leeds:
```
UberTurnV2 { path: [MovementID { from: DirectedRoadID { road: RoadID(21528), dir: Fwd }, to: DirectedRoadID { road: RoadID(21529), dir: Fwd }, parent: IntersectionID(17376), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(21529), dir: Fwd }, to: DirectedRoadID { road: RoadID(21559), dir: Fwd }, parent: IntersectionID(1216), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(21559), dir: Fwd }, to: DirectedRoadID { road: RoadID(21561), dir: Fwd }, parent: IntersectionID(17378), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(21561), dir: Fwd }, to: DirectedRoadID { road: RoadID(21560), dir: Fwd }, parent: IntersectionID(9052), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(21560), dir: Fwd }, to: DirectedRoadID { road: RoadID(21532), dir: Fwd }, parent: IntersectionID(17377), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(21532), dir: Fwd }, to: DirectedRoadID { road: RoadID(705), dir: Fwd }, parent: IntersectionID(1216), crosswalk: false }, MovementID { from: DirectedRoadID { road: RoadID(705), dir: Fwd }, to: DirectedRoadID { road: RoadID(706), dir: Fwd }, parent: IntersectionID(14873), crosswalk: false }] }
```
Bit of a mouthful, but I traced out what this looks like:

And we uh, have a loop in the uber-turn, but pathfinding v1 doesn't trace the loop. Based on how we do a graph search to transform v2->v1, it makes sense why the loop vanishes. My question is how we possibly wound up with a loop in the first place
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.