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

[Collision monitor] Slowdown field that limit speed, not reduce it #3514

Closed
BriceRenaudeau opened this issue Mar 28, 2023 · 5 comments
Closed

Comments

@BriceRenaudeau
Copy link
Contributor

BriceRenaudeau commented Mar 28, 2023

Feature request

We would like a zone that clamps the command if there is an obstacle inside.
In our use case, we prefer to have a slowdown field that limits the speed to a fixed value. Now it is multiplying it with a coef.

Now, if there is an obstacle in the field and I send a small command the output will be even slower.

Feature description

We would like a field that limits the command to a fixed value.

That's the behavior of a real low-level safety field.

Implementation considerations

What about robots with different min(-) and max(+) velocities? Use a single value with a *-1 or add a parameter for min_vel?

It can be another model Limit model or a parameter to change the behavior of the slowdown model.

@BriceRenaudeau BriceRenaudeau changed the title [Collision monitor] Slowdown field should limit not reduce speed [Collision monitor] Slowdown field that limit speed, not reduce it Mar 28, 2023
@SteveMacenski
Copy link
Member

Sounds reasonable enough, I look forward to reviewing a PR! 😄

There could be 2 slowdown modes, one for percentage and another for absolute. I suppose a parameter could do the trick as well and be less invasive.

If you're selecting absolute minimum velocities, that's on the application designer to make sure the minimum of what you're requesting is valid and appropriate for the situation. When selecting the polygon points and the settings of each polygon's slowdown characteristics, you should know if its +/- to know how you'd like to treat it.

@BriceRenaudeau
Copy link
Contributor Author

Thanks, we will make it soon.

@BriceRenaudeau
Copy link
Contributor Author

BriceRenaudeau commented Mar 30, 2023

While implementing the new mode for the slowdown, I encountered an issue. It's pretty sure we will want to have no one limit for the 3 components (x, y, tw) but 3 different limits. Also Action robot_action doesn't have a place for a different mode of slowdown.

Hence I think it's better to add a new type (name LIMIT?) than to add several parameters to the slowdown type.

@SteveMacenski
Copy link
Member

SteveMacenski commented Mar 30, 2023

How we've done this in the speed limiting costmap filter is to use the transitional velocity absolute limit and then scale back the angular velocity proportional to it (e.g. if the max is 1m/s and you set it to 0.5m/s via absolute, we calculate the percentage reduction that represents and apply it to the angular velocity).

Would that be sufficient? If not, then having separate values is OK and I agree a new naming structure is sensible. I like LIMIT

@SteveMacenski
Copy link
Member

PR imminently to be merged

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

No branches or pull requests

2 participants