Page 161 - Sensing, Intelligence, Motion : How Robots and Humans Move in an Unstructured World
P. 161

136    MOTION PLANNING FOR A MOBILE ROBOT

              • Point P becomes a hit point when MA, while moving along the ST line,
                encounters an obstacle at P .
              • Point P can become a leave point if and only if (1) it is possible for MA
                to move from P toward T and (2) there is a straight line that is tangential
                to the obstacle boundary at P and passes through T . When a leave point is
                encountered for the first time, it is called open;itmay be closed by MA
                later (see the procedure).
              • A local direction is the direction of following an obstacle boundary; it can be
                either left or right. In AlgX the current local direction is inverted whenever
                MA passes through an open leave point; it does not change when passing
                through a closed leave point.
              • A local cycle is formed when MA visits some points of its path more
                than once.

                The idea behind the algorithm AlgX is as follows. MA starts by moving
              straight toward point T . Every time it encounters an obstacle, it inverts its
              local direction, the idea being that this will keep it reasonably close to the
              straight line (S, T ). If a local cycle is formed, MA blames it on the latest turn
              it made at a hit point. Then MA retraces back to the latest visited leave point,
              closes it, and whence takes the opposite turn at the next hit point. If that turn
              leads again to a local cycle, then the turn that led to the current leave point
              is to be blamed. And so on. The procedure operates as follows:
              Initialization. Set the current local direction to “right”; set j = 0,
                L j = S.
              Step 1. Move along a straight line from the current leave point toward point
                T until one of the following occurs:
                a. Target T is reached; the procedure terminates.
                b. An obstacle is encountered; go to Step 2.
              Step 2. Define a hit point H j . Turn in the current local direction and move
                along the obstacle boundary until one of the following occurs:
                a. Target T is reached; the procedure terminates.
                b. The current velocity vector (line tangential to the obstacle at the current
                   MA position) passes through T , and this point has not been defined
                   previously as a leave point; then, go to Step 3.
                 c. MA comes to a previously defined leave point L i , i ≤ j (i.e., a local
                   cycle has been formed). Go to Step 4.
              Step 3. Set j = j + 1; define the current point as a new open leave point;
                invert the current local direction; go to Step 1.
              Step 4. Close the open leave point L k visited immediately before L i . Invert
                the local direction. Retrace the path between L i and L k . (During retracing,
                invert the local direction when passing through an open leave point, but
                do not close those points; ignore closed leave points.) Now MA is at the
                closed leave point L k .If L i is open,gotoStep1.If L i is closed, execute
   156   157   158   159   160   161   162   163   164   165   166