In diesem Beispiel wird gezeigt, wie man mittels einer FSM einen Roboter programmieren kann. Der Roboter hat hierbei die Aufgabe, einer Wand zu folgen. Der Roboter wird zu Beginn an einen belibigen Platz gesetzt und muss daher zuserst die Wand suchen. Sobald er eine gefunden hat, kann er in einer Endlosschleife der Wand zur Rechten folgen. Der Roboter hat dabei zwei Sensoren, einen, der ihm anzeigt, ob das Feld vor ihm eine Wand ist (h) und einen, der anzeigt, ob das Feld rechts von ihm eine Wand ist (r). Zudem kann der Roboter genau zwei Aktionen ausführen: Einen Schritt laufen (F) oder sich um 90 Grad nach rechts drehen (R). Folgendes ist ein Beispiel einer Möglichen Umgebung (# ist eine Wand, {^, >, V, <} sind die Richtungen, in die der Roboter schaut):
############### # # ### ### # V # # ##### # # ###########
Als ersteres muss die Wand gefunden werden. Am Ende sollte der Roboter so stehen, dass rechts von ihm eine Wand ist (=Postcondition). Dazu stellt man folgende Tabelle auf:
| r | h | Zustand | Was ist zu tun? |
|---|---|---|---|
| 0 | 0 | Keine Wand in Sicht | Weitersuchen (einen Schritt nach vorne) |
| 0 | 1 | Wand genau vor dem Roboter | nach links drehen (drei mal nach rechts), damit Kriterium erfüllt ist. |
| 1 | 0 | Wand rechts vor dem Roboter | Kriterium erfüllt |
| 1 | 1 | Wand rechts und vor dem Roboter | Kriterium erfüllt |
In etwas einfacherer Form ergibt dies die Folgenden Anweisungen (- steht für egal ob 0 oder 1):
- 0 0 führt zu F
- 0 1 führt zu RRR und in die Endlosschleife
- 1 - führt zur Endlosschleife
Nachdem nun irgendwann eine Wand gefunden wurde kann man in folgende Endlosschleife eintreten:
- 0 - führt zu RF
- 1 0 führt zu F
- 1 1 führt zu RRR
Dabei muss beachtet werden, dass der Fall 0- auftreten kann, wenn an einer Ecke der Roboter im letzten Schritt um einen Schritt nach Vorne wanderte, was bedeutet, dass er nun, um die Wand wieder zu seiner Rechten zu haben, sich um diese Ecke herumdrehen muss.
Aus diesen Angaben kann man folgende FSM erstellen (links von / stehen die Signale der Sensoren, rechts stehen die auszuführenden Aktionen):
0- / RF
/---\
1- / - | V
/---#=============#-------------->#================#---\
00 / F | | Wand suchen | | Endlosschleife | | 10 / F
\-->#=============#-------------->#================#<--/
01 / RRR | ^
\---/
11 / RRR
Mit dieser einfachen FSM kann der Roboter an einer beliebigen Stelle gesetzt werden, und er wird für immer der Wand entlanglaufen. Man könnte ihn sogar ausserhalb der Wand setzen, allerdings könnte es dann sein, dass er nie eine Wand findet.
Im folgenden ist das obige Beispiel für einige Schritte weitergeführt. rechts unten sind jeweils die Signale der Sensoren aufgeführt.
Wand suchen: ############### ############### ############### # # ### # # ### # # ### ### # V # --> ### # # --> ### # # # ##### # V ##### # ##### # # r h # # r h # V # r h ########### 0 0 ########### 0 0 ########### 0 1 Wand gefunden, drehe drei mal nach rechts: ############### ############### ############### # # ### # # ### # # ### ### # # --> ### # # --> ### # # # ##### # ##### # ##### # < # r h # ^ # r h # > # r h ########### 0 0 ########### 0 0 ########### 1 0 Endlosschleife: ############### ############### ############### # # ### # # ### # # ### ### # # --> ### # # --> ### # # # ##### # ##### # ##### # > # r h # ># r h # V# r h ########### 1 0 ########### 1 1 ########### 0 1 ############### ############### ############### # # ### # # ### # # ### ### # # --> ### # # --> ### # # # ##### # ##### # ^##### # <# r h # ^# r h # # r h ########### 0 0 ########### 1 0 ########### 1 0 ############### ############### ############### # # ### # # ### # # ### ### # ^ # --> ### # > # --> ### # > # # ##### # ##### # ##### # # r h # # r h # # r h ########### 0 0 ########### 0 0 ########### 1 0 Und so weiter...