Robotic Motion Planning with Turtlebot

About the project:

The focus of this project is to combine trajectory planning with the A* search algorithm in order to create a cohesive system that can move the turtlebot from start to goal while avoiding obstacles. The A* algorithm generates the most optimal path from start to finish. The generated path must avoid obstacles on the grid map shown above.

The grid map above is a visualization of the A* algorithm pathfinding. Here the algorithm searches for successive neighboring nodes to each current node. We are using the 4-connect method, so for each “current” node, the algorithm will search for four nodes directly adjacent to it. The algorithm will then determine if each of those neighboring nodes is open, and for the ones that are open, the algorithm will then use heuristics to determine which open node is closest to the goal. That node is then the new current node for the next loop iteration in the algorithm.

Using the generated path from the A* algorithm, I then generated a smooth, infinitely differentiable trajectory for the turtlebot to follow around the path. This trajectory was generated through a 3rd order polynomial.

The turtlebot script provided below fulfilled the project objective gracefully. Shown above is the generated path the turtlebot followed from the green start area to the buffer and goal zones (orange and red respectively). Note that the execution of this project was not done in Gazebo, but at one of the university's robotics labs with real Turtlebots.

turtlebot.py


Skills:

Software: Python | Linux

Conceptual: Motion Planning | A* Algorithm | Polynomial Time Scaling