Il sistema ABS

Home
   
Viaggi& Various
F1
My cars
My love
Hobbies& Passioni
Musica  &  disco
Anni 90
Contatti
   
Segui su Facebook Borto.net

Articoli su motori & auto

L'ABS
=====


INTRODUZIONE
------------

ABS Ŕ acronimo di "Antilock Brake System": possiamo tradurlo con
"sistema anti bloccaggio dei freni". In sintesi Ŕ un sistema
elettroattuato che si prefigge di mantenere stabile il veicolo in
frenata, non solo di evitare il completo bloccaggio di una o pi˙ ruote,
con il fine ultimo di ottenere il massimo rallentamento conservando la
direzionalitÓ quale che sia il fondo stradale su cui si muove.
I primi approcci a questa filosofia, molto importante nella sicurezza
attiva dei veicoli su gomma e su rotaia, soprattutto in caso di frenata
d'emergenza in cui il conducente Ŕ in preda al panico, risalgono a
qualche decennio fa. Veicoli commerciali forniti di rudimentale ABS
apparvero negli anni '60 e si diffusero negli anni '70; solo negli anni
'90, tuttavia, l'elettronica permise di raggiungere a costi accettabili
le prestazioni necessarie per affrontare seriamente questo difficile
problema, e costruire sistemi davvero utili nella realtÓ e non soltanto
in condizioni poco pi˙ che sperimentali.
I primi ABS erano efficienti solo nelle frenate rettilinee su fondi
omogenei, quelli moderni riescono a gestire situazioni impegnative in
piena curva. Il sistema adottato sulla VW Golf GTI II serie era, ad
esempio, piuttosto primitivo e causava reazioni spesso irrecuperabili
nelle frenate in curva.


IL PROBLEMA
-----------

Lo studio del moto di un veicolo su strada Ŕ estremamente complesso e
funzione di numerosi parametri fra cui il numero delle ruote, la coppia
(motrice o frenante) applicata a ciascuna di esse, il tipo dei
pneumatici, il loro stato (dimensioni, mescola, battistrada, usura,
pressione di gonfiaggio), la ripartizione dei pesi, la massa
complessiva, la geometria delle sospensioni e la loro taratura, il tipo
di fondo stradale (asfalto, terra, erba, neve, ghiaccio, ecc.) ed il suo
stato (asciutto, bagnato, liscio, ruvido, in buono stato, danneggiato,
ecc.), il carico aerodinamico, i trasferimenti di carico dovuti alla
guida, e molto altro.
Alla luce di queste difficoltÓ, spesso insormontabili analiticamente ma
affrontabili con metodi numerici basati sia su teorie dinamiche sia su
dati sperimentali ottenuti da prove con veicoli attrezzati
opportunamente, cerchiamo di capire quale sia lo scopo di un sistema ABS
pi˙ in dettaglio e come si possa tentare di raggiungerlo.
Poc'anzi abbiamo visto che il fine consiste nel garantire la miglior
frenata (intesa in senso lato) su ogni fondo stradale, che pu˛ essere
diverso da ruota a ruota e pu˛ variare durante la frenata stessa (una
ruota su asfalto e una su erba, poi di nuovo tutte su asfalto, poi tutte
su erba, e cosÝ via nel volgere di pochi secondi). Questo complica
l'analisi e costringe a non poter usare parametri di attrito fissi (il
coefficiente medio di attrito gomma-asfalto).

A intuito, i parametri utili *istante per istante* potrebbero essere:

1)  tipo di fondo
2)  tipo di pneumatici e loro stato di usura, pressione
3)  velocitÓ vettoriale di vari punti del veicolo
4)  accelerazione vettoriale di vari punti del veicolo
5)  velocitÓ angolare di ogni ruota
6)  distribuzione del peso sulle ruote
7)  angolo di sterzo (cioŔ posizione del volante)
8)  posizione del pedale del freno, acceleratore, frizione
9)  posizione del freno a mano
10) rapporto innestato

Ci˛ perchÚ:

  a) i punti 1,2 permetterebbero di calcolare il coefficiente di attrito
istantaneo di ogni ruota, contemplando anche la deformazione del
pneumatico (esistono modelli matematici, ma si pu˛ ricorrere anche a tabelle d'interpolazione determinate sperimentalmente)
  b) i punti 3,4 permetterebbero di conoscere il moto del veicolo;
osserviamo che NON Ŕ sufficiente conoscere velocitÓ e accelerazione di
un solo punto, in quanto queste due informazioni non basterebbero per
descrivere il moto completo di un oggetto (potrebbe esserci rotazione:
sbandata o imbardata); la Meccanica Razionale fornisce la teoria
necessaria
  c) i punti da 7 a 10 permetterebbero di avere un'idea di ci˛ che sta
facendo il guidatore, da cui dedurre il probabile stato del veicolo
subito prima dell'inizio dell'intervento del sistema (stava frenando,
stava accelerando, stava percorrendo una curva, stava facendo il pirla
con il freno a mano, ecc.)
  d) i punti da 8 a 10 permetterebbero di evitare l'aumento della coppia
frenante sulle ruote motrici, non dovuta ai freni bensÝ all'azione
frenante del motore, e aiutare a scongiurare possibili blocchi al ponte
(tipici delle trazioni posteriori)
  e) i punti 5,6 permetterebbero di conoscere il comportamento delle
singole ruote che, ricordiamolo, durante la frenata possono trovarsi via
via in molteplici condizioni di aderenza anche assai diverse l'una
dall'altra, e possono al limite giungere ad aderenza nulla nel caso si
sollevassero da terra (tipico di certe auto nelle curve strette: si
solleva ad es. la posteriore interna)

Gli elementi su cui il sistema pu˛ intervenire sono:

1) freni delle singole ruote
2) sterzo
3) acceleratore
4) sospensioni

Di solito i punti 2,3,4 non vengono considerati (in particolare il 2),
tranne su vetture munite di sistemi di controllo molto sofisticati che
integrino all'ABS i controlli di trazione (tipo l'ESP).

Grazie ai modelli matematico/empirici studiati e formulati negli ultimi
anni, Ŕ possibile calcolare la corretta velocitÓ di rotazione della
ruota per ottenere la massima frenata al variare del carico e del
coefficiente di attrito; sappiamo che tale velocitÓ angolare Ŕ pari a
circa il 20% di quella che la ruota avrebbe in condizioni libere.
Come vedremo nel prosieguo, insorgono alcune complicazioni di carattere
sia teorico sia - purtroppo - economico che impediscono di realizzare un
sistema che abbia in ingresso le informazioni dei punti 1¸10, in
particolare 1,2,3,4 non sono (per ora) mai presenti o lo sono in forma
solo parziale. Diviene necessario ricavare le informazioni mancanti
basandosi su altre, elaborate grazie a teorie matematiche e a
compromessi.


QUALCHE CASO PRATICO
--------------------

Analizziamo semplici esempi per comprendere la casistica. Qui non
interessa conoscere *come* le operazioni sono eseguite dal sistema, ma
solo *quali*. Ipotizziamo l'impiego di un sistema in grado di agire solo
sui freni delle singole ruote e non su sterzo, sospensioni, motore.

  1) veicolo in moto rettilineo, inizia una violenta frenata a ruote
dritte su fondo stradale omogeneo durante la quale non si scomporrÓ e
non metterÓ le ruote su fondo diverso.
- Il sistema deve portare la velocitÓ angolare di ogni ruota a circa il
20% di quella che avrebbe in condizioni libere, ovvero il 20% di quella
a cui - istante per istante - corrisponde una velocitÓ tangenziale pari
a quella del veicolo. Ci˛ perchÚ al fattore di "slip" (slittamento) 0.2
corrisponde la frenata pi˙ efficace nel caso di pneumatici normali. Il
sistema conosce con precisione la velocitÓ angolare di ogni ruota prima
dell'inizio della frenata, e pu˛ tenere conto delle piccole differenze
tra l'una e l'altra dovute alle diverse circonferenze di rotolamento
causate da diversa usura dei pneumatici (tipico tra quelli anteriori e
posteriori).

  2) come il caso 1), ma durante la frenata alcune ruote del veicolo
vengono a trovarsi su fondo diverso (es. quelle sinistre su asfalto
mentre quelle destre su erba o ghiaia, caso tipico di frenata in
prossimitÓ del ciglio stradale).
- S'inizia come al punto 1), per˛ la coppia frenante applicata alle
ruote di destra dovrÓ essere molto diversa rispetto a quella applicata a
sinistra, perchÚ le une si trovano su fondo pi˙ scivoloso rispetto alle
altre. Con ogni probabilitÓ lo stato dei fondi stradali non sarÓ noto al
sistema, perchÚ purtroppo i sensori in grado di discriminare tali
diversitÓ sono complessi, delicati, costosi, e quindi non vengono
impiegati; il sistema dovrÓ arrangiarsi in altro modo per capirlo, ad
esempio rilevando un inizio d'imbardata della vettura: Ŕ noto a tutti
che la frenata diversificata destra/sinistra comporta rotazione del
veicolo su sŔ stesso (Ŕ il princÝpio su cui si basano i mezzi cingolati
per svoltare).
A questo punto il sistema si trova di fronte ad una scelta filosofica
difficile: cosa fare per mantenere massima la frenata e, al contempo,
evitare che l'auto sbandi? Se mantenesse massima la frenata sia delle
ruote su asfalto sia di quelle sull'erba (compatibilmente con le
rispettive aderenze, ovvio), ci sarebbe differenza di frenata
destra/sinistra e l'auto sbanderebbe. Nell'ipotesi in cui il sistema
possa agire solo sui freni, le soluzioni si riducono a due:
a) diminuire la frenata delle ruote su asfalto (che hanno pi˙ grip di
quelle sull'erba) sino a renderla uguale a quelle su erba;
b) mantenere massima la frenata e demandare al guidatore la correzione
dell'inevitabile imbardata (controsterzo).
Il punto b), purtroppo, verrÓ scartato dai progettisti di ABS perchÚ il
sistema (come la maggior parte delle cose moderne) dev'essere "a prova
d'imbecille" e quindi non pu˛ assumere che il guidatore sia in grado di
compiere la manovra di controsterzo. Il punto a) garantisce stabilitÓ ma
allunga lo spazio di frenata di parecchio; tuttavia con ogni probabilitÓ
sarÓ il prescelto.
Questo esempio illustra bene i motivi per cui l'ABS Ŕ controproducente
su vetture destinate all'uso sportivo guidate da piloti esperti: un buon
pilota pu˛ gestire con facilitÓ l'imbardata lavorando con lo sterzo,
mentre mantiene massima la frenata su asfalto!

  3) il veicolo sta percorrendo una curva, inizia una violenta frenata a
