Comments (7)
You are right. @corot You did that, right? It is highly problematic. We should find a better way for do replanning on controller level. @alireza-hosseini Thank you for the issue! Also we should ensure that the robot has stopped in case of message loss.
from move_base_flex.
I agree... makes fully sense to send a zero velocity when interrupting the controller. But then we need a nice way to start following a new plan without stopping the controller. Maybe we can add another service: new_path that just pass the new path to the controller w/o stopping it, or does nothing if controller is not working.
For the stopMoving method... well, it actually stops motion by interrupting the controller thread. What do you mean exactly, @alireza-hosseini? What would you propose instead?
from move_base_flex.
@spuetz Thanks for your fast reply,
@corot About the stopMoving
method, what I meant was since it's just interrupting the thread, the code inside the catch
statement of the thread will be executed which stops the controller from planning not the robot itself, so it's a bit confusing. I think the solution can be simpler if we just publish the zero command velocity in case of preemption or even we can let the action client decide about that by adding a new boolean field for example to the ExePath
action goal and only if the value is True
it will publish the zero.
from move_base_flex.
@corot Should we comment-in that line for now, and rethink the replanning strategy here?
from move_base_flex.
for me , ok.
@alireza-hosseini, I agree is bad naming, but is coherent, because "moving" here really means "controlling", not physical robot motion
from move_base_flex.
Easy part done. For better handling replanning, we must either switch to normal action server (not simple) or open a secondary channel apart from the exe_path action to feed new plans without stopping it
from move_base_flex.
So merged the PR, I have restored the zero-velocity message when exe_path is stopped.
Next step is to retarget exe_path to follow new plans without stopping, actually without stopping and restarting the action, but for this we need the new advanced action server @spuetz is working on
from move_base_flex.
Related Issues (20)
- Bug with Teb Local Planner? Can't Load Footprint for Trajectory Optimization HOT 1
- The move_base_flex function package cannot go to a new target point after reaching the target point? HOT 1
- Move_base_flex canβt realize the recovery function after adding the recovery function package? HOT 1
- multiple planner retries despite setting "planner_max_retries" to 0 HOT 8
- move_base action: cancel previous goal if get_path fails upon receiving a new one HOT 5
- Race condition when updating goal for ExePath
- Costmap Safety Check Doesn't Quite Work as Expected HOT 1
- GetPath fails after "succesfull" Recovery
- cannot launch node of type [mbf_costmap_nav/mbf_costmap_nav] HOT 1
- Controller plugin wrapper always returns "Goal reached" message when computeVelocityCommands succeeds
- why we need `for( auto& node: tree.nodes)` inside `mbf_behavior_tree.cpp` node file?
- ExePath Action does not follow the path HOT 4
- Cannot build package from source or binary
- Pluginlib ClassLoader giving severe warning when shutting down the move_base_flex node
- Execution of get_path action interrupts exe_path action
- MBF will block the main thread for an arbitrary time when canceling an execution
- ExePath Action to follow a given path like waypoints? HOT 1
- Failed to load wave front planner and mmp planner HOT 2
- Hiding Errors on Initialization
- Load multiple planners and controllers HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from move_base_flex.