Report Navigation Prashanth Ramadoss

1
EMARO, ARIA 2013-14 , ECN Prashanth Ramadoss MOBILE ROBOTS – NAVIGATION WAVEFRONT BASED PATH PLANNING In this exercise, we simulate the navigation of a robot using wave-front expansion using C++ programming. Initially the world in which the robot is to navigate is generated using a simple two dimensional array structure grid[200][200]. Obstacles of circular shapes (with random radius and centre) and rectangular shapes (with random width and height) are introduced in random positions in the world. These positions (where the obstacle surrounds) are marked with variable obstacle. For circular obstacles, the distance between the centre and the current position in the grid is calculated and if this distance is less than that of the radius of the circle then the current position is marked as an obstacle. Similarly for the rectangular obstacles, having randomly generated the random values of height, width and tilt-angle, we calculate homogeneous transformations between the points and generate the points for the rectangular obstacles. The robot and goal positions are also generated randomly such that these positions do not fall inside the boundaries of the obstacles. Now that we have our world/map with robot, goal, free-path and obstacle positions, we generate the wave-front expansion. This wave-front generates from the goal and reaches the robot keeping in account the obstacles. Von Neumann neighborhood (4-point connectivity) is used to check if the neighboring cells are valid and within boundaries. The wave-front begins at goal cell and branches outward adding the currentwave value plus one to each of its empty valid neighbors. In the first cycle, the neighboring cells are numbered 3 and then 4 and wave continues. This repeats until the wave has reached the current robot position such that no free-path or zero- valued cell remains. The world is complete and has the information of the path that can be followed by the robot to navigate to the goal. The robot checks the neighbor cells and moves to the one with the minimum value and also avoids the cell in case if its and obstacle. The robot continues to move to the minimum valued neighbor until it has reached a value of ‘2’ which indicates that it has reached the goal. (since initially we define the variable goal = 2) . We finally print the world onto a output.dat file which indicates the path followed by robot as “999” , obstacle as “0” , Goal as “G” and the wave-front field values by its distance from the goal.

Transcript of Report Navigation Prashanth Ramadoss

Page 1: Report Navigation Prashanth Ramadoss

EMARO, ARIA 2013-14 , ECN Prashanth Ramadoss

MOBILE ROBOTS – NAVIGATION

WAVEFRONT BASED PATH PLANNING

In this exercise, we simulate the navigation of a robot using wave-front expansion using C++

programming. Initially the world in which the robot is to navigate is generated using a simple

two dimensional array structure grid[200][200]. Obstacles of circular shapes (with random

radius and centre) and rectangular shapes (with random width and height) are introduced in

random positions in the world. These positions (where the obstacle surrounds) are marked with

variable obstacle.

For circular obstacles, the distance between the centre and the current position in the grid is

calculated and if this distance is less than that of the radius of the circle then the current position

is marked as an obstacle. Similarly for the rectangular obstacles, having randomly generated the

random values of height, width and tilt-angle, we calculate homogeneous transformations

between the points and generate the points for the rectangular obstacles.

The robot and goal positions are also generated randomly such that these positions do not fall

inside the boundaries of the obstacles.

Now that we have our world/map with robot, goal, free-path and obstacle positions, we generate

the wave-front expansion. This wave-front generates from the goal and reaches the robot keeping

in account the obstacles. Von Neumann neighborhood (4-point connectivity) is used to check if

the neighboring cells are valid and within boundaries. The wave-front begins at goal cell and

branches outward adding the currentwave value plus one to each of its empty valid neighbors.

In the first cycle, the neighboring cells are numbered 3 and then 4 and wave continues. This

repeats until the wave has reached the current robot position such that no free-path or zero-

valued cell remains. The world is complete and has the information of the path that can be

followed by the robot to navigate to the goal.

The robot checks the neighbor cells and moves to the one with the minimum value and also

avoids the cell in case if its and obstacle. The robot continues to move to the minimum valued

neighbor until it has reached a value of ‘2’ which indicates that it has reached the goal. (since

initially we define the variable goal = 2) .

We finally print the world onto a output.dat file which indicates the path followed by robot as “999” ,

obstacle as “0” , Goal as “G” and the wave-front field values by its distance from the goal.