ruote sterzate su fondo stradale omogeneo durante la quale non si
scomporrÓ e non metterÓ le ruote su fondo diverso.
- Il caso si fa complesso: il moto del veicolo non Ŕ rettilineo, esiste
accelerazione centripeta, per˛ non indica sbandata bensÝ percorrenza di
curva. Il sistema ne prende atto dalla posizione del volante prima
dell'inizio della frenata e modula la coppia frenante di ogni singola
ruota nel tentativo di mantenere massima la frenata purchÚ questo non
alteri l'equilibrio della traiettoria, a meno che non venga rilevato
movimento dello sterzo (in tal caso potrebbe riconoscere la volontÓ del
guidatore di aumentare o diminuire la sterzata per scansare un ostacolo,
e potrebbe cercare di aiutarlo favorendo la rotazione del veicolo con
opportuna diminuzione della coppia frenante su una o pi˙ ruote - non
aumento perchÚ le ruote sono giÓ frenate al massimo valore ammissibile e
quindi l'unica alternativa Ŕ sfrenare un poco una o pi˙ ruote,
sacrificando lo spazio di arresto a favore della direzionalitÓ).

Da questi semplici esempi si evince che l'ABS in certi casi pu˛
risultare controproducente, ma soprattutto che possono esistere diverse
logiche con cui affrontare il medesimo caso, ciascuna in grado di
favorire qualcosa a scapito di qualcos'altro. Alcuni progettisti
potrebbero inserire diversi programmi selezionabili dall'esterno con un
commutatore (comportamento sportivo, normale, a prova d'imbecille,
ecc.); oppure decidere di equipaggiare berline con sistemi rivolti alla
massima prudenza, e sportive con impianti la cui soglia d'intervento sia
collocata pi˙ in lÓ e l'azione appaia meno invasiva, lasciando modo al
guidatore di gestire meglio l'inserimento in curva o il sovrasterzo di
potenza.


STRUMENTI IMPIEGATI
-------------------

Attuatori
---------

Servono per variare la coppia frenante; i sensori servono invece per
raccogliere i dati istantanei necessari al sistema. Altri dati utili
sono la massa del veicolo, il coefficiente medio di attrito di un tipo
di pneumatici e simili; possono essere determinati in laboratorio e
inseriti in tabelle che il sistema potrÓ consultare ed interpolare
quando necessario.
Gli attuatori variano a seconda della tipologia d'impianto frenante
(esistono impianti idraulici montati sulla maggior parte delle auto,
pneumatici sui mezzi pesanti, elettromagnetici o elettropneumatici
montati sui treni, e altro ancora).

Sensori
-------

I sensori possono essere encoder per la misura della velocitÓ angolare
delle ruote, accelerometri per l'accelerazione longitudinale e
trasversale del veicolo, ottici per il rilevamento della velocitÓ e del
tipo di fondo stradale, encoder o interruttori per la posizione di
sterzo, cambio, pedaliera, e cosÝ via.
Le informazioni in ingresso vengono elaborate dall'elettronica della
centralina ABS (in sostanza un computer dedicato), che attuerÓ diverse
azioni a seconda dei casi, operando sugli attuatori per variare la
coppia frenante e - nei sistemi pi˙ evoluti - la regolazione delle
sospensioni o dell'acceleratore.

Alcuni di questi sensori, esistenti e usati in molte applicazioni
industriali, non vengono tuttavia impiegati a causa dei costi o della
delicatezza. I pi˙ notevoli sono forse i sensori ottici che
permetterebbero, se accoppiati a opportuni programmi, di determinare
almeno in prima approssimazione il fondo stradale e la velocitÓ del
veicolo (simili a quelli che equipaggiano alcuni mouse, per intenderci).
In particolare, la velocitÓ vettoriale istantanea del veicolo Ŕ un
parametro *essenziale* per la logica del sistema ABS e deve esser
conosciuta. Difatti, Ŕ impossibile correggere la coppia frenante
applicate alle singole ruote se non si ha ben chiaro il moto del veicolo
istante per istante, ovvero se non si conosce la sua velocitÓ
vettoriale. Non potendola desumere da sensori (non installati), si deve
ricavare in altro modo. Il pi˙ utilizzato ricorre ad algoritmi
matematici basati sulla "fuzzy logic", che vedremo in dettaglio pi˙
sotto.

La ripartizione fronte/retro
----------------------------

Osserviamo che durante l'intervento dell'ABS la presenza eventuale di un
ripartitore o correttore di frenata anteriore/posteriore Ŕ irrilevante,
perchÚ di questo si occupa giÓ il sistema. Tuttavia, ci˛ *non* esenta la
vettura dall'avere, almeno, un ripartitore (meglio un correttore che
tenga conto delle differenze di carico): difatti in condizioni di
frenata normale (quando l'ABS non interviene) questo accessorio
garantisce la corretta ripartizione antero/posteriore della frenata ed
evita che la vettura si squilibri e alteri la traiettoria in curva;
questo Ŕ importantissimo, perchÚ una vettura squilibrata potrebbe
assumere comportamenti pericolosi e trovarsi in situazioni ormai
irrecuperabili giÓ alla soglia di azione dell'ABS.


ALGORITMI E LOGICA OPERATIVA
----------------------------

La matematica svolge ruolo essenziale negli ABS moderni. Molti algoritmi
vengono sviluppati con lunghe simulazioni numeriche, basate su dati
acquisiti dalla teoria del comportamento dinamico dei veicoli e altri
rilevati sperimentalmente grazie a vetture laboratorio dotate di
numerosi sensori e lanciate nei pi˙ disparati casi di frenata, su
piazzali o strade destinate a queste prove nei centri di ricerca.
Di seguito useremo il simbolo Intg(f) per scrivere l'integrale della
funzione f, sqrt(x) per scrivere la radice quadrata di x.

La logica non lineare basata su sistemi differenziali
-----------------------------------------------------

Un algoritmo molto usato - soprattutto sui mezzi pesanti con impianto
frenante pneumatico - deriva dalla logica NPID (Nonlinear Proportional
Integral Differential logic), di cui vediamo qui un accenno.
Assomma il vantaggio di essere robusta e collaudata a quello di offrire
relativa facilitÓ di aggiornamento, per contemplare casi nuovi a cui non
si era pensato, oppure per calibrare e migliorare quelli giÓ
implementati.
Abbiamo detto: la miglior frenata con pneumatici si ottiene quando la
ruota raggiunge uno slittamento pari al 20% circa; cerchiamo di
quantificare meglio questo dato:
si definisce slittamento S (slip) la quantitÓ

     V - omega * R
S = ---------------
          V

dove:
V      velocitÓ del veicolo
R      raggio della ruota
omega  velocitÓ angolare della ruota


In condizioni normali si ha omega * R = V e quindi S = 0: la ruota copia
il terreno senza slittamento significativo (si trascurano slittamenti e
deformazioni del battistrada dovute all'impronta a terra). A ruota
bloccata si ha invece omega = 0 e quindi S = V/V = 1.
Il parametro di slittamento S pu˛ variare quindi tra 0 e 1; la frenata
massima corrisponde a S = 0.2; al variare di S varia anche la capacitÓ
direzionale del veicolo. Come sappiamo dalla pratica e dalla teoria, la
ruota bloccata (S = 1) comporta aumento dello spazio d'arresto e
completa perdita di direzionalitÓ.
Obiettivo di un buon sistema ABS Ŕ la continua correzione della coppia
frenante applicata a ciascuna ruota affinchÚ sia mantenuta la massima
forza di attrito pneumatico/strada compatibilmente con la conservazione
della direzionalitÓ. Il coeff. d'attrito Á fra pneumatico e fondo
stradale Ŕ una funzione non lineare di S, Á=Á(S), quindi un ottimo
sistema ABS dovrebbe mantenere la velocitÓ angolare di ogni ruota tale
per cui sia massimo Á; tuttavia nella pratica si approssima spesso la
funzione Á(S) con la costante Á=Á(0.2) e si assume che a S=0.2
corrisponda la massima frenata.
Tutto questo nell'ipotesi che non si voglia modificare l'accelerazione
laterale del veicolo, ovvero non si voglia intervenire sul suo
equilibrio per favorire qualche manovra particolare (funzionalitÓ pi˙
caratteristica dei sistemi per il controllo della trazione che degli
ABS).

Vediamo uno schema applicativo orientato ai veicoli pesanti, il cui
impianto frenante Ŕ attuato con aria compressa (pneumatico):
  1) l'impianto pneumatico Ŕ controllato da un gruppo di valvole
discrete (ciascuna pu˛ essere o aperta o chiusa, mai parzializzata); ha
risposta pi˙ lenta rispetto ai parenti idraulici montati sulle
autovetture, ed Ŕ pi˙ difficile da controllare. La pressione pu˛ essere
mantenuta costante oppure aumentata o diminuita azionando una o pi˙
valvole; se l'azione viene eseguita con tecnica pulsante modulata (PWM =
Pulse With Modulation) si riesce a mappare abbastanza bene l'azione
discreta delle valvole in un intervallo continuo che, per semplicitÓ,
possiamo assumere da -1 a +1 dove a -1 corrisponde massimo sfogo d'aria,
a +1 massimo aumento di pressione, a 0 pressione costante.
  2) la misura della pressione d'aria istantanea nel circuito frenante
potrebbe non essere disponibile: questo complica le cose
  3) la misura della velocitÓ istantanea e dell'accelerazione istantanea
non Ŕ disponibile, per i motivi visti prima; il sistema deve ricavare
questi dati essenziali in base a ragionamenti logici che vedremo pi˙
avanti
  4) la complessa dinamica del gruppo motrice/rimorchio ed il vasto
campo d'impiego dei mezzi pesanti complica ancor pi˙ il problema e rende
difficile il test del sistema e la sua regolazione.

- Alcuni algoritmi della logica degli ABS scelgono l'approccio
"bang-bang" per generare il segnale di controllo, che si basa su due o
pi˙ capisaldi (valori fissati come riferimento) della decelerazione
angolare dOmega/dt e dello slittamento S. Quando il valore letto supera
il caposaldo pi˙ vicino, si agisce sul sistema di controllo e si varia
cosÝ la pressione nell'impianto. La logica di questo algoritmo Ŕ quindi
a "dente di sega" nella curva di attuazione del coefficiente Á (chiamata
curva Á-slip) in quanto costringe Á all'interno di un range
predeterminato.

- Altri sistemi si basano sui metodi matematici agli elementi finiti,
assai usati in campo industriale. Si basano sulla misura di segnali
presenti solo nei sistemi pi˙ evoluti: oltre alla velocitÓ angolare
delle ruote leggono anche l'accelerazione vettoriale del veicolo e la
pressione dell'impianto, inoltre adottano logiche diverse a seconda
della tipologia d'impiego del veicolo e dello stile di guida.

La bontÓ implementativa di questi due metodi dipende molto dall'abilitÓ
dei progettisti e dalla disponibilitÓ di prove di laboratorio; Ŕ molto
difficile studiare il comportamento del sistema a tavolino: servono
prove su strada mirate, condotte da personale esperto e analizzate dagli
stessi progettisti. Nel caso specifico di ABS per mezzi pesanti, si
tende a formulare la logica di controllo in anello chiuso.

- Il metodo oggi pi˙ avanzato Ŕ fondato sulla "fuzzy logic" e lo
discuteremo pi˙ in dettaglio in seguito. Si basa sull'impiego di
tecniche d'intelligenza artificiale e reti neurali.

L'idea della NPID.
Vediamo un esempio teorico di logica di controllo, basata su quanto
detto sin qui.
I controller PID sono semplici e facili da implementare, vengono
impiegati nell'industria per risolvere numerosi problemi di controllo.
Proponiamo qui un breve studio di controller PID non lineare (NPID)
derivato da essi. Il modello matematico di un PID Ŕ piuttosto semplice e
pu˛ essere scritto come:

u = Kp * (e + Ti * Intg(e) + Td * de/dt)

dove:
u    segnale di controllo
Kp   costante proporzionale al guadagno
Intg indica il simbolo d'integrale
e    errore
Ti   costante di tempo integrativa
Td   costante di tempo derivativa

Il modello NPID Ŕ un'evoluzione non lineare del precedente, e si pu˛
scrivere come:

u = Knp * ( f(e,Ap,Dp) + Tni * f(Intg(e),A1,D1) + Tnd * f(de/dt,Ad,Dd) )

dove:
Knp,Tni,Tnd sono tre parametri simili a quelli visti per il PID, f() Ŕ
una funzione non lineare definita come:

                   | sign(x) * |x|^A   per |x| > D
f:  y = f(x,A,D) = |
                   | D^(A-1) * x       per |x| <= D


I parametri A e D servono per modellare la funzione; in particolare di
solito 0<A<=1, e D Ŕ un piccolo numero positivo usato per creare un
piccolo dominio lineare nell'intorno dello 0 onde evitare eccessivo
guadagno nei dintorni dell'origine, che potrebbe falsare i metodi
numerici. L'idea di fondo risiede nell'uso di una combinazione non
lineare di e, Intg(e), de/dt al posto della classica lineare. La
funzione f Ŕ esponenziale, ed il suo esponente Ŕ di solito fissato a
0.5; ci˛ crea una mappatura non lineare tra x e y. Rispetto ad un metodo
lineare questo sistema fornisce guadagno maggiore per valori piccoli di
x, e minore per valori grandi.
Nelle applicazioni industriali i PID controller ricorrono a numerosi
parametri per adattarsi alle varie esigenze, modificando il tempo
integrativo e derivativo tramite questi, in funzione dell'ampiezza
dell'errore. Questo comporta grande guadagno per piccoli errori e
piccolo guadagno per grandi errori. Gli NPID controller, invece, grazie
alla f esponenziale, implementano l'idea con maggior sistematicitÓ e
semplicitÓ.
Il "tuning" di un NPID (cioŔ la calibrazione dei parametri per adattare
il modello alla realtÓ che si vuole affrontare) si svolge con metodi
sperimentali simili a quelli usati con i PID, ma riesce pi˙ facile e
rapido. I risultati ottenuti dalle simulazioni mostrano che un
controller NPID fornisce migliori prestazioni sui sistemi per ABS e
garantisce una migliore "robustezza" algoritmica nei casi che si
discostano da quelli preventivati e simulati, in particolare si adatta
meglio a condizioni dell'impianto frenante e del fondo stradale non
contemplati nelle prove.

Vediamo adesso un esempio di simulazione.
Scopo di questa simulazione Ŕ confrontare la prestazioni di tre
controller: PID, anello (loop-shaping), NPID. Affronteremo sei diverse
situazioni operative, che vogliono rappresentare casi tipici di frenata
d'emergenza su automezzi pesanti con impianto pneumatico: frenata
normale, su fondo scivoloso, con pressione alta e bassa nel circuito
freni, con dinamica lenta e veloce. Le prove sono state condotte con
simulatori industriali, cercando di riprodurre con il maggior realismo
possibile le condizioni vere.
Vediamo le caratteristiche matematiche dei tre controller:

- PID
Gpid(s) = Kpj * (1 - Tij/s + Tdj * s)

dove:
j   rappresenta il parametro assi (j=4 -> 4 assi, j=5 -> 5 assi)
Kp  guadagno proporzionale
Ti  costante di tempo integrativo
Td  costante di tempo derivativo

Kp4 (4 assi) = -0.03
Kp5 (5 assi) = -0.05
Ti4 = Ti5 = 0.3
Td4 = Td5 = 0.01


- anello (loop-shaping)
Ŕ basato su funzione lineare

         -150000 * (s+5)^4
Gc(s) = -------------------
           s * (s+100)^5

lo stesso controllo pu˛ essere applicato sia a 4 assi sia a 5.


- NPID
u = Knp * ( f(e,Ap,Dp) + Tni*f(Intg(e),Ai,Di) + Tnd*(de/dt,Ad,Dd) )

dove:
Ap = Ai = Ad = A = 0.5
Dp = Di = Dd = D = 0.1
Knp = -0.015
Tni = Tnd = 0.5
anche questo controller pu˛ essere applicato a 4 o 5 assi.

I sei diversi casi riflettono le diverse condizioni dei fondo stradale,
della pressione d'aria nell'impianto frenante, della dinamica dei
cilindri che azionano i freni. Queste sei situazioni possiamo definirle
come:
S1: normale (P = 90 psi, Á = 0.7, caratteristiche impianto nominali)
S2: fondo stradale scivoloso (Á = 0.4)
S3: alta pressione nell'impianto (P = 120 psi)
S4: bassa pressione nell'impianto (P = 60 psi)
S5: dinamica frenante rapida (piccola costante di tempo e piccolo
rapporto di sfogo)
S6: dinamica frenante rapida (grande costante di tempo e grande rapporto
di sfogo)

Il tempo di simulazione Ŕ di 20 secondi nel caso S2, 15 secondi negli
altri; gli step sono di 2.5 ms; il campionamento dei sensori del pistone
freni e della ruota avviene ogni 15 ms.

Il programma simulatore usato Ŕ TruckSim, sviluppato dalla Mechanical
Simulation Corporation per lo studio realistico in campo industriale
della dinamica dei veicoli pesanti, in particolare Ŕ specializzato nella
simulazione dei dispostivi frenanti di camion, autobus, trattori,
motrici e rimorchi. Riproduce e gestisce diverse condizioni, sostituendo
all'automezzo un modello matematico che lo emula. Risolve le equazioni
dinamiche del moto e simula il comportamento del veicolo al variare
delle condizioni di frenata e sterzata. I modelli rappresentativi dei
pneumatici (cruciali nella simulazione) e delle sospensioni sono molto
raffinati, basati su sistemi non lineari: contemplano le geometrie pi¨
diffuse per le sospensioni di veicoli pesanti con assale rigido e
sistema sterzante asimmetrico.
Il controllo in ingresso Ŕ dato dalla matrice degli angoli di sterzo e
di freno nell'intervallo di tempo campione (controllo ad anello aperto),
oppure valori continui di sterzo e velocitÓ (anello chiuso).
L'unicitÓ e complessitÓ del problema dell'ABS rende difficile creare una
simulazione completa e veritiera, tuttavia i risultati sono molto
interessanti.
L'obiettivo Ŕ simulare la frenata in modo che lo spazio d'arresto sia il
pi˙ piccolo compatibile con la stabilitÓ laterale. Lo spazio d'arresto
si ottiene dalla simulazione e pu˛ essere via via confrontato impiegando
cicli simulativi, sin quando si determina per esaustione il valore
minimo. Questo, tuttavia, *non* dev'essere l'unico parametro importante
negli ABS moderni, anzi. Ad esempio, su fondi a buona aderenza (Á
elevato) la frenata a ruote quasi bloccate (5%) comporta spazi d'arresto
ridotti ma scarsa o nulla stabilitÓ laterale e violento stress dei
pneumatici.
Purtroppo TruckSim non Ŕ in grado di simulare l'eventuale moto laterale
del veicolo in caso di frenata rettilinea; in questo caso dovremo
accontentarci dello spazio d'arresto e dell'errore del second'ordine
della velocitÓ angolare delle ruote, utile per raffronti.

Analisi dei risultati della simulazione.
Osserviamo due parametri per valutare la simulazione dei nostri tre
controller: lo spazio d'arresto e l'errore del second'ordine della
velocitÓ di rotazione delle ruote.
Lo spazio d'arresto Ŕ definito come:

SD = Intg(Vv)dt calcolato fra t0 e t1

dove Vv Ŕ la velocitÓ istantanea, t0 e t1 sono gli istanti d'inizio e
fine della frenata.
Nella simulazione, come detto prima, abbiamo imposto t0=0 e t1=20
secondi in S2, 15 secondi negli altri casi.
L'errore del second'ordine della velocitÓ di rotazione delle ruote Ŕ
definito come:

NMj = sqrt( sommatoria(ei^2) ) per l'indice i che varia da 1 a n
j  indica il numero degli assi (4 o 5)

dove:
e = VWd-VW Ŕ la differenza tra la velocitÓ angolare delle ruote
desiderata e quella reale
ei Ŕ il valore dell'errore nell'intervallo i-esimo della simulazione

Una simulazione di 15 o 20 secondi Ŕ discretizzata su 6000 o 8000 passi
(step). Si calcolano due errori alla seconda norma (NM4 e NM5 per 4 e 5
assi), si assume come risultato NM la media dei due. L'errore medio NM
rispecchia la prestazione media del controllo di velocitÓ di rotazione
delle ruote: pi˙ basso Ŕ, migliore Ŕ stato il controllo.
Vediamo i raffronti tra spazio d'arresto ed errore, nei sei casi:


caso PID Loop NPID
------------------------------   spazio d'arresto
S1 86.3 61.3 65.9
S2 154.1 139.9 114.6
S3 91.0 63.4 66.4
S4 83.3 62.5 66.7
S5 78.5 80.4 64.3
S6 94.7 67.6 70.8


caso PID Loop NPID
------------------------------   seconda norma dell'errore
S1 740.7 216.1 286.1
S2 945.1 694.2 603.2
S3 770.4 360.2 394.5
S4 631.7 241.8 256.8
S5 594.6 492.7 229.3
S6 818.6 518.2 377.0


Dall'analisi di queste tabelle salta subito all'occhio il bloccaggio
delle ruote negli istanti iniziali del PID controller, a cui seguono
spazi d'arresto maggiori rispetto agli altri controller in tutti i sei
casi. Questo indica scarsa attitudine dei sistemi PID nel controllo
degli ABS, o meglio indica che in base a questi due parametri valutativi
(spazio d'arresto ed errore di velocitÓ angolare) i sistemi PID sono
meno efficienti di quelli ad anello e degli NPID.
Il controller ad anello offre migliori prestazioni e talvolta supera
persino l'NPID, tuttavia Ŕ poco efficace su fondi scivolosi o in caso di
variazioni nella dinamica della frenata.
Si ritiene per˛ migliore il controller NPID in quanto offre ottimo
compromesso in tutti i casi, in particolare risulta pi˙ efficiente nelle
situazioni complesse.

In definitiva, la simulazione ha mostrato che i tre sistemi (PID,
anello, NPID) garantiscono buon controllo: non sono mai stati osservati
bloccaggi completi delle ruote per lunghi intervalli.
Il controller PID Ŕ semplice e facile da implementare, la sua taratura Ŕ
intuitiva; pu˛ essere adottato su mezzi lenti o economici. Si potrebbe
modificare la funzione di controllo per eliminare i bloccaggi nelle
prime fasi.
Il controller ad anello garantisce ottimo controllo della velocitÓ
angolare delle ruote in ogni istante: riesce a mantenerla sempre vicina
a quella teorica migliore per la frenata. Perci˛ sembra adeguato ai
sistemi ABS. Tuttavia pu˛ essere poco affidabile nei casi in cui la
velocitÓ angolare misurata di tutte le ruote sia bassa, perchÚ tale
informazione non basta per garantire che il veicolo stia muovendosi
lentamente. Anche nei casi di scarsa aderenza o variazione dinamica
della frenata manifesta alcuni limiti, senz'altro riducibili con un buon
tuning dei parametri e con molte prove sperimentali, ma comunque
intrinseci del metodo. Per˛ la fine calibrazione dei sistemi ad anello Ŕ
sempre ardua e delicata, e questo li pone in cattiva luce per le
applicazioni ABS pi˙ complesse.
Il controller NPID offre anch'esso ottimo controllo della velocitÓ
angolare delle ruote, e riesce a mantenerla sempre vicina a quella
ottima. Inoltre offre prestazioni pi˙ prevedibili e sincere anche in
casi complessi, come fondi sdrucciolevoli. Tutto ci˛, unito ad una
facile calibrazione, lo rende ideale per le applicazioni ABS.



 L'ABS - parte II
================

                            La fuzzy logic
                            ==============


Dedicata la prima parte alla panoramica sullo sviluppo del sistema ABS e
all'analisi di alcune logiche di controllo, vediamo oggi un metodo di
controllo legato al mondo industriale e all'intelligenza artificiale, in
grado di offrire approcci interessanti e moderni: la fuzzy logic, nel
seguito abbreviata con FL. Le sue appliacazione sono ormai numerosissime
e spaziano in vari campi sia industriali sia accademici.
A causa della vastitÓ dell'argomento vedremo solo una panoramica
introduttiva al concetto di FL e qualche applicazione al settore ABS,
lasciando alla futura terza parte il compito di presentare e descrivere
un'applicazione completa su un'automobilina-laboratorio. Ricordiamo che
la logica operativa degli impianti reali montati sulle vere automobili Ŕ
irreperibile in quanto protetta da segreto industriale, ma il buon senso
suggerisce somiglianza agli studi accademici e agli esperimenti cui
accenneremo.


INTRODUZIONE
------------

Il concetto di logica di controllo affonda le origini negli insegnamenti
di Aristotele, filosofo sommo dell'antica Grecia (IV secolo a.C.), di
cui ricordiamo in questa sede la divisione delle scienze in teroretiche,
pratiche e poietiche. Secondo la logica classica ogni oggetto o azione
deve potersi categorizzare, ovvero inquadrare in una sorta di
contenitore le cui regole siano definite e diverse da quelle che
descrivono gli altri contenitori. Nel mondo reale questa divisione
risulta spesso, purtroppo, impraticabile per insorgere di complessitÓ
non affrontabili sia nella definizione delle categorie sia nella
discernita del criterio di scelta: diventano necessari esperimenti e
collaudi empirici.
Nel 1965 alcuni ricercatori dell'UniversitÓ di Berkeley, in California,
affrontarono con metodo matematico questo interessantissimo e generale
problema, e svilupparono un modello cui diedero il nome di "fuzzy logic"
(logica matta), basato sulla "fuzzy theory": esso considera variabile
con continuitÓ gli elementi che possono risiedere in una categoria.
Questo metodo di classificazione permette approcci innovativi ad uno
spettro amplissimo di problemi reali.

Il primo sistema ABS meccanico pare sia stato costruito nel 1947 dalla
Boeing per agevolare la frenata dei suoi aerei. La volta scorsa abbiamo
detto che i sistemi ABS convenzionali nacquero negli anni '70 per
migliorare la frenata d'emergenza (panic-stop), in seguito anche su
fondi stradali diversi e in condizioni mutevoli.Tuttavia per le
difficoltÓ costruttive e per i costi non riscossero successo tra i
produttori di automobili, ma si diffusero all'inizio solo sui veicoli
pesanti, che offrono maggiore spazio economico. Nella metÓ degli anni
'80 la tecnologia raggiunse la soglia richiesta dai produttori di
automezzi ed il mercato avvamp˛ di novitÓ.
Una statistica condotta lo scorso decennio (cfr. "The ABS race is on",
WARD's Autoworld, maggio 1989, pag. 61.) indica in 5 miliardi di $ il
mercato previsto sino al 1995, in 10 quello sino al 2000, e ritiene che
almeno il 35-50% dei nuovi veicoli sarÓ equipaggiato con ABS. I dati
reali hanno superato questa previsione, e mostrato quali margini
d'immagine e guadagni ci siano: la vendita di veicoli equipaggiati con
ABS Ŕ aumentata grazie sia alla maggior efficacia dei dispositivi
moderni in rapporto a quelli sperimentati negli anni '70 e '80, sia ai
minori costi e alla maggiore concorrenza, fino a coprire la quasi
totalitÓ del parco automezzi. Ci˛ ha spinto la ricerca verso i nuovi e
affascinanti orizzonti dell'intelligenza artificiale e - in ispecie -
della FL. 


FORMULAZIONE
------------

Sebbene la FL sia costruita su teorie matematiche, offre un approccio
innovativo alla descrizione del problema: permette di esprimerlo in
termini linguistici, ovvero con parole cui corrispondono opportuni
algoritmi legabili tra loro (come le parole di una frase si legano per
esprimere un concetto).

Es. "Se il rubinetto Ŕ aperto, e la vasca Ŕ colma, allora interrompere
la mandata di acqua".

A ciascun elemento di questa frase pu˛ corrispondere un algoritmo, che
pu˛ legarsi ad altri algoritmi secondo regole definite dalla teoria.
L'azione finale dipende dagli algoritmi in gioco e dal modo in cui si
sono correlati. I parametri "aperto, colmo, acqua" vengono descritti
dalla FL con opportune funzioni membro della classe-oggetto cui
appartengono. Chi ha dimestichezza con la teoria della programmazione
avrÓ riconosciuto in quest'approccio la palese somiglianza con l'OOP
(Object Oriented Programming), che non a caso nacque per affrontare i
problemi reali con metodi meno dispersivi della programmazione
strutturata.
Descrivere il sistema in termini linguistici anzichÚ matematici Ŕ molto
pi˙ facile ed intuitivo per l'uomo, si adatta a infiniti casi e si
presta a rapide modifiche quando necessario contemplare nuovi parametri,
e non risente di eventuali lievi cambiamenti operativi; per contro,
realizzare un metodo algoritmico in grado di offrire questa potenza e
implementarlo in un computer di modeste dimensioni Ŕ molto complicato.
I casi reali richiedono formulazioni ben pi˙ complesse del paradigma
esemplificato sopra, in sostanza limitato a pochi parametri e a
strutture tipi SE->ALLORA. Il problema viene scomposto in
sotto-problemi, oppure si usano algoritmi in grado di simulare "memoria"
e decidere in base all'esperienza acquisita: ovvero sistemi
d'intelligenza artificiale che "imparano" dalle situazioni in cui si
trovano.
In termini tecnici, i sistemi FL sono deterministici, non lineari,
invarianti rispetto al tempo.


APPLICAZIONI PER L'ABS
----------------------

Negli anni recenti la FL Ŕ stata applicata con successo in molti campi,
tra questi figura il mondo dell'automobile. Ormai la logica di controllo
di parecchi sistemi elettronici montati sulle auto Ŕ orientata alla FL:
in particolare quella dell'ABS, del cambio automatico, del controllo di
trazione, e dei sistemi di autoguida allo studio per sviluppare "piloti
automatici" in grado di guidare l'auto nei lunghi e noiosi percorsi
autostradali.
Nella prima parte ho illustrato quali sono le caratteristiche richieste
all'ABS moderno, in sintesi: prevenire il bloccaggio delle ruote,
conservare la direzionalitÓ del veicolo, scongiurare imbardate e - se
possibile - ricuperare eventuali inizi di sbandata. Il minimo spazio
d'arresto non Ŕ pi˙ il parametro fondamentale di giudizio, ma solo uno
dei tanti (sebbene importante). La complessitÓ della logica di controllo
cresce con l'ampliarsi della casistica di frenata che si vuole
contemplare, e giunge in breve a livelli ingestibili analiticamente: a
questo punto entrano in gioco sistemi basati sull'intelligenza
artificiale, e tra questi la FL. Oggi l'ABS Ŕ considerato un ausilio
indispensabile per la sicurezza attiva del veicolo, sebbene vi siano
ancora situazioni in cui pu˛ dimostrarsi pericoloso.
La sua natura di sistema dinamico non lineare lo offre spontaneo
candidato per applicazioni della FL. Il grande volume commerciale mosso
dal mondo automobilistico ha spronato i costruttori di hardware a
realizzare microcontroller pensati per gestire le principali funzioni
algoritmiche della FL, e i produttori di software ad implementare
programmi adatti. In questo settore Intel e Motorola hanno in catalogo
varie proposte hardware, a cui daremo uno sguardo nel prosieguo; la
Inform Software Corporation Ŕ invece una delle case specializzata nel
software dedicato.

Per gestire l'ABS, gli algoritmi FL usati devono mappare i valori in
ingresso sui valori in uscita: i primi sono segnali in arrivo dai
sensori, i secondi segnali inviati dal sistema agli attuatori. In parole
povere, devono decidere quale sia l'azione corretta che corrisponde ad
ogni stato del sistema in ingresso. Per giungere a questo traguardo non
bastano le regole di mappaggio dirette (ad A corrisponde l'azione B), ma
serve un sistema basato su intelligenza artificiale che riesca a
costruire regole elementari cui corrispondono azioni elementari, e
utilizzare queste regole per costruirne altre pi˙ complesse, sino a
raggiungere il livello di sofisticazione necessario per intraprendere la
giusta azione nella maggior parte degli stati del sistema (descritti
dall'insieme dei valori letti dai sensori). In caso di stato ignoto in
ingresso, il sistema si disattiva e se lo stato persiste assume vi sia
un guasto e segnala avaria (ad esempio illumina una spia sul cruscotto).
Diventa via via possibile offrire linguistica pi˙ completa e poter
esprimere il problema in termini quasi umani; ad esempio diventa
ammissibile e operativa una frase come:

"Se le ruote posteriori stanno girando lentamente, e un attimo prima la
velocitÓ del veicolo era elevata, allora riduci la coppia frenante
posteriore."

L'output del sistema ABS FL pu˛ essere vario. Di solito si usa una
tecnica basata sul centro di gravitÓ del veicolo (COG: Center of
Gravity), si valutano le regole FL, si ottiene in uscita un "controllo"
che pu˛ essere una matrice di valori o un gruppo di segnali, si processa
questo controllo (operazione di "defuzzy") secondo uno schema tipo
quello (molto elementare) sotto riportato e si agisce.
a) ogni elemento del controllo viene moltiplicato per la sua posizione
rispetto all'asse X, ottenendo il peso dell'elemento
b) i prodotti posizione-peso vengono sommati tra loro
c) la somma viene divisa per i valori in uscita, al fine di ottenere il
valore di uscita relativo al COG lungo l'asse X
d) questo COG Ŕ il controllo finale


L'uso dei microcontroller
-------------------------

Le "electronic control units" (ECU), i sensori di velocitÓ delle ruote
(encoder), e i modulatori della pressione frenante (valvole) sono i
componenti pi˙ significativi di un sistema ABS.
I sensori di velocitÓ delle ruote trasmettono all'ECU impulsi la cui
frequenza Ŕ proporzionale alla velocitÓ di rotazione: sono in sostanza
encoder a impulsi. L'ECU processa questi dati e regola di conseguenza la
coppia frenante, avvalendosi di attuatori la cui natura dipende
dall'impianto (di solito sono valvole). Ogni loop (lettura sensori e
comando attuatori) avviene in meno di 5 ms, 2 ms per i processori di
ultima generazione.

La piattaforme Intel 8XC196K

Vediamo un possibile impiego di un controller a 20 MHz della famiglia
Intel 8XC196Kx, dedicato all'algoritmica FL; diversamente dai vecchi
sistemi a 8 bit, questa famiglia usa processori con architettura a 16
bit e coprocessore matematico: il prodotto di matrici di grande
dimensioni richiede meno dell'8% del tempo macchina.
Sui fondi stradali comuni, quando si applica coppia frenante alle ruote
si ottiene un forte aumento della componente longitudinale dell'attrito
fra le ruote e il fondo. Lo slittamento S delle ruote Ŕ definito come la
differenza tra la velocitÓ del veicolo e la riduzione di velocitÓ
angolare ottenuta grazie alla coppia frenante: nella prima parte abbiamo
visto la descrizione matematica pi˙ usata. La frenata del veicolo
avviene grazie all'attrito fra le ruote e il fondo, variabile al variare
di S. Purtroppo, la relazione di S agisce a sfavore della frenata nelle
curve o su fondi molto scivolosi, situazioni in cui il coefficiente di
attrito varia: in questi casi se la coppia frenante resta immutata si
giunge senz'altro a bloccaggio delle ruote e si passa dall'attrito
volvente a quello radente. Si dimostra con facilitÓ, sia nella pratica
sia nella teoria matematica, che a ruote bloccate corrisponde scarso
attrito e, quindi, nulla direzionalitÓ.
I valori in ingresso a un ABS FL sono derivati dalla velocitÓ angolare
delle ruote, da cui si pu˛ calcolare accelerazione e slittamento di ogni
ruota grazie a opportuni confronti dei segnali in arrivo da ciascuna:
vengono processati direttamente dal chip sino ad ottenere in uscita il
controllo.

Le caratteristiche principali di questa piattaforma hw si riassumono in:
- gestione veloce dell'I/O per supportare l'I/O dei segnali senza
appesantire la CPU (impegnata nei calcoli)
- convertitore A/D a 10 bit integrato, per la lettura del pedale del
freno
- gestione IRQ per intercettare eventi speciali, gestibile via sw
- output PWM (es. per controllo valvole per modulare la coppia frenante
di ogni ruota), con frequenza e duty cycle gestibili via sw
- RAM e ROM integrate su scheda, sena ricorrere a bus esterno

Questi controller dedicati, al contrario degli ABS convenzionali,
possono essere ottimizzati anche quando le informazioni disponibili
sulla dinamica del sistema sono scarse: ci˛ grazie ai processi per la
ridefinizione delle regole di base. Sistemi di sviluppo, tipo Inform
Software Corporation fuzzyTECH 3.0 MCU-96, agevolano la comprensione del
problema e aiutano a definire i parametri necessari. Nel caso specifico,
questo sistema di sviluppo Ŕ pensato per l'impiego con la famiglia dei
controller Intel Fuzzy ABS con architettura MCS(96) e offre:
- interfaccia grafica per lo sviluppo visuale passo passo della logica
- strumenti per simulare e ottimizzare il funzionamento della logica
creata: pu˛ anche essere interfacciato con un vero simulatore
- generatore di codice C adatto al compilatore fornito a corredo del
controller

La tabella compara il tempo d'esecuzione necessario per completare il
controllo dai gli ingressi e le uscite riportate:

7 regole 20 regole 20 regole FAM 80 regole FAM
2in/1out 2in/1out 2in/1out 3in/1out

0.22 ms 0.33 ms 0.34 ms 0.50 ms


Confronto ABS FL contro ABS convenzionale
-----------------------------------------

I sistemi ABS convenzionali si scontrano presto con il problema della
non linearitÓ durante la frenata:
- coppia frenante disomogenea, dovuta alle variazioni di temperatura e
quindi di efficienza dell'intero impianto, in particolare del fluido
usato per trasmettere la forza (olio freni o aria)
- fondo stradale variabile
- diversitÓ dei pneumatici e del coefficiente di attrito da modello a
modello
- usura dei pneumatici
- variazione della geometria delle sospensioni e quindi dell'impronta a
terra e del modo in cui la gomma "lavora"
- ecc.

Questi fattori aumentano a dismisura la complessitÓ dei modelli
matematici, e non basta pi˙ ricorrere a logiche NPID - ne parlai nella
prima parte - quando si vuole costruire impianti realmente funzionali:
le equazioni descrittive diverrebbero troppo intricate e sarebbe
difficile o impossibile calibrare tutti i parametri in gioco, trovandosi
alla fine un sistema poco stabile e fruibile solo in casi particolari
(come la frenata a ruote dritte). Questa era, difatti, la situazione
degli anni '80.
La natura dell'ABS Ŕ di per sŔ dinamica e le condizioni al contorno
mutevoli; terreno arido per i sistemi lineari e non lineari classici, ma
fertile per quelli orientati all'intelligenza artificiale. La FL Ŕ uno
strumento quindi idoneo ad affrontare questi casi. Descritta la logica
di controllo con linguaggi intuitivi basati su regole linguistiche, Ŕ
facile calibrarla e testarla, ed Ŕ facile riuscire a "pensare" in questi
termini e spiegare al sistema cosa si vuole implementare. Ancora, il
sistema riesce ad apprendere e memorizzare casi non ipotizzati e si pu˛
quindi istruire tramite lunghe simulazioni in fabbrica.
Le regole che descrivono il dinamismo dell'ABS rientrano nella natura
stessa della FL, e possono essere usate per costruire regole pi˙ evolute
o ad un livello pi˙ alto (macro regole) adatte a rappresentare con
logica linguistica le regole intuitive con cui l'uomo programma il
sistema. L'ausilio di sistemi di sviluppo visuali completa il quadro di
quest'affascinante metodologia, o meglio filosofia di lavoro.
Lo schema a blocchi qui sotto, per esempio, pu˛ essere il punto di
partenza su cui lavorare nell'ambiente di sviluppo visuale: ogni blocco
verrÓ "esploso" in sottoblocchi via via descritti linguisticamente.


 freni 4WD accensione feedback omega ruote
   | |     |    |     |
   | |     |    |     |
   | |     |    |     |
   \ \     \/    /    /
    ------------------- data input-------------------------
    |
    |
    \/
sistema FL
    |
    |
    \/
data output
    |
    |
PWM <---------------> spia segnalazione guasti


- Freni: questo blocco rappresenta la forza impressa al pedale del
freno, pu˛ essere espressa in formato sia analogico sia digitale
- 4WD: indica la trazione integrale inserita, per i veicoli che
dispongono di questa possibilitÓ
- Accensione: indica se il motore Ŕ in moto oppure no (es. auto in
discesa a motore spento)
- Feedback: valori di stato del sistema, per conoscere le reazioni ai
controlli impartiti
- Omega ruote: velocitÓ angolare di ciascuna ruota, n segnali in
ingresso dove n Ŕ il numero delle ruote (singole o gemellate); nelle
automobili n = 4; questi dati sono importantissimi e dalla loro analisi
combinata si ottengono accelerazione e velocitÓ del veicolo, parametri
essenziali per il corretto funzionamento del sistema



  ****************************
  *    fine seconda parte    *
  ****************************



A breve - nella terza parte - vedremo l'applicazione della FL a un
sistema ABS simulato e sperimentato con una piccola
automobilina-laboratorio radiocomandata.




BIBLIOGRAFIA
------------
 
Chi volesse approfondire gli aspetti applicativi e scoprire gli
strumenti hardware e software di sviluppo pi˙ usati, pu˛ consultare il
sito http://www.fuzzytech.com che offre materiale illustrativo e link a
manuali, presentazioni, atti di convegni, seminari.

1. Intel, "Fuzzy Anti-Lock Braking System", 1996

2. "Benchmark Suites for Fuzzy Logic", 1997

3. N. Matsumoto et al., "Expert antiskid system"
IEEE IECON '87, 810-816, 1987

4. C. von Altrock, "Fuzzy Logic and NeuroFuzzy Applications Ex-plained",
Prentice Hall, Englewood Cliffs, NJ, 1995

5. H. Kawai et al., "Engine control system"
Proc. of the Int'l Conf. on Fuzzy Logic and Neural Networks,
Iizuka, Japan, 929-937, 1990

6. L. Feldkamp and G. Puskorius, "Trainable fuzzy and neural-fuzzy
systems for idle-speed control"
2nd IEEE Int'l. Conf. on Fuzzy Systems, 45-51, 1993

7. H. Takahashi, K. Ikeura, and T. Yamamori
"5-speed automatic transmission installed fuzzy reason-ing"
IFES '91-Fuzzy Engineering toward Human Friendly Systems
1136-1137, 1991.

8. H. Ikeda et al., "An intelligent automatic transmission control using
a one-chip fuzzy inference engine"
Proc. of the Int'l. Fuzzy Systems and Intelligent Control Conf. in
Louisville, 44-50, 1992.

9. P. Sakaguchi et al., "Application of fuzzy logic to shift scheduling
method for automatic transmis-sion"
2nd IEEE Int'l. Conf. on Fuzzy Systems, 52-58, 1993

10. C. von Altrock, B. Krause, and H.-J. Zimmermann
"Advanced fuzzy logic control of a model car in extreme situations"
Fuzzy Sets and Systems, 48:1, 41-52, 1992

11. INFORM GmbH/Inform Soft-ware Corp. "fuzzyTECH and NeuroFuzzy Module
5.0 User's Manual"
Chicago, IL, 1997

12. H.-J. Zimmermann and U. Thole, "On the suitability of minimum and
product operators for the inter-section of fuzzy sets"
Fuzzy Sets and Systems, 2, 173-186, 1979

13. C. von Altrock and B. Krause, "On-Line-Development Tools for Fuzzy
Knowledge-Base Systems of Higher Order"
2nd Int'l Conf. on Fuzzy Logic and Neural Networks Proceedings, Iizuka,
Japan, 1992

14. L.I. Davis et al., "Fuzzy Logic for Vehicle Climate Control"
3rd IEEE Int'l. Conf. on Fuzzy Sys-tems, 530-534, 1994

15. J.-P. Aurrand-Lions, M. des Saint Blancard, and P. Jarri,
"Autonomous Intelligent Cruise Control with Fuzzy Logic"
EUFIT '93-1st Eur. Congress on Fuzzy and Intelligent Technologies,
Aachen, 1-7, 1993

16. V.M. Thurm, P. Schaefer, and W. Schielen
"Fuzzy Control of a Speed Limiter"
ISATA Conf., 1993

17. R. Russ, "Designing a Fuzzy Logic Traction Control System"
Proc. of the Embedded Systems Conf., 2, 183-196, 1994

18.
Mitsubishi Gallant, "Mitsubishi Unveils New Gallant",
Automotive News, 18 May 1992.

 

L'ABS - parte III
=================


Errata corrige
--------------
nella parte I ho inavvertitamente capovolto le percentuali che
corrispondono ai valori di slip S della miglior frenata: ovviamente il
valore giusto S=0.2 Ŕ il 20% dello scorrimento (o slittamento) cui
corrisponde velocitÓ angolare della ruota pari all'80% della velocitÓ
che avrebbe se fosse libera.
Grazie a Mauro, per aver segnalato la svista.



                          Esempi di fuzzy logic
                          =====================


Nella II parte abbiamo descritto la filosofia di base della fuzzy logic
(FL) e accennato agli algoritmi che la usano per risolvere problemi
reali di natura complessa, in ispecie l'ABS. Abbiamo visto un accenno ai
microcontroller pensati per supportare la FL e abbiamo delineato un
possibile scenario applicativo. Vediamo adesso una descrizione pi˙
operativa, pi˙ tecnica, che ci permetta di affrontare qualche esempio
concreto. In seguito, la prossima volta, cercheremo di studiare e capire
un possibile sistema ABS montato su una piccola auto radiocomandata.


INTRODUZIONE
------------

La FL Ŕ vasta, e ancor pi˙ vasto Ŕ il mondo dell'intelligenza
artificiale; in questa sede presentiamo una panoramica sui concetti
operativi pi˙ basilari e scriviamo un semplice programma C++ per
rappresentare ci˛ che sin'ora abbiamo visto in astratto, almeno nelle
sue linee essenziali: gli operatori logici. Useremo il linguaggio C++
perchÚ OOP e diffuso per ogni piattaforma, e creeremo una classe per
gestire l'aritmetica logica di base.


DISCRETO E CONTINUO
-------------------

La realtÓ non Ŕ un mondo digitale, le risposte non sono quasi mai
sintetizzabili con semplici "sÝ" e "no", o con "vero" e "falso":
esistono sfumature. La logica booleana non Ŕ quindi adatta a descrivere
la realtÓ, serve una nuova logica pi˙ descrittiva.
Nel '900 Lukasiewicz propose una logica semibooleana basata su tre
valori logici anzichÚ sui classici due 0/1 (oppure vero/falso che dir si
voglia), ma presto si accorse che non bastavano e tent˛ con quattro e
poi con cinque valori; a quel punto capÝ che la vera soluzione era
soltanto una: introdurre una varietÓ infinita di stati logici. Oggi
chiameremo questo metodo "analogico" anzichÚ digitale, ovvero "continuo"
anzichÚ "discreto".
Nel 1965 Lofti Zadeh formalizz˛ la teoria necessaria e pubblic˛ un
articolo in cui gli operatori logici lavorano nell'intervallo di numeri
reali da 0 a 1, estremi compresi. Questo segna la nascita della FL.
Dunque, la differenza prima tra la logica fuzzy e quella booleana Ŕ lo
spazio di variabilitÓ degli stati: da 0 a 1 con continuitÓ per la FL,
solo 0 o 1 per la booleana.


STATI LOGICI FUZZY E MAPPATURA
------------------------------

Alla domanda "la 75 tuBBo di CMC Ŕ un polmone?" le risposte booleane
possono essere solo "sÝ" (vero = 1) oppure "no" (falso = 0), non Ŕ
ammessa risposta "abbastanza", oppure "poco", oppure "molto"; la FL,
invece, ci permettere di rispondere "abbastanza" usando un valore
compreso tra 0 e 1, come 0.8. Ok, in questo caso la logica di Bool
sarebbe bastata (un sano 1 e via andare :-bbb) ma Ŕ un caso
particolare... :-bb
Il valore 0.8 dell'esempio sopra prende il nome di Fuzzy Truth Value
(FTV) e si pu˛ assegnare come FTV dell'espressione "La 75 Ŕ un polmone"
nell'ambito di una logica in cui quest'espressione sia utile.
Generalizzando, si potrebbe scrivere una funzione m() che assegni FTV a
espressioni importanti nel contesto logico in esame. Sarebbe stato
possibile invocare m() passandole come argomenti l'una e l'altro: nel
nostro caso l'espressione sarebbe stata "Ŕ un polmone", il parametro da
valutare "la 75 di CMC", l'FTV 0.8; lo scopo Ŕ permettere di costruire
una memoria di stati del sistema su cui la FL possa ragionare.

                m(polmone("75")) = 0.8
  ovvero        m(A(x)) = y

spiega al sistema che FTV per l'oggetto x riferito all'espressione A
vale y, cioŔ "mappa" y su A(x); naturalmente bisognerÓ da qualche parte
definire cosa s'intende per A(), ovvero cosa s'intende per "polmone".

Vediamo un altro esempio. Definiamo l'espressione CALDO come un paragone
con la misura di temperatura 20░C e FREDDO con 5░C, indi usiamo la
funzione m() per mappare alcuni FTV su CALDO(x) e FREDDO(x) dove x sono
giorni della settimana di cui stiamo studiando le temperature.
Ipotizziamo queste temperature:

  martedÝ ci sono 18░C
  mercoledÝ ci sono 21░C
  sabato viene una tempesta di neve e ci sono 2░C

In base a considerazioni teoriche oppure derivate da esperimenti,
possiamo decidere di mappare questi FTV:

  m(CALDO(martedÝ))    = 0.9
  m(FREDDO(martedÝ))   = 0.2

  m(CALDO(mercoledÝ))  = 1
  m(FREDDO(mercoledÝ)) = 0.1

  m(CALDO(sabato))     = 0.1
  m(FREDDO(sabato))    = 0.73

Il senso di queste assegnazioni Ŕ chiaro: valori vicini a 0 esprimono
scostamento dall'idea espressa da A(), vicino a 1 esprimono somiglianza,
1 esprime soglia raggiunta o superata. I valori di FTV sono importanti e
spesso desunti da prove di laboratorio o esperimenti sul campo: la
scelta di valori corretti calibra il sistema.

Le funzioni membro possono essere semplicissime ma anche
complicatissime. Negli esempi visti sopra sarebbero banali e si
potrebbero implementare con facilitÓ, es:

             /
             |  0       per x > 24
             |
             |  24 - x
FREDDO(x) =  |  ------  per -6 <= x <= 24
             |    30
             |
             |  1       per x < -6
             \


OPERATORI FUZZY
---------------

Logici
------

Nella logica booleana gli operatori di base sono semplicissimi:
- unione (OR)
- intersezione (AND)
- negazione (NOT)
ed eventuali altri possono essere definiti sulla loro base.
Nella FL esistono ancora, ma definiti in modo diverso per contemplare la
continuitÓ:

- A OR B     = MAX( m(A(x)), m(B(x)) )
- A AND B    = MIN( m(A(x)), m(B(x)) )
- NOT A      = 1 - mA(x)

Unione ed intersezione sono estensioni degli operatori booleani, ma
vediamo un esempio chiarificatore: le affermazioni "domenica Ŕ parecchio
freddo" e "domenica Ŕ molto sereno" non sono necessariamente correlate,
e un eventuale operazione logica di unione che le coinvolgesse non deve
alterare il senso delle due affermazioni. Supponiamo che siano state
mappate cosÝ, dopo aver trovato gli FTV 0.8 e 0.9 corrispondenti a
"parecchio" e "molto" da prove empiriche:

  m(FREDDO(domenica)) = 0.8
  m(SERENO(domenica)) = 0.9

se l'AND fosse definito come nella logica classica, ovvero un prodotto,
si otterrebbe:

  m(FREDDO(domenica)) AND m(SERENO(domenica)) = 0.8 * 0.9 = 0.72

il risultato (0.72) si potrebbe interpretare come "domenica Ŕ quasi
freddo-e-sereno", ma sarebbe inadeguato alla realtÓ.
Usando invece la corretta definizione FL dell'operatore OR si ha:

  m(FREDDO(domenica)) AND m(SERENO(domenica)) = MIN(0.8 , 0.9) = 0.8

si ottiene 0.8 che Ŕ pi˙ realistico.


Hedges
------

Sono operatori creati per modificare i valori fuzzy, a cui si dÓ spesso
un nome simbolico come TANTO, POCO, ecc. Intuitivi, richiedono
implementazione accurata perchÚ la logica fuzzy usa algoritmi non banali
per costruire le disuguaglianze utili per esprimere concetti come "pi˙
grande di..."; i pi˙ comuni furono definiti da F. Wenstop e usano
vettori a 7 elementi fuzzy.


UNA SEMPLICE APPLICZIONE ELEMENTARE
-----------------------------------

Prima di affrontare l'analisi di un sistema complesso, seppur a grandi
linee, Ŕ meglio capire quali sono i mattoni usati per creare il "sistema
esperto" e vedere come implementarli a livello di codice di programma.
La FL viene utilizzata su sistemi esperti basati sull'ereditarietÓ, un
concetto ben noto ai programmatori OOP.
Scienziati, ingegneri, dottori, usano questi sistemi esperti per
analizzare e risolvere problemi con grande rapiditÓ quando essi siano
derivabili da liste di problemi giÓ noti e risolti: la soluzione sarÓ
ottenuta presentando un elenco di fuzzy-solutions tra le quali si pu˛
individuare la migliore su cui basarsi per costruire la nuova vera
soluzione.
Una delle pi˙ tradizionali applicazioni Ŕ l'OCR: il riconoscimento della
scrittura, anche quella corsiva umana.

Ma veniamo al nostro esempio C++ che implementa i principali operatori
logici e visualizza alcuni valori ottenuti con il loro uso. Il codice Ŕ
semplicissimo e si limita ad implementare la classe fuzzy e i suoi
operatori usando la tecnica di overloading, indi esegue un paio di conti
con valori di prova.



// File fuzzy.h

// macro per calcolo massimi e minimi
#define fuzmax(a, b)  (((a) > (b)) ? (a) : (b))
#define fuzmin(a, b)  (((a) < (b)) ? (a) : (b))


class fuzzy {
  public:
    // costruttori
    fuzzy ()                     {};
    fuzzy (float f) : m_fNum(f)  {}

  public:
    fuzzy operator|   (float f)    { return fuzzy(fuzmax(m_fNum, f)); }
    fuzzy operator&   (float f)    { return fuzzy(fuzmin(m_fNum, f)); }
    fuzzy operator!   (void)       { return fuzzy(1 - m_fNum);        }

    fuzzy operator+   (float f)    { return fuzzy(m_fNum+f);          }
    fuzzy operator-   (float f)    { return fuzzy(m_fNum-f);          }
    fuzzy operator*   (float f)    { return fuzzy(m_fNum*f);          }
    fuzzy operator/   (float f)    { return fuzzy(m_fNum/f);          }

    void operator|=   (float f)    { m_fNum = fuzmax(m_fNum, f);      }
    void operator&=   (float f)    { m_fNum = fuzmin(m_fNum, f);      }

    operator float    (void)       { return m_fNum;                   }

    bool contenuto_in (float f)    { return (m_fNum <= f);            }

  protected:
    float m_fNum;
};

// fine file fuzzy.h





// file fuzzy.cpp

#include <iostream.h>
#include <math.h>
#include "fuzzy.h"


void main(void)
{
  fuzzy fz1 = 0.5,                                   // 0.5
        fz2 = (fz1 | 0.4f) & 0.45f,                  // 0.45
        fz3 = !fz2 | fz2,                            // 0.55
        fz4 = !(fz1 - fz2);                          // 0.95

  bool  bl5 = fz3.contenuto_in(fz2),                 // falso
        bl6 = fz2.contenuto_in(fz3);                 // vero

  cout << "Operatori logici della classe 'fuzzy':" << endl;
  cout << "fz1 = " << fz1 << endl
       << "fz2 = " << fz2 << endl
       << "fz3 = " << fz3 << endl
       << "fz4 = " << fz4 << endl << endl;

  cout << "bl5 = " << ((bl5) ? "true" : "false") << endl
       << "bl6 = " << ((bl6) ?
"true" : "false") << endl;
}

// fine file fuzzy.cpp


La simbologia degli operatori C++ Ŕ la seguente:
 |  Ŕ l'OR
 &  Ŕ l'AND
 !  Ŕ il NOT
 +  Ŕ l'addizione
 -  Ŕ la sottrazione
 *  Ŕ la moltiplicazione
 /  Ŕ la divisione
se l'operatore Ŕ subito seguito dal segno di = esegue l'operazione e
assegna il risultato (es: x += 2 significa x = x+2)

La funzione 'contenuto_in' restituisce 'true' (vero) se l'argomento Ŕ
minore o uguale del parametro 'm_fNum', altrimenti restituisce 'false'
(falso).
La funzione 'float' implementa il cast (conversione esplicita) per i
valori della classe fuzzy.

Come esercizio, potreste implementare il controllo di appartenenza dei
valori all'intervallo 0¸1 e gestire le condizioni di errore out-of-range
:-)



  **************************
  *    fine terza parte    *
  **************************

 

L'ABS - parte IV
================


     Applicazione della fuzzy logic su un'automobilina laboratorio
     =============================================================


Nella III parte abbiamo visto i primi approcci per implementare i
mattoni logici necessari a costruire un sistema basato su fuzzy logic.
Cerchiamo ora di studiare e capire un impianto ABS elementare montato su
una piccola auto laboratorio.


INTRODUZIONE
------------

Le prove compiute dalle Case automobilistiche per calibrare il sistema e
studiarne le reazioni, sono di solito eseguite con vere automobili
laboratorio. Noi ci accontentiamo di studiare la materia usando una
piccola automobile per modellismo costruita ad hoc.
L'ottimo rapporto peso/potenza, la rigiditÓ del telaio e la taratura
delle sospensioni, conferiscono al modello un assetto pistaiolo: ottimo
per studiare il comportamento di una vettura nervosa.


COMPONENTI
----------

- Telaio lungo circa 50 cm, a gabbia metallica, di quelli usati
nell'autocross modellistico
- motore elettrico passo-passo da 1 cv, longitudinale, montato al centro
- trazione posteriore
- sospensioni indipendenti, con molle a ammortizzatori coassiali
- sterzo elettroattuato
- freni a disco elettroattuati
- differenziale bloccabile
- controller elettronico costruito artigianalmente, sfrutta la scheda
madre di un PC portatile e alcune schede d'interfaccia per pilotare il
motore passo-passo, gli attuatori ed i sensori
- attuatori elettromeccanici per movimento sterzo e per azionamento
freni a disco (uno per ogni ruota)
- scheda PWM per generare il treno d'impulsi necessario ad azionare il
motore passo-passo
- 3 sensori di distanza ad ultrasuoni (US) per conoscere posizione e
velocitÓ del veicolo rispetto agli oggetti circostanti davanti, a destra
e a sinistra
- 4 sensori infrarossi (IR), tipo quelli usati nei mouse, per leggere la
velocitÓ angolare delle ruote

L'intera componentistica Ŕ reperibile con facilitÓ presso ogni negozio
di elettronica e modellismo. L'eventuale radiocomando, ti tipo standard
acquistabile completo a parte, pu˛ essere utile - ma non necessario -
per gestire situazioni di emergenza.
Son tutti componenti economici: non si ricorre nÚ a sensori CCD nÚ a
programmi di riconoscimento ottico dei "pattern" perchÚ, sebbene possano
migliorare le prestazioni riconoscitive e capire il tipo di fondo su cui
si muove la vettura, costano troppo e non si possono installare su vere
automobili per delicatezza e sporcizie.


CARATTERISTICHE
---------------

Sulle superfici lisce la vettura accelera da 0 a 30 km/h in 3.4", e
raggiunge gli 80 km/h di velocitÓ massima. Le prove sono eseguite a
velocitÓ comprese fra i 30 e i 50 km/h.

Il ciclo di controllo, operato dall'algoritmo fuzzy, inizia con la
lettura dei segnali in ingresso dai sensori e termina con l'eventuale
emissione di segnali di controllo diretti agli attuatori; il periodo di
ogni ciclo Ŕ di 10 ms.

La misura dello stato dinamico del veicolo (slittamenti, ecc.) avviene
grazie ai sensori IR che rilevano la velocitÓ angolare delle singole
ruote, la quale viene processata da opportuni algoritmi fuzzy che
confrontano le velocitÓ di ogni ruota e traggono le conseguenze.
I tre sensori US misurano la distanza dagli ostacoli anteriori e
laterale (un sensore frontale, uno destro e uno sinistro angolati di
circa 60░ rispetto all'asse longitudinale del veicolo).
Il sistema fuzzy pu˛ guidare l'automobile indefinitamente, secondo
percorsi programmati oppure casuali, evitando in ogni caso la collisione
con ostacoli fissi o mobili (purchÚ non troppo veloci: una palla di
cannone difficilmente potrÓ essere evitata...) grazie ai dati raccolti
in tempo reale dai sensori US.


SVILUPPIAMO LA LOGICA DI CONTROLLO
----------------------------------

Il primo passo deve mettere l'auto in grado di scansare gli ostacoli
fissi rilevati da lontano, che non rappresentano pericolo imminente e
non richiedano manovre che potrebbero scomporla. Il secondo, pi˙
complesso, deve aiutarla a evitare slittamenti durante frenate brusche o
curve.

Un caso tipico d'intervento Ŕ mostrato nella figura: dietro una curva si
nasconde un ostacolo improvviso che costringe il sistema a frenare con
forza e modificare la traiettoria per scansarlo. Il blocco di asterischi
indica l'ostacolo, i puntini rappresentano i segnali US emessi dai
sensori.

  ---------------------------\
                .             \
       |------\.               \
       |  >>   -|...............\
       |------/.                 \
                .                 \
  ---------------------\           \
                        \           \
                         \     ******\
                          \     ******\
                           \     ******\
                            \           \
                             \           \

La vettura, dopo aver impostato la curva, si accorge dell'ostacolo: per
evitarlo deve chiudere la traiettoria e frenare, con possibile
slittamento delle ruote e imbardata. Il sistema di controllo deve
adoperarsi per scongiurare la sbandata: ridurre l'angolo di sterzata
rispetto al valore suggerito in assenza di slittamento portandolo al
limite supportato dalle condizioni di aderenza, eventualmente aumentare
per qualche attimo la frenata al ponte per favorire l'inserimento in
curva grazie ad un leggero sovrasterzo.


Il metodo classico
------------------

Si pu˛ pensare un modello matematico che risolva le equazioni
differenziali del moto e implementarlo nel controller, tuttavia dovrebbe
contemplare l'intera casistica di situazioni in cui la vettura pu˛
trovarsi (quasi impossibile). Nella pratica si rischia di omettere
qualche condizione importante o raggiungere una complessitÓ analitica
ingestibile. Calibrare il sistema, cioŔ regolare i parametri numerici in
gioco, diventa difficilissimo.


Il metodo fuzzy
---------------

Partiamo da questo importante concetto: un buon pilota riesce a gestire
l'automobile con successo e prontezza anche in situazioni critiche,
eppure non risolve complesse equazioni differenziali mentre guida!
Quindi, deve esistere un approccio diverso in grado di affrontare con
successo il problema. Abbiamo visto che i casi della realtÓ si possono
approssimare con la FL: ebbene proviamola, cercando di usarla per creare
un sistema di guida automatica euristico.
Al contrario dei metodi euristici basati sull'analisi della casualitÓ
con blocchi IF-THEN (se->allora), la FL Ŕ quantitativa pi˙ che
simbolica: usa gruppi di poche ma chiare regole per esprimere la
generalitÓ del problema e descrivere le situazioni - senza richiedere
l'esplicita esaustivitÓ dei casi possibili - grazie alle quali deduce la
situazione in atto tramite opportuni algoritmi fuzzy. In altre parole,
dove un sistema esperto tradizionale richiede gruppi di regole per
*ogni* caso che si vuole affrontare (in mancanza, non sarÓ possibile
affrontarlo), la FL riesce a desumere la situazione anche se non Ŕ stata
descritta in dettaglio. Ogni elemento linguistico Ŕ autoesplicativo e le
regole linguistiche sono facili da manipolare per le persone che devono
calibrare il sistema, perchÚ vicine al modo umano continuo di pensare.
In conclusione, un sistema FL ben implementato in un controller Ŕ in
grado di ridicolizzare un sistema esperto tradizionale implementato
nello stesso hardware, sia nelle dimensioni del codice sia nella
velocitÓ sia - soprattutto - nella flessibilitÓ.
Sin qui, nulla di nuovo: ne avevamo accennato nella parte III. Vediamo
come si procede operativamente.

Scrivere l'intero sistema FL in C++ per il nostro scopo Ŕ possibile ma
assai dispersivo in termini di tempo, inoltre richiede programmazione
oculata e attento debug. Meglio utilizzare un ambiente di sviluppo
visuale concepito per FL e far generare da esso il codice necessario,
eventualmente modificabile e ricompilabile. Un buon prodotto commerciale
pu˛ essere il fuzzyTECH 5 della Fuzzytech Inc. Purtroppo non posso
allegare all'articolo uno screenshot della sua schermata di lavoro, ma
assomiglia alle utilities per la scrittura degli schemi a blocchi: le
regole definite appaiono come rettangoli e si possono mettere in
correlazione tra loro collegandole con una linea disegnata con il mouse.
Il primo passo, abbiamo detto, deve condurci a ottenere un sistema in
grado di guidare il veicolo in condizioni normali a bassa velocitÓ:
accelerare, frenare, sterzare per non urtare ostacoli visti in tempo. Il
secondo passo deve gestire situazioni anomale e slittamenti delle ruote,
come in caso di frenate o sterzate di emergenza per evitare ostacoli
improvvisi.



  sensori                 regole                attuatori
_________________________________________________________________

  velocitÓ ------|
                 |
                 |----->  trazione  --------->  PWM
                 |
  US frontale ---|
             \
              \
               \
  US sinistro ---|
                 |
                 |----->  sterzo   ---------->  attuatore sterzo
                 |
  US destro -----|




Il blocco di regole in basso usa la distanza rilevata dai sensori US per
calcolare l'angolo di sterzo, quello in alto implementa un primo
semplice controllo usando la distanza dell'ostacolo frontale pi˙ vicino
e la velocitÓ angolare di una ruota anteriore (che non pu˛ slittare per
eccesso di trazione perchÚ la vettura Ŕ a TP). Nell'ipotesi di bassa
velocitÓ e condizioni normali, possiamo assumere che non vi siano
slittamenti in corso.
Questa prima rudimentale versione del sistema contempla circa 200 regole
linguistiche, espresse in formato visuale dall'ambiente di sviluppo, e
ha richiesto poche ore di lavoro.

La seconda versione, in grado di controllare la stabilitÓ dinamica della
vettura, richiederÓ oltre 600 regole e almeno due stadi algoritmici
d'inferenza logica, ma grazie all'ambiente visuale si pu˛ implementare
nel giro di un paio di giorni di lavoro.



 sensori                    regole                            attuatori
_______________________________________________________________________

 US sx ----|
           |
           |      | Gamma = 0.3        | Gamma = 0.2
           |      |orientamento -----> |orientamento
 US mid ---|----> |                    |
           |      |posizione --------> |posizione      ------> sterzo
           |                      |    |
           |                      |    |slide
 US dx ----|                      |
                                  |
                                  |
                                  |
                                  |
                                  |
                                  |
 IR fl ----|                      \--> |posizione
           |      |                    |
           |----> |slide  -----------> |slide         ------> PWM
           |      |             |      |
 IR fr ----|                    | /--> |slittamento
           |                    | |
           |                    | |
           |                    | |    |  FAM = 0.51
 IR rl ----|                    | |    |orientamento
           |      |             . |    |
           |----> |slittamento ------> |slittamento   ------> freni
           |      |             .      |
 IR rr ----|                     \---> |slide




Il primo stadio d'inferenza, rappresentato dal blocco di tre regole a
sinistra, stima le variabili di stato dinamico della vettura, grazie ai
valori letti dai sensori. Le due regole in basso stimano lo slittamento
e l'imbardata (slide) grazie alla velocitÓ, quelle in alto determinano
la posizione e l'orientamento rispetto alla strada.
Osserviamo che l'output del blocco di regole non Ŕ numerico, come ci si
aspetterebbe in un sistema che deve controllare attuatori, bensÝ ancora
linguistico: in altre parole il lessico in uscita potrebbe essere una
frase tipo "la posizione della vettura Ŕ vicina al ciglio sinistro, ma
l'orientamento tende a destra e la vettura sta scivolando sulla ruota
anteriore sinistra".
Il secondo stadio d'inferenza, rappresentato dal blocco di regole a
destra, usa come ingressi le stime eseguite dal primo stadio e determina
il controllo ottimo per far fronte alla situazione, comandando gli
attuatori. Il blocco di regole in alto determina l'angolo di sterzata,
quello centrale la trazione (ricordiamo che l'uscita PWM pilota il
motore passo-passo usato per la trazione), quello in basso la forza
frenante da applicare ai dischi dei freni delle ruote.
Questa strategia a doppio stadio d'inferenza Ŕ simile a quella umana:
prima analizza la situazione e capisce cosa sta succedendo, poi
stabilisce cosa fare e agisce.

Il codice del nostro sistema Ŕ organizzato in due segmenti di memoria:
uno contiene la parte statica, che non sarÓ mai modificata in tempo
reale mentre la vettura Ŕ in funzione, l'altro contiene le sezioni
dinamiche (variabili di stato, struttura d'inferenza, regole). Il
segmento dinamico esiste in due copie, affinchÚ sia possibile
rielaborarne una mentre l'auto Ŕ in funzione e commutare dalla vecchia
alla nuova in tempo reale, per rendere subito operative le modifiche.
L'ambiente di debug visualizza in tempo reale lo stato del sistema
inferenziale, con grafici e valori delle variabili fuzzy.


CONCLUSIONI
-----------

Il sistema di controllo per questa piccola vettura laboratorio supera le
600 regole, strutturate in sei blocchi che possono essere implementati e
ottimizzati in modo indipendente l'uno dall'altro. Un primo sistema
rudimentale di guida, invece, richiede solo 200 regole.
Nel caso semplicizzato delle 200 regole, il sistema garantisce la guida
del veicolo solo a bassa velocitÓ e in assenza di situazioni
d'emergenza. Nel caso completo pu˛ gestire slittamento ed imbardata
della vettura in caso di frenata e sterzata, realizzando in pratica un
sistema ABS+ESP in grado di controllare contemporaneamente freni,
sterzo, trazione: concettualmente Ŕ superiore a quello installato sulle
automobili vere che, di solito, non prevede il controllo automatico
dello sterzo. Il metodo qui impiegato ricorre a tecniche avanzate di FL,
come l'inferenza FAM e l'operatore aggregazionale Gamma (che per
semplicitÓ abbiamo indicato nello schema ma non descritto).
Calibrare questo sistema richiede qualche giorno di prova e una buona
varietÓ di condizioni operative.
 

Articoli su motori & auto