navigation2 icon indicating copy to clipboard operation
navigation2 copied to clipboard

Create reference implementation of multi-robot centralized planning & local refinement systems

Open SteveMacenski opened this issue 4 years ago • 6 comments

  • Central N robot path planner
  • For each N agent, refine based on current state of the world / agents around it (ORCA-D-esk)

There are several problems to handle prior to evaluation of the issue itself

  • How do we communicate each robot's pose and goal?
  • How do we communicate each robot's world view, TF, and other related data (or do we)?
  • How useful would this be in practice? Would companies / groups use this itself or just as a first-order starting point before building a custom solution?
  • Once a path is at an agent, does it refine that path to follow in the controller or in a local-shim-planner plugin and leverage something like OCRA-D for in intermediary refinement of the centrally developed path before going to a controller?

SteveMacenski avatar Oct 13 '21 19:10 SteveMacenski

Glad to see multi-robot support is under consideration~ I wonder if decentralized planner support is under consideration or on the roadmap? Just a thought for the third problem, it seems more natural (and could be commonly used?) to implement multi-robot system by using Nav2 as executor for point-to-point paths planned by some centralized planner hosted on higher level schedule system, since Nav2 is quite closer to robot level than application level. If using Nav2 for multi-robot support, I guess companies may have more interest in decentralized planning on the robot level?

liangyuwei avatar Oct 18 '21 00:10 liangyuwei

No multi-robot decentralized planner is under consideration. As far as I’m aware, that’s still an active research area lacking in hardened/viable generalized approaches. If my knowledge in this area is outdated, I’d appreciate some papers / methods / ideas if that is to be considered.

The centralized planner would be run in some global scheduler (eg cloud most probably) instance, it would not be intended to be run on the robots themselves, since its a centralized approach. The robots would ingest their individual task paths to track. A behavior tree would use that output instead of calling the planner server for global path planning. Though as the initial ticket references, there may be some local “refinement” of that global path between the centralized planner and the local trajectory planner, but that is remaining to be evaluated.

At least, those are my thoughts as a system designer, I’m also happy to adjust course if there are better ideas or prevailing methods I’m simply not aware of!

SteveMacenski avatar Oct 18 '21 03:10 SteveMacenski

Found a really nice github package: https://github.com/atb033/multi_agent_path_planning

Maybe useful, while considering any sort of implementation.

padhupradheep avatar Mar 30 '22 13:03 padhupradheep

Perhaps the local refinement of the global centralized paths could use decentralized approaches just to refine a bit in the local area, but I suspect if you use local trajectory planners that allow the robot to deviate due to dynamic obstacles in the scene, that should handle many situations. If the global centralized plan already established a valid path, this would be sufficient to handle minor deviations.

However without the centralized planners is where these shine, but many of them can be thought of as dynamic obstacle avoiding local trajectory planners themselves -- so at least the methods in the link aren't that novel in that respect.

SteveMacenski avatar Jun 02 '22 03:06 SteveMacenski

It is a package that moves multiple robots that I know. I'm glad if you can use it as a reference.

https://github.com/open-rmf/rmf_demos

Ryujiyasu avatar Jun 02 '22 05:06 Ryujiyasu