Open milidam opened 2 months ago
That occurs here [1], so the server timeout doesn't cancel the action in time. If you were to set this to say - 1 second - does that remove your issue? Also, what so you have your server_timeout
set to - that could be unrealistically short.
It looks like this condition was added in [2] and may need to (generally speaking) have a longer timeout than the server timeout proportional to steady-state BT node ticking. If we're halting / exiting out a BT, we may find it better to have the rate exceeded a bit in exchange for a more realistic chance of those actions being canceled successfully.
Also, the map is quite big, and the planner_server takes some time to compute a path. The goal canceling occurred while the compute_path_to_pose action was still running.
This is definitely why. If you have a server timeout of 10ms and you've just started a planning request that is 100ms in length, then it won't always cancel in time. We added a cancel checker [3] in the Planner API so that we query in the planning loop if a cancel is requested to be more responsive, but that is not backported to Iron and you'll need to upgrade to Jazzy to receive that. That actually by itself might completely fix your issue.
[2] https://github.com/ros-navigation/navigation2/commit/bfb4506c9b6beaebfb8532b221b517a18e40ac3d
@milidam have you had a chance to look into these items? I'd love to get feedback on the precise nature of it to write up a solution for you to test
Hi @SteveMacenski,
Our server_timeout
is currently set to 100ms.
I haven't had time yet to try to reproduce the issue with an increased timeout.
Our planner's max_planning_time
is 30.0s.
Does that also increase the risk of not being able to actually cancel it?
Note that migration to Jazzy is planned, but not yet started.
I haven't had time yet to try to reproduce the issue with an increased timeout.
Do you know when you would be able to? If you increased that to 500ms or 1s and it went away for Follow Path, that could be something we could replace that spin with since that cancel should only happen when halting an entire tree on task exit (which keeping the 10ms tick rate is unnecessary)
Does that also increase the risk of not being able to actually cancel it?
If you haven't upgraded, I think so. This is why I want you to check for me :-) But that shouldn't impact the follow path action, just computing path to pose -- since canceling path planning that is mid-execution is only supported in Jazzy and newer.
Bug report
Required Info:
Steps to reproduce issue
In some cases, the
follow_path
action keeps on running after having canceled anavigate_to_pose
goal.Expected behavior
After canceling the
navigate_to_pose
goal, we would expect thecontroller_server
to properly interrupt itsfollow_path
action.Actual behavior
The
bt_navigator
gets aFailed to get result for compute_path_to_pose in node halt!
or aFailed to get result for follow_path in node halt!
error, and thecontroller_server
keeps on trying to follow the last received path.Additional information
In the case reported above, before that new instance of the
Starting path following
, in a previous attempt in the same instance of thenavigate_to_pose
behavior tree, thebt_navigator
already encountered the following errorwhat could indicate that the
bt_navigator
might somehow be desynchronized with thecontroller_server
?Also, the map is quite big, and the
planner_server
takes some time to compute a path. The goal canceling occurred while thecompute_path_to_pose
action was still running.