Skip to content

[RPP/DWA/TEB] When NavThroughPose has an intersecting loop, it can occasionally pick the wrong path segment #2622

@SteveMacenski

Description

@SteveMacenski

I suspect its for one of a few reasons

  • If it does "skip", its because the path is fully contained within the local costmap, so the pruning doesn't get rid of the future-looping section and then the "cross" point later in the path is technically closer to the lookahead requested point than the next sequential point based on some very small amount closer (<1mm)
  • The fact that it jumps to that part once the robot hits that "cross" point makes me think its actually an issue in transforming the path, where the point closest to the robot becomes the other side of the "cross" and so it uses that (<1mm).

There's a couple of potential fixes:

  • When we find the points closest to the robot to start transforming the path from, there should be some tolerance, like 0.01 or something, that if there are multiple points within that distance range of each other, use the first in the path rather than the closest one. That should help it pick the right part of the cross
  • Rather than only checking when it leaves the costmap to prune til, also add a path distance element, once the path length from the closest pose is larger than N meters, also prune past those points. That way if there's a cross in the local costmap, as long as we pick the first point, we should prune out the rest

I suppose this part in erasing the passed parts should be a solution if there is no replanning (so we don't infinitely loop cauased by selecting the "first" part of the intersection in the path). So I think doing those 2 points should cover that edge case completely.

I'm pretty sure that DWA and TEB would have this exact same problem, but its something we can do something about in RPP much more easily.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions