For this project, I worked on a team of five to simulate an autonomous game of soccer. My personal contribution was researching and adapting various path planning algorithms to run in real time on omnidirectional soccer robots. I also implemented some logic to allow for passing and dynamic role assignment.
Here is a link to the final project webpage which goes into more depth. The page linked, Path Planning, is what I worked on.
We initially opted towards RRT because it does a good job at pathing around obstacles. I modified the algorithm to run in real time by only sampling a set amount of paths per timestep and executing the best. Because a soccer field with only a couple other robots is relatively sparse, RRT underperformed simply pathing towards the ball. Therefore, implementing real-time A* on the robots worked best.
Below are some gifs I made depicting the two algorithms.
RRT finding a path to the goal in a static environment.
Modified RRT finding a path to the goal in a dynamic environment.
Modified A* finding a path to the goal in a static environment.
Modified A* can find itself stuck in certain conditions.
Passing and role assignment were both implemented with state machine logic. A data driven approach to this would be an interesting project for the future.
A short snippet showcasing passing between robots.
Practice implementing and adapting path planning algorithms to run in real time.
Experience working with large ROS systems.