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,