In this movie the robot successfully arrives at the goal.
Successful movie
In this movie the robot gets stuck in a local minimum caused by the concave 'v'
shaped obstacle.
Failure movie
In this assignment I implemented the potential function described in the textbook and class lectures, where we add the repulsive gradients of each obstacle to the attractive gradient of the goal to find the gradient we should follow at each instant. This is a gradient descent algorithm. The functions are at the bottom of the page.
In doing this assignment I chose to go by the book because the equations make sense to me, and I figured if there were better ones we'd be learning those in class instead.
There were 5 main parameters I played around with when tuning the algorithm to
make it work. They are:
The attractive scalar ζ
The attractive distance threshold d*goal
The repulsive scalar η
The repulsive distance threshold Q*
The velocity of the robot.
The first four are obvious as part of the above equations and were set to 1, 7m, 6, and 5m, respectively (the simulated laser scanner has a range of 8m). For simplicity I chose to give all obstacles the same distance threshold Q*. The velocity of the robot was at first unexpected as a parameter as I was not thinking about acceleration and decelaration problems. If I drove to quickly, I ran into the obstacles, but if I drove too slowly I found my robot didn't always have the momentum required to get around certain obstacles. Probably if I had played around with the other parameters more I wouldn't have needed to change the velocity since intuitively what was happening was I was introducing local minima in tight spaces and then using my speed to "jump" over them like speed bumps. In the end I chose to drive my robot at half speed when an obstacle was within Q*, and at full speed when there were no obstacles.