This is the simulator (done in Flash/ActionScript) to test ideas before coding in VC++.
The circle represents a roomba. Each roomba wants to reach a different target destination, without colliding with each other. There is an obstacle block in the middle of the area. The roombas cannot collide with the obstacle either. The basic idea is for each roomba to check the direct path to its target destination. If it is clear, then it sets the direction to move forward. Otherwise, it will try to find a different direction. For easy visualization, I displayed 2 lines for each roomba: (1) the orange line from each roomba points to its target destination; (2) the grayline from each roomba points to its direction of movement.