Tiles are recognized by using rules implementing a finite state machine, where tile state changes occur as a result of recognizing direction changes or encountering tape marks in the course of traversing a tile. Figure 9 shows some of the rules implementing this finite state machine. All of the rules shown here have the same input tile state, which is used to mark a tile which has been entered by the robot, but which has no other information available.
Figures 9a and 9b are fired when the robot is required to turn to the left or right, as a result of sensor inputs recognizing that the center line line is curved. When the robot is required to turn to the left (Figures 9a), a navigation command is executed which causes the current direction to be modified. The line-following rule shown in Figure 8a is also fired in this situation, causing the left motor to be stopped, so the robot corrects its course. The mirror situation is shown in figure 9b. When the robot has re-centered itself, the rule shown in Figure 9c is fired, causing the navigator to stop correcting the robot direction.
Figures 9d and 9e recognize the presence of a curved tile. If, as a result of the rules in 9a and 9b, the robot's current direction is recognized as having turned by 45\(de, one of these rules is fired, and the tile is recognized as a curve. The navigation command fixes the robot's direction as 90\(de from that in which it entered the tile; since the navigation adjustment commands in Figures 9a and 9b are tactical rules depending on the input tile state, they will not be fired again (and the robot direction will not be changed) before the robot leaves the current tile.
Figures 9f, 9g, and 9h all identify tape marks on the tile. 9f and 9g are fired if a stripe is identified on the left or the right; 9h is fired if stripes are identified on both sides. In all three of these cases, the current direction is corrected to 0 degrees.
More of the finite state machine is shown schematically in Figure 10. The states in this figure are numbered, for reference in the discussion below, and the transitions are labelled according to the portion of the rule inputs causing the change in tile state.
The tile state required for the tactical rules shown in Figure 9 is shown as state (1) in Figure 10. When the robot enters a tile for the first time, the tile is put in this state. The transitions shown in Figures 9d, 9e, 9f, 9g, and 9h. correspond to the arcs in Figure 10 transitioning to states (2), (3), (6), (4), and (5) respectively. The arcs are marked with a representation of the conditions under which the transition occurs; the symbols on the arcs to (2) and (3) refer to the robot's direction, while all the others represent the analog sensor inputs.
If the robot enters state (2) or state (3), it continues until the tile boundary is recognized, at which time the tile is placed in state (10) or (11) (a completely explored curve).
When states (4) and (6) are entered, it may be a result of the robot being slightly askew and simply encountering a stripe on one side before the corresponding stripe on the other side; transitions based on encountering this corresponding stripe cause the tile state to change to state (5).
Altaira further classifies the tile when both off-center inboard sensors go black. In this case, the robot has either reached the point in an intersection where the center stripe forks, or has reached the end of a straight tile. In the former case, both outboard sensors will be white, so the tile is placed in one of states (7), (8), or (9); in the latter, it is put in state (13).
If the tile is in state (7) or (9), the robot continues to the end of the tile, and the tile is put into state (12) or (16). If it is in state (8), a sequence of transitions similar to the ones that place the tile in states (4), (5) or (6) will eventually put the tile in either state (14) or state (15).
When the tile is put in any of the states from (10) to (16), a
navigation command is used to move Altaira's focus to the next tile to
be entered by the robot. If the tile is left in state (10), (11), or
(13), it has been fully explored (and these states are all terminal
states). States (12), (14), (15), and (16) encode the tile type, the
portion of the tile that has been explored, and the direction the
robot was headed when it left the tile.