Page 287 - Introduction to Autonomous Mobile Robots
P. 287

Chapter 6
                           272
                           freedom nonholonomics) and, particularly, as environment dynamics becomes more signif-
                           icant, then the path-planning techniques described above become inadequate for grappling
                           with the full scope of the problem. However, for robots moving in largely flat terrain, the
                           mobility decision-making techniques roboticists use often fall under one of the above cat-
                           egories.
                             But a path planner can only take into consideration the environment obstacles that are
                           known to the robot in advance. During path execution the robot’s actual sensor values may
                           disagree with expected values due to map inaccuracy or a dynamic environment. Therefore,
                           it is critical that the robot modify its path in real time based on actual sensor values. This is
                           the competence of obstacle avoidance which we discuss below.

                           6.2.2   Obstacle avoidance
                           Local obstacle avoidance focuses on changing the robot’s trajectory as informed by its sen-
                           sors during robot motion. The resulting robot motion is both a function of the robot’s cur-
                           rent or recent sensor readings and its goal position and relative location to the goal position.
                           The obstacle avoidance algorithms presented below depend to varying degrees on the exist-
                           ence of a global map and on the robot’s precise knowledge of its location relative to the
                           map. Despite their differences, all of the algorithms below can be termed obstacle avoid-
                           ance algorithms because the robot’s local sensor readings play an important role in the
                           robot’s future trajectory. We first present the simplest obstacle avoidance systems that are
                           used successfully in mobile robotics. The Bug algorithm represents such a technique in that
                           only the most recent robot sensor values are used, and the robot needs, in addition to current
                           sensor values, only approximate information regarding the direction of the goal. More
                           sophisticated algorithms are presented afterward, taking into account recent sensor history,
                           robot kinematics, and even dynamics.

                           6.2.2.1   Bug algorithm
                           The Bug algorithm [101, 102] is perhaps the simplest obstacle avoidance algorithm one
                           could imagine. The basic idea is to follow the contour of each obstacle in the robot’s way
                           and thus circumnavigate it.
                             With Bug1, the robot fully circles the object first, then departs from the point with the
                           shortest distance toward the goal (figure 6.7). This approach is, of course, very inefficient
                           but guarantees that the robot will reach any reachable goal.
                             With Bug2 the robot begins to follow the object’s contour, but departs immediately
                           when it is able to move directly toward the goal. In general this improved Bug algorithm
                           will have significantly shorter total robot travel, as shown in figure 6.8. However, one can
                           still construct situations in which Bug2 is arbitrarily inefficient (i.e., nonoptimal).
                             A number of variations and extensions of the Bug algorithm exist. We mention one
                           more, the Tangent Bug [82], which adds range sensing and a local environmental represen-
   282   283   284   285   286   287   288   289   290   291   292