magazino / move_base_flex

Move Base Flex: a backwards-compatible replacement for move_base
https://uos.github.io/mbf_docs/
BSD 3-Clause "New" or "Revised" License
429 stars 154 forks source link

mbf doesn't cancel when returning BLOCKED_PATH in computeVelocityCommands #212

Closed Timple closed 4 years ago

Timple commented 4 years ago

move_base_flex doesn't cancel the action when returning BLOCKED_PATH in computeVelocityCommands.

I would expect this to happen here somewhere. But instead only NO_LOCAL_CMD remains of all the error options that can be given.

I would expect a cancel when an error in the controller occurs. Am I missing something or is this functionality missing?

corot commented 4 years ago

Are you calling the move_base action? If you are instead calling the exe_path action, it should fail with a BLOCKED_PATH outcome.

One thing that could be happening is that controller_max_retries is not 0, and so MBF retries calling computeVelocityCmd and it succeeds after some retries.

On Thu, Jul 16, 2020 at 6:48 PM Tim Clephas notifications@github.com wrote:

move_base_flex doesn't cancel the action when returning BLOCKED_PATH in computeVelocityCommands.

I would expect this to happen here https://github.com/magazino/move_base_flex/blob/f64a77317043cd42d7449522edb2fd2a342df01c/mbf_abstract_nav/src/abstract_controller_execution.cpp#L381 somewhere. But instead only NO_LOCAL_CMD https://github.com/magazino/move_base_flex/blob/f64a77317043cd42d7449522edb2fd2a342df01c/mbf_abstract_nav/src/abstract_controller_execution.cpp#L397 remains of all the error options that can be given.

I would expect a cancel when an error in the controller occurs. Am I missing something or is this functionality missing?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/magazino/move_base_flex/issues/212, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACOYMVD4X7BIQKKP57BUJDR33EGZANCNFSM4O35WUFQ .

Timple commented 4 years ago

controller_max_retries is not 0

Ah, this was one part of the problem.

The other was that the cancel() function is called even though we just send a failure and no goals where active. We didn't expect this and thus also didn't handle this very nice. That's solved now!

Thanks for your assistance, was our bug after all.