You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't we leave this the responsibility of the running plugin? We are using MoveBaseFlex in our robot but our robot does not have to stop when it receives a new plan from the planner. Now, the previous plan gets preempted and the robot continuous following the next plan. However, with this commit, a zero velocity is published in between. So it is braking the interface IMO. I don't think this should be in the "general navigation framework" but it should be implemented in the cancel hook of the controller (if desired). Related to #109 (same arguing).
The reason will be displayed to describe this comment to others. Learn more.
But there's something worng here: if you keep sending new plans to the robot without stopping the controller (that is, send new goals to exe_path while another is running), we adopt the new plan and continue the navigation uninterrupted, so no zero-velocity command should be send. Code here. This requires two conditions, though:
you don't change your concurrency slot (or let the default, that it's always 0)
you don't change your controller
How are you sending the new plans? Please double check that you are not cancelling exe_path and the calling it again with the new plan.
The reason will be displayed to describe this comment to others. Learn more.
So here? And this is only triggered when a user explicitly cancels the running goal. So the running goal on the same concurrency slot is not cancelled when a new goal is received (this would be the case with a default SimpleActionServer)? How does the user from the running goal get notified about the fact that the previous plan is not pursuit anymore?
The reason will be displayed to describe this comment to others. Learn more.
No, that line is triggered when you send a new goal with different plugin or concurrency slot. Otherwise, you run this. We detect the fact that the new goal is to be executed with the same plugin and in the same concurrency slot, so we don't cancel the action in progress but just set a new plan. On the client side, you don't get any notification; just the second goal replaces the first one.
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't we leave this the responsibility of the running
plugin
? We are using MoveBaseFlex in our robot but our robot does not have to stop when it receives a new plan from the planner. Now, the previous plan gets preempted and the robot continuous following the next plan. However, with this commit, a zero velocity is published in between. So it is braking the interface IMO. I don't think this should be in the "general navigation framework" but it should be implemented in thecancel
hook of the controller (if desired). Related to #109 (same arguing).e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But there's something worng here: if you keep sending new plans to the robot without stopping the controller (that is, send new goals to exe_path while another is running), we adopt the new plan and continue the navigation uninterrupted, so no zero-velocity command should be send. Code here. This requires two conditions, though:
How are you sending the new plans? Please double check that you are not cancelling exe_path and the calling it again with the new plan.
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is indeed what we are doing. Just to be clear, who is calling the
cancel
method then? And when?e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean this cancel? Is the exe_path action cancel callback. Do you print something to verify that it's getting called?
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So here? And this is only triggered when a user explicitly cancels the running goal. So the running goal on the same concurrency slot is not cancelled when a new goal is received (this would be the case with a default SimpleActionServer)? How does the user from the running goal get notified about the fact that the previous plan is not pursuit anymore?
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, that line is triggered when you send a new goal with different plugin or concurrency slot. Otherwise, you run this. We detect the fact that the new goal is to be executed with the same plugin and in the same concurrency slot, so we don't cancel the action in progress but just set a new plan. On the client side, you don't get any notification; just the second goal replaces the first one.
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, this clears things up! Thanks!
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool!
Can I close the issue?
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was more regarding this commit, there wasn't an issue attached :)
e4cdbb9
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah! true. Sorry. Anyway, we will put that zero-velocity command under a parameter, so users can disable it. See discussion on #171 for details