Replies: 3 comments 1 reply
-
|
If you have the route edges/nodes from your fleet manager, why do you need the Route Server? Simply use those and the preemption commands with the new unlocked nodes/edges as they are given to a particular robot to continue on its mission. This seems very straight forward. I don't see why you'd involve the route server if your fleet manager is essentially acting as the route server to provide the nodes and edges to traverse (except if you want to use it to perform actions at each; then I can understand but the issue becomes less using the route planner and more using the route behaviors). The update / 'dynamic' changes are trivial to handle in the BT / FollowPath. These are not unique or difficult. Certainly it could be valuable to allow the route graph to be dynamically adjusted in the Route Server, but I question if that's really what you want in such case. It sounds like you just want to call the navigator with your new set of nodes/edges when new ones are unlocked and update paths generated by those nodes/edges to send to the controller server as a path update. If you did want to use the route server because you were embedding metadata for actions along the route set by your fleet manager -- then what seems most sensible to me is to create a new action API in the Route Server that when provided a precomputed route to use that to track and action the operations against (rather than computing it itself given start/goal information). That should be pretty easy to do and would be a welcome pull request. Then in your BT you use that from your given new fleet manager derived route. Would that not better solve your needs? |
Beta Was this translation helpful? Give feedback.
-
|
After sleeping on the implementation, I am questioning whether it makes sense to expend on the idea of non-navigational tasking within a navigational framework. The operations manager certainly is a useful idea, and I'll probably carry forward something similar in my own "mission client" implementation. Thanks for the feedback. |
Beta Was this translation helpful? Give feedback.
-
|
I'm not entirely following your train of thought from a first glance, but sounds like you decided on another direction. I think you can do everything you want in this framework if we simply add an action to the Route Server that gives a provided route from the fleet manager and letting the rest of the tracking / handling go as usual. The controller server only needs to know about the next edge(s) that are free (from the fleet manager or otherwise pruned to the locked region it can travel within) to handle the deconfliction problem easily. I don't think anything related to appending / updating / extending the route is needed or sensible. Just a new |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I am investigating ways of implementing fleet management, VDA5050 in particular, within an industrial settings. A majority of the time, if the fleet manager does not provide a prescribed path, we will be behaving as if we were a "line-following" robot following paths between nodes in a manner very similar to the spline paths generated by ComputeRoute via the route server. Certainly, I could leverage standard bt_navigator functionality via NavigateThroughPoses directly with some kind of spline planner, and track progress via some kind of hard-coded state machine and halt for various "blocking" actions like manipulating/picking/dropping objects in the facility. However, the route server "feels" very much like a possible solution.
The "dynamic" issue is we also have to contend with upstream fleet traffic management via the notion of the node "horizon (an arbitrary node along the route before the final goal we cannot yet pass beyond)" vs the final node "goal", with the "horizon" being updated in subsequent order updates, with the expectation we will "wait" at the horizon once we reach it and wait for more nodes up to the goal to be "released". We also have to contend with the fact that an order update could come in during the path follow that may append another node to the graph, or any nodes in the order update beyond the current "horizon" may have new/updated actions to perform.
The Route Server is very "static" in its behavior. I could generate a geoJSON file from the initial order, but I would still have to contend with order updates.
Some feature ideas for consideration:
I could envision a fully "reactive" event system this way:
We just need to contend with the fact that the Route length could be extended after initial graph load, and while we are still tracking.
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions