Page 188 - Introduction to AI Robotics
P. 188

171
                                      5.4 Case Study: Unmanned Ground Robotics Competition
                                      and followed its perimeter rather than the line. The bales were referred to as “visual
                                      distractions.”
                                        Fortunately, the bales were relatively small. If the robot could “close its eyes” for
                                      about two seconds and just drive in a straight line, it would stay mostly on course.
                                      This was called the move-ahead behavior. It used the direction of the robot (steering
                                      angle, dir) to essentially produce a uniform field. The issue became how to know
                                      when to ignore the vision input and deploy move-ahead.
                                        The approach to the issue of when to ignore vision was to use the sonar as a releaser
                                      for move-ahead. The sonar was pointed at the line and whenever it returned a range
                                      reading, move-ahead took over for two seconds. Due to the difficulties in working
                                      with DOS, the CSM entry had to use a fixed schedule for all processes. It was easier
                                      and more reliable if every process ran every update cycle, even if the results were
                                      discarded. As a result the sonar releaser for move-ahead essentially inhibited follow-
                                      line, while the lack of a sonar releaser inhibited move-ahead. Both behaviors ran all
                                      the time, but only one had any influence on what the robot did. Fig. 5.6 shows this
                                      inhibition, while the new behavioral table is shown below.


                           New Behavior Table
                            Releaser  Inhibited by  Behavior    Motor Schema  Percept  Perceptual Schema
                            always on  near=read_sonar()  follow_line()  stay-on-path(c_x)  c_x  compute_centroid(image,white)
                            always on  far=read_sonar()  move_ahead(dir)  uniform(dir)  dir  dead_reckon(shaft-encoders)


                                        The final version worked well enough for the CSM team to take first place. It went
                                      all the way around the track until about 10 yards from the finish line. The judges
                                      had placed a shallow sand pit to test the traction. The sand pit was of some concern
                                      since sand is a light color, and might be interpreted as part of the line. Since the sand
                                      was at ground level, the range reading could not be used as an inhibitor. In the end,
                                      the team decided that since the sand pit was only half the length of a bale, it wouldn’t
                                      have enough effect on the robot to be worth changing the delicate schedule of existing
                                      processes.
                                        The team was correct that the sand pit was too small to be a significant visual
                                      distraction. However, they forgot about the issue of traction. In order to get more
                                      traction, the team slipped real tires over the slick plastic wheels, but forgot to attach
                                      them. Once in the sand, the robot spun its wheels inside the tires. After the time limit
                                      was up, the team was permitted to nudge the robot along (done with a frustrated kick
                                      by the lead programmer) to see if it would have completed the entire course. Indeed
                                      it did. No other team made it as far as the sand pit.
                                        It is clear that a reactive system was sufficient for this application. The use
                                      of primitive reactive behaviors was extremely computationally inexpensive,
   183   184   185   186   187   188   189   190   191   192   193