Industrial Applications of Genetic Algorithms:Development of Mobile Robot Wall-following Algorithms Using Genetic Programming

Previous | Table of Contents | Next

GENETIC PROGRAMMING ENVIRONMENT

As described above, genetic programming solves problems by combining and organizing a predefined set of functions and terminals. This set of functions and terminals provide the fundamental domain knowledge which allows GP to discover solutions. The functions and terminals defined for the wall-following experiments presented herein are defined below.

Do2 (Arga, Argb)
  This function provides for sequential operations. It evaluates argument Arga, then it evaluates argument Argb. The return value is the result of argument Argb. Multiple sequential steps can be accomplished by nested Do2’s.
WhileInCoridorRange (Arga)
  This function checks each of the sensor distance values, selects the minimum value (i.e., the closest wall) and determines if it is within the allowable wall-following range. If the robot is out of range of a wall, this function returns the value 0.0. Otherwise, it evaluates argument Arga continuously (as long as the robot is within acceptable range of the nearest wall) and returns the value obtained from the last evaluation of argument Arga. The range of values that satisfies the “InCorridorRange” condition is defined as 10 to 20 units, inclusive.
WhileTooCloseToWall (Arga)
  This function is identical to WhileInCoridorRange except that it evaluates the argument as long as the robot is too close to a wall. The range of values that satisfy this function is less than 12 units. 12 is used rather than 10 to provide a hysteresis band between the in and out of range conditions.
WhileTooFarFromWall (Arga)
  This function is also identical to WhileInCoridorRange except that it evaluates the argument as long as the robot is too far away from the closest wall. The range of values that satisfy this function is greater than 18 units.
IfConvexCorner (Arga, Argb)
  This function tests for the condition of the range sensor at angle 90° reading too far to the nearest wall, and the range sensor at angle 135° reading an acceptable distance. This condition occurs when the robot is following a wall that drops away in a convex corner. If this condition is satisfied, the function evaluates argument Arga and returns its value. Otherwise, it evaluates argument Argb and returns its value.
MoveForward()
  This terminal causes the robot to move forward five units. The return value is 1.0 if the robot completes its move without colliding with a wall, and 0.0 if a collision occurs. If the robot collides with a wall, movement stops at that point (i.e., the robot is not allowed to move into or through the walls). These return values are arbitrary and were selected to coincide with the C/C++ integral values used to represent Boolean true and false.
TurnRight(), TurnLeft()
  These terminals cause the robot to rotate 45° to the right or left, respectively. The return value from these terminals is the angle that the robot ends up facing after the rotation.
TurnTowardsClosestWall()
  This terminal checks each of the current range sensor values and selects the lowest value (i.e., the closest wall). It then rotates the robot such that the robot is pointed in the direction of the sensor that had the lowest reading. Note that the robot turns towards the perceived closest wall, and not necessarily towards the actual closest wall. The return value is the new direction of the robot.
TurnAwayFromClosestWall()
  This terminal is similar to TurnTowardsClosestWall, except that the robot rotates to face the opposite direction of the perceived closest wall.
TurnParallelToClosestWall()
  This terminal is also similar to TurnTowardsClosestWall, except that the robot rotates such that its 90° sensor is pointed in the direction of the perceived closest wall.

Population size was set to 500 individuals, and experiments typically ran for 200 to 300 generations. The probability values for reproduction, crossover, and mutation were set to 39%, 60% and 1%, respectively, for all experiments. All experiments invoked an option to force the best performing individual to reproduce at least once into the next generation. All experiments were performed on Pentium-100 PC’s.

Previous | Table of Contents | Next

Copyright © CRC Press LLC