Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add search helper for goal angle tolerance #317

Merged
merged 22 commits into from
Jul 5, 2023

Conversation

renan028
Copy link
Contributor

@renan028 renan028 commented Mar 22, 2023

Description

Adding a class to search the space around the input goal and return the closest pose free of obstacles that respect both linear and angular tolerances.
During exploration, eight neighboring cells are added in a priority queue. By default, the cells are ordered by euclidean distance wrt to the start pose, but one can add a different strategy in the constructor.
The search stops when it finds a cell where the robot can be placed (footprint + padding + safety distance) without colliding with obstacles.
For each cell, we test multiple angles.

Example

In the figure below, the navigation goal is A (the blue dot) and the linear tolerance is the circle. The orientation of the goal is the Y-axis.
The red polygons are static obstacles (e.g. walls), orange polygons are dynamic obstacles (e.g. chairs, tables, boxes) and gray polygons are unknown space. The problem is to find the closest free space to the goal that the robot can be, i.e., its footprint is not in collision with any obstacle and the distance is equal or above a given clearance distance.

image

The goal orientation is not a valid solution:

image

But we can find a solution using the angle tolerance:
image

@renan028 renan028 force-pushed the goal_angle_tolerance branch from af86585 to 74f8925 Compare April 10, 2023 00:34
Copy link
Contributor

@RainerKuemmerle RainerKuemmerle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool feature! I just had time to quickly look at some syntax suggestions.

mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
mbf_costmap_nav/src/mbf_costmap_nav/search_helper.cpp Outdated Show resolved Hide resolved
@corot corot deleted the branch naturerobots:master July 3, 2023 06:35
@corot corot closed this Jul 3, 2023
@corot corot reopened this Jul 3, 2023
@renan028 renan028 force-pushed the goal_angle_tolerance branch from 813cd98 to 4502ae8 Compare July 3, 2023 06:53
@renan028 renan028 changed the base branch from js/FindValidPose.srv to master July 3, 2023 06:55
@corot corot merged commit cc5351a into naturerobots:master Jul 5, 2023
@renan028 renan028 deleted the goal_angle_tolerance branch July 7, 2023 05:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants