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