So I've been trying to track down why robots are able to escape from physics engines, and have gotten stuck. I'm not sure if this is a configuration error on my part, or a bug in ARGoS (I'm leaning toward the latter, though I am not sure). Here's what I've seen so far:
- It does not happen with less that 4096 robots, or at least so rarely I have not seen it in my testing so far.
- It does not happen with slow moving robots (those that wander around), though it happens within the first minute or so of starting a simulation with faster moving footbots (those that speed toward their target at 10cm/s).
- The robots always escape through one of the engines that lie against the "wall_north" entitie (i.e. along the top of the arena) or the "wall_east" entity (i.e. along the right side of the arena).
- Using thicker walls (1.0 instead of the 0.1 shown in the examples), helps the exception/crash to happen later (usually around the 10 minute mark), as does making the physics engines around the edges of the arena extend beyond the edges (e.g. with a 32x16 arena the area covered by physics engines will extend -1 to 33 in X and -1 to 17 in Y)
- Increasing the # of physics engine iterations per tick from 10 to 50 also helps make the crash happen less often, but does not eliminate it.
What I think is happening is that faster moving robots near the edges of the arena end up moving in 3D space between ticks far enough that their velocity carries them out of bounds and somehow the "bounce back" functionality that usually keeps robots in bounds is not triggering (e.g. bounce off of walls). This is supported by the crashes not happening with slower robots, which do not move far enough in between ticks to cause this to happen.
I can work around this by just having all my robots run really slowly (max 5 cm/s), but I feel like they should be able to run faster than that because when there is a single physics engine, it can handle higher speeds just fine.
Is there a configuration setting that I could tweak to work around this? I'm basing my configuration of physics engines on the one in the example repo, though my engines may be numbered differently in terms of how they are laid out:
15 14 13 12
11 10 9 8
7 6 5 4
0 1 2 3
Does ARGoS expect a particular layout scheme?
Thanks for any help!
- John