The goal of this project is to plan paths for multiple (here, 3) car-like robots in a 2-d polygonal environment. All the polygons are assumed to be simple and convex. The car-like robots have turning radius constraints but are allowed to reverse.
The project was written in 5 parts. A description of each part, including algorithms is included below:
(i) I linearly interpolate between the input (holonomic) path configurations to produce a larger input path.
(ii) Since I use the same bitmap to check feasibility of the nonholonomic path, many configurations that are actually feasible map to a grid cell which has been deemed infeasible.
I could solve this by using a new resolution for my grid for the nonholonomic planner, or even by checking my nonholonomic path configurations individually to ascertain feasibility.
(i) Slow speed: The coordination increased the running time of my planner by around 2000%. This is because my nonholonomic path is very large (around 2000 configurations for some robots) and every pair of configurations is checked to prevent collisions.
(ii) Bugs: I do a grid search to find a coordinated path. I chose this over the scheduling algorithm in the book because it seemed easier to extend to 3 or more robots. Currently there is a problem with my outputting the path between two grid cells -- when a robot is stationary, the same path gets outputted repeatedly so the robot appears to jump back and forth between two configurations. I thought I had fixed it by using flags to prevent a visited cell from having its configurations from being outputted, but it still seemed to appear in some places.