Boris Lipchin
Robot Motion Planning 16-735
HW 3
Potential Field Planner
The approach is a typical wavefront planner. I wavefront planned from the obstacles, as well as from the goal, thus creating two 2D arrays, using 8-point connectivity. One array contained a general down-sloping field towards the goal. This is the attractive array. The other array contained numbers that were really low close to obstacles, and very large when they were far away from obstacles. Using Matlab’s advanced matrix operations, I subtracted every element of that matrix from the array’s largest element, thus inverting it. Now, the highest numbers were the obstacles, and the lowest numbers were those further away, thus obtaining a rough obstacle repulsive map. However, since the obstacle map must be non zero only within a certain Q away, I set those values to zero. Thus I created a flat map with some very steep slopes nearby the obstacles. Then I squared the obstacle map, and added it to a weighted attraction map, forming the final map. Then using a standard gradient descent, the robot descended to the goal, or the local minima, whichever came first.
The parameter include the distance Q for the obstacle map, set around 230:
function FIELD = potential_field(ATTRACTION, OBSTACLES, PLATEU)
FIELD = 100*ATTRACTION + (OBSTACLES .^ 2);
FIELD(PLATEU) = OBSTACLES(PLATEU) .^ 2;
Where the PLATEU is defined by OBSTACLES(find(obstacles > threshold)) = 0;
This is driven by the particular size of the array used, which in turn determines how big distances between two points really are. The constant which weighted the attractive portion of the map was 10. This is governed by the differences of magnitude of elements between the attractive and repulsive maps. The trick is not to “tip” the final map so much that it would cause the robot to travel over obstacles.
Below are the repulsive and attractive maps before any modification. Redder (hotter) areas are higher valued than the colder, bluer areas.