Sunteți pe pagina 1din 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 zerovalued 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.

S-ar putea să vă placă și