Blog

Macchine a stati: come un robot decide cosa fare dopo

Alessandro Panait·

Man mano che un robot diventa piu' intelligente, il suo codice diventa una giungla di if annidati che nessuno riesce a seguire. La cura e' una macchina a stati: un modo pulito di organizzare il comportamento.

L'idea

In ogni momento il robot e' in esattamente uno stato, una modalita' come "seguo la linea", "aggiro un ostacolo" o "cerco una vittima". Ogni stato fa un lavoro solo. Le transizioni sono le regole che lo spostano da uno stato all'altro quando succede qualcosa.

SEGUI_LINEA --(vede ostacolo)--> AGGIRA_OSTACOLO
AGGIRA_OSTACOLO --(di nuovo sulla linea)--> SEGUI_LINEA
SEGUI_LINEA --(vede striscia argento)--> ENTRA_ZONA

Perche' aiuta

  • Un lavoro alla volta: il codice di "aggira ostacolo" non deve preoccuparsi di vittime o incroci.
  • Prevedibile: disegni tutto il comportamento come un diagramma e ci ragioni.
  • Debuggabile: stampa lo stato corrente e sai subito cosa crede di star facendo il robot.

Un esempio Rescue Line

Un robot a telecamera puo' avere una macchina "linea" (segue, gap, ostacoli, incroci, rampa) e una macchina "zona" (cerca vittime, raccogli, deposita, trova uscita). Una modalita' di alto livello passa tra loro quando il robot entra o esce dall'evacuation zone.

Il consiglio pratico

Da' un nome a ogni stato e, mentre debuggi, mostralo a schermo. Quando qualcosa va storto, lo stato ti dice dove guardare: e' bloccato in "cerca", rimbalza tra due stati, o entra in quello sbagliato? Una macchina a stati con nomi e' la differenza tra un robot che puoi migliorare e uno su cui puoi solo pregare.

Commenti (0)