Coordination of Multiple Car-Like Robots
Chuck Han
Project Description
This project coordinates three car-like robots.
The program calculates the paths of each robot independently and then coordinates them as per [Optimal Motion Planning for Multiple Robots Having Independent Goals; LaValle, Hutchinson; April, 1996].
The Independent Plans of Each Robot
Each robot's path is calculated as per [A Fast Path Planner for a Car-Like Indoor Mobile Robot; Latombe; 1991] with the following exception:
As opposed to finding holonomic paths and then fitting non-holonomic paths to these paths with Reeds-Shepp curves, the planner starts by finding a non-holonomic path by looking at only front-right-turn, front-straight, and front-left-turn options.
This method is more in line with my wheelchair research in terms of limiting the wheelchair to only forward movement.
This method/algorithm is much simpler to implement than the R/S curve method, and though the R/S method can be optimized to "encourage" no backups, this method makes sure that there are no backups.
A drawback of the method can be seen in 'test.ada.jmv' where one of the robots circles the goal twice before getting to it.
For each individual robot path, the collision-detection algorithm is resolution-complete as per [Robot Motion Planning, p.123, Fig.9 and p.91, Fig.8; Latombe; 1991] generating a 3D Configuration Space, R2xSO2 as per [Latombe, 1991] where he states that the planner spends so much time calculating collision detection if the Configuration Space is limited to R2, it is better just to make the 3D map.
Finally, the potential fields for the two control points of the robot/goal are two NF1 wavefronts.
This makes for close grazing of obstacles, but computing NF1 is easier/faster than NF2.
And as per [Latombe, 1991], the calculation for the combined points probably has more and deeper local minima to get out of than if NF2 were used since NF2 makes the robot stay as far away from obstacles as possible, and this is magnified when we are using two control points.
The Coordinated Plan of the Three Robots
After each robot's path is calculated, the paths are coordinated in a Coordination Space.
Then, Dynamic Programming principles are used to find the optimal path.
It is worth noting that since the path planning is decoupled, this planner will fail in cases that might be solvable by, say, a randomized path planner that takes into account all the robot paths simultaneously.
Furthermore, a simple collision detection approximation was used to create the Coordination Space--I simply summed the maximum radii of the robots (centroid to a vertex) for the collision detection. This made for a faster generation of the space, but it lacks completeness (the method itself is incomplete as per the second failing example, but this approximation makes it even less complete).
Examples
The animations show the initial and goal positions of the robots. At the end of the sequence, a robot might not exactly line up with the goal position because I have specified a goal region as opposed to an exact goal point.
Specifying a goal region lessens the "circling around" to get just the right final position, and also in line with my wheelchair research, exact final positions are not the issue.
Also, since the goal position is shown, it may seem like a robot it barging into an obstacle when indeed, this is just a goal position (the original player2d differentiated between real obstacles and the goal and robot shapes).
Some failing cases
The .jmv file 'test.fail1.jmv' is an example of a single-robot failure.
Here, the robot is similar to the large robot in 'test.ada.jmv' but a radius of motion that is too large for the room has been specified.
Therefore, a successful solution cannot be found and the resulting motion is simply whatever path finally remained when all q's were exhausted.
The .jmv file 'test.fail2.jmv' is an example of a multiple robot failure due to the de-coupled nature of the coordination algorithm. Here, the independent paths that have been planned interfere with each other when clearly, if one robot simply steps aside for a while in the space provided, a coordinated path could be found. Again, the problem is the lack of coupling among two robots.
Final Note
Implementing the motion planning algorithms requires a firm understanding of the mathematics behind the methods, most of these being topological issues.
The bottlenecks, of course, have to do with increasing the dimension of the space, and since I did not implement any randomized methods, having to overcome these bottlenecks didn't come into play.
The mathematics/topology behind the algorithms was very interesting and it was important for to be able to visualize what was going on.
For me, this meant first looking at the concepts in a very low-dimension space and extending the concepts to higher dimensions.
Motion Planning Examples
Source Code
Chuck can be reached at:
csh@galerkin.stanford.edu