Running Multiple Agent Systems

Hey folks,

I wanted to start a discussion about running multiple agent systems. When I refer to a multiple agent system, I mean a system that is controlling multiple autonomous vehicles independently while restricting high level control to a single node/computer. An example that I am working on is generating optimal trajectories for multiple vehicles tracking a target. At certain times, I am generating a new trajectory for one or more vehicles. The catch is that the trajectory generation algorithm takes a few seconds to execute which means that without some form of concurrency, no other trajectories can be planned. This can cause issues in real time simulation and can even cause safety issues in a real system that may need to react to a new obstacle.

Since there is some research moving in the direction of controlling multiple autonomous vehicles, I thought it would be beneficial for us to discuss some possibilities here. Note that I am hoping to discuss high level algorithms such as optimal trajectory generation (that require knowledge of all vehicle’s trajectories) rather than lower level feedback controllers (which could only require immediate feedback of a single vehicle).

Some approaches I believe would work well include:

  • ROS - Have ROS handle the parallel tasks by creating each autonomous agent as a ROS node and running them all at the same time. This solution seems quite elegant however it does require that the system have ROS installed and any potential users of the code understand how to work with ROS.
  • Multithreading/Multiprocessing - Speaking specifically about Python (but this should generalize to other languages), it is possible to use the multithreading or multiprocessing packages to run the algorithms in parallel. This solution requires that the language being used has some form of parallel library available. It can also be difficult to debug and tough for beginners to understand.
1 Like

No specific suggestions on my part, but will follow this thread to see if others have suggestions / ideas.

Hey @mayyeboard,

Great discussion idea!

I suppose having a look at what is done for AI in large-scale RTS games might be interesting concerning this. I have a strong feeling much effort has been placed into this and certainly some of it must have made it to open algorithms / implementation examples that are publicly available.

I figure on this front it might be easier to stick to ROS and have it manage the low-level stuff (nodes, threads, synchronization, etc.). While ROS does have a learning curve I have a strong suspicion it is nowhere near the learning curve of managing multi-threading development and synchronization at a lower level directly.

I figure a good starting point would be a quick literature review to see what has been done already in this field and get a grasp of what already works. Anyone here with easy access to research databases? :slight_smile:

Sincerely,

I don’t have much to say I am looking forward to see suggestions of others.