Paolo Pinto

Ingegnere Aeronautico e Programmatore

 

 

 

Un modello fisico per le simulazioni di autoveicolo

 

Si discuterà in questa sede di un  modello fisico con possibili applicazioni tanto nel campo della simulazione ingegneristica che nei videogames.

Con particolare riferimento all’ utilizzo ludico  si effettuerà il calcolo dell’ occupazione di memoria nel caso di applicazioni in  tempo reale, dimostrando che  per renderla compatibile  con le macchine attuali (Dicembre 2002) occorre giungere a dei pesanti compromessi sul realismo della simulazione.

Essendo impossibile approfondire in questa sede i dettagli del calcolo, cosa per cui occorrerebbe un libro, questa trattazione  si  rivolge a lettori già esperti del settore.

 

Ipotesi

 

Si partirà dal classico modello monotraccia ; ovvero le reazioni dei pneumatici vengono considerate applicate al centro dell’ asse di appartenenza, pur tenendo conto dei trasferimenti di carico.

 

Vengono trascurati i momenti autoallineanti

 

L’ effetto del camber può essere calcolato una volta per tutte ove lo si consideri fisso, e in tal caso viene inserito nei diagrammi di aderenza dei pneumatici.

Ove si cerchi una maggior sofisticazione, occorre tenere presente che il movimento delle sospensioni  porta a una variazione dell’ angolo di camber. Tale movimento dipende dal rollio della vettura, che a sua volta è funzione dell’ accelerazione laterale. E’ pertanto possibile includere nelle caratteristiche anche questo effetto, con opportuni calcoli.

 

Si trascurano caster, conicità, stagger e ply steer.

 

Si partirà inizialmente dalle ipotesi di pista 2D, per poi estendere la trattazione al caso 3D.

 

I dati inizialmente occorrenti sono :

 

CARATTERISTICHE FISICHE DELLA VETTURA

W : peso della vettura

a : distanza orizzontale tra asse anteriore e baricentro

b : distanza orizzontale tra asse posteriore e baricentro

h : altezza del baricentro

Ta : carreggiata anteriore

Tp : carreggiata posteriore

KA : Rigidezza al rollio della sala anteriore

KP : rigidezza al rollio della sala posteriore

KS : rigidezza torsionale della scocca

Da(u): deportanza anteriore (in funzione della velocità)

Dp(u) : deportanza posteriore (in funzione della velocità)

mA(a,FZ) :  Coefficiente di aderenza della sala anteriore (in funzione di slip angle e carico verticale)

mP(a,FZ) : Coefficiente di aderenza della sala posteriore (in funzione di slip angle e carico verticale)

 

 

Molti di questi dati non compariranno esplicitamente nella trattazione ; essi intervengono però nei calcoli di dettaglio (come quello del trasferimento di carico) , che saranno solo citati di sfuggita, supponendoli noti al lettore

 

La vettura viene considerata come un corpo rigido : ne sono note pertanto le

 

COMPONENTI DEL MOTO

 

u : velocità della vettura lungo l’ asse longitudinale

v : velocità della vettura in direzione normale all’ asse longitudinale

w : velocità angolare della vettura

 

A queste si potrebbe aggiungere una componente “fittizia” :

 

dq/dt : velocità di rollio della vettura

 

Ciò significa che pur non simulando graficamente il movimento in rollio della vettura, si terrà aggiornato di volta in volta questo parametro, utile al calcolo dell’ effetto degli ammortizzatori.

 

Inoltre è noto di volta in volta, l’

 

INPUT DEL PILOTA

d : angolo di sterzo

T : coppia alle ruote (frenante o accelerante)

 

 

 

Una nota sulla deportanza

In via di prima approssimazione la deportanze anteriore e posteriore possono essere considerate delle funzioni quadratiche della velocità.

Occorre però tenere presente che questo non è rigorosamente vero.

Infatti buona parte della deportanza di una vettura da competizione deriva dall’ effetto suolo, che non è una funzione quadratica della velocità.

Esso dipende fortemente dalla distanza tra fondo scocca e piano stradale e dall’ inclinazione della vettura : due parametri dipendenti dalla rigidezza delle molle (non delle barre antirollio) .

Quindi intensità  e punto di applicazione del vettore deportanza generata dall’ effetto suolo variano con la velocità in modo non elementare, seppur calcolabile.

Si tenga presente che la deportanza genera un’ inclinazione, che a sua volta modifica la deportanza, che a sua volta modifica l’ inclinazione e così via. Un piccolo programma di calcolo può risolvere il problema.

L’ inclinazione della vettura ha anche un effetto sull’ angolo di attacco a cui lavorano gli alettoni, anche se la variazione è meno sensibile.

Tra l’ altro non va trascurato il downwash dell’ ala anteriore su quella posteriore; sebbene tale effetto non sia rigorosamente quadratico, è ampiamente accettabile considerarlo tale in prima ( e seconda…) approssimazione.

 

 

Il moto del veicolo (senza trasferimenti di carico)

Si esaminerà, per dare un’ idea generale dei meccanismi connessi , il moto di una vettura che sia miracolosamente esente da trasferimenti di carico. Successivamente riprenderemo in esame questo fattore.

Si supponga  una vettura a trazione posteriore che sia dotata inizialmente di sola velocità longitudinale u , mentre v ed w sono nulle

L’ angolo di sterzo d sarà nullo, mentre il tiro T potrà essere qualunque ; per comodità lo supporremo ad un valore capace di imprimere una lieve accelerazione, agendo ovviamente sulle ruote posteriori.

 

La vettura procede quindi inizialmente dritta.

Il pilota decide di curvare a destra ; pertanto imprime una rotazione d alle ruote anteriori.

Ciò causa l’ insorgere di uno slip angle sul treno anteriore, che potremo porre inizialmente pari a d, benché nella realtà alcuni effetti che per ora trascuriamo lo rendano lievemente minore.

Lo slip angle genera una forza applicata all’ asse anteriore, dipendente dal carico verticale applicato, che è somma di carico aerodinamico (dipendente da u)  e statico.

 Ciò ha tre effetti :

 

1)     Una accelerazione verso destra del baricentro della vettura, con conseguente nascita di una componente v

    Tale accelerazione è data dalla forza generata dai pneumatici divisa per la    massa della vettura

2)     Una accelerazione angolare in senso orario intorno al baricentro, con conseguente nascita di una componente w .

Tale accelerazione angolare è data dalla coppia generata dalle ruote sterzanti divisa per il momento di inerzia polare della vettura

    3) Una diminuzione di u, dovuta alla resistenza indotta dei pneumatici anteriori

 

Nel frattempo il tiro applicato alle ruote posteriori ha causato un aumento di u.

 

All’ istante successivo preso in esame (il frame successivo) la vettura si presenterà quindi ruotata (effetto di w) e traslata (effetto di u e v). Avendo essa subito una rotazione, le u e v andranno aggiornate tenendo presente il nuovo angolo , mentre w resta ovviamente la  medesima.

 

A questo punto si avranno due nuovi slip angles all’ anteriore ed al posteriore .

Lo slip angle posteriore dipenderà  da u, v ,w , T oltre che dalle caratteristiche fisiche della vettura

Lo slip angle anteriore dipenderà  da u, v, w , d .

 

Questa volta si generano pertanto DUE forze, una applicata all’ asse anteriore ed una applicata all’ asse posteriore ; è chiaramente possibile scomporle in una coppia , una forza trasversale applicata al baricentro ed una forza longitudinale applicata al baricentro.

 

Quindi nuova u, nuova v, nuova w , con cui modificare la posizione della vettura e con cui entrare (dopo avere ricalcolato u e v in funzione della nuova angolazione della vettura) nella frame successiva.

 

L’ effetto dei trasferimenti di carico

In quanto detto finora si sono , come detto, trascurati i trasferimenti di carico.

Ciò ha consentito di avere una prima idea delle cose ; tuttavia in una simulazione i trasferimenti di carico non sono trascurabili.

In effetti, quando alla vettura vengono impartite delle accelerazioni trasversali (centripete), si verifica un trasferimento di carico laterale.

In presenza di accelerazioni longitudinali si ha un trasferimento di carico longitudinale.

Ciò fa sì che i 4 pneumatici siano caricati, in linea di principio, da 4 carichi verticali Fzi diversi tra loro.

I carichi verticali modificano l’ aderenza dei pneumatici in un modo che può essere calcolato tramite le curve di Pacejka.

E qui  sorge il problema : come calcolare le accelerazioni della vettura, se esse sono influenzate dalle aderenze, che a loro volta sono influenzate dalle accelerazioni stesse?

 

E’ chiaro che occorre fare ricorso ad una iterazione numerica che parta dall’ ipotesi di assenza di trasferimenti di carico, o da altra ipotesi ragionevole sulla loro entità.

 

Simulazioni ingegneristiche e tempi biblici

Se questo modello fisico dovesse venire applicato ad una simulazione ingegneristica, utile al calcolo del comportamento di un veicolo reale, i calcoli iterativi possono essere eseguiti man mano.

La loro pesantezza farà sì che i tempi di elaborazione siano piuttosto lunghi, ma anche giornate di tempo macchina sono in questo caso accettabili.

In compenso non si avrà alcuna perdita sul piano della qualità.

 

I videogiochi : questione di RAM

E se si decidesse di applicare questo modo di procedere ad un videogame ?

E’ ovvio che , ove si desideri una risposta in tempo reale, non è nemmeno pensabile di eseguire simili iterazioni numeriche mentre  il programma principale gira.

Questi calcoli vanno effettuati prima.

 

Conosciute le caratteristiche della vettura, occorrerà pertanto valutare ALL’ AVVIO DEL PROGRAMMA, tutte le componenti u, v, w che si hanno in corrispondenza di ogni possibile combinazione di :

u, v, w, d, T

per poi andarle semplicemente a leggere in una matrice multidimensionale, senza effettuare ogni volta i calcoli.

La matrice deve essere memorizzata in RAM, perché i tempi di accesso dal disco rigido non sarebbero accettabili.

 

Quante  sono queste combinazioni ?

Ciò dipende dalla “definizione” richiesta ; ovvero quanti possibili valori si decida di attribuire ad ogni parametro

Può inizialmente apparire ragionevole ipotizzare che ciascun parametro possa assumere  256 diversi valori, memorizzabili in un byte.

 

Che significa ciò in termini di definizione ?

Ove si prenda in esame la velocità longitudinale  u, essa, per una vettura da corsa , può considerarsi compresa tra 0 e 400 Km/h (velocità effettivamente toccata a Le Mans dai Prototipi e a Fontana dalle vetture CART) .

Poiché si desidera però un modello fisico capace anche di simulare un testacoda in piena velocità, il vero range dovrebbe essere compreso tra –400 e +400.

Non ha chiaramente senso avere la stessa definizione per le velocità negative e quelle positive ; si può pertanto assegnare  alle velocità negative una definizione minore che per semplicità si pone ora  pari ad ¼ di quelle positive.

 

E’ ovvio che sono possibili ripartizioni più sofisticate, con un aumento della definizione per le basse (in valore assoluto) velocità negative ed una diminuzione per quelle alte, visto che una  vettura in testacoda a 400 Km/h è comunque totalmente incontrollabile e rallenta davvero in fretta.

 

Comunque, con la convenzione ora descritta, si disporrà di 64 valori per simulare le velocità tra -400 e 0 Km/h e 192 valori  per le velocità tra 0 e 400 Km/h

 

Per le velocità negative si avranno quindi incrementi di

 

-400/64 = -6.25 Km/h

 

mentre per le velocità positive gli incrementi saranno di :

 

400/192 = 2.08 Km/h

 

Si tratta di valori senz’ altro accettabili… ma c’ è un problema

L’ utilizzo di 5 parametri in input, ciascuno con 256 valori,  significa la creazione di una matrice con 2565 elementi.

Inoltre ogni elemento rappresenta  una possibile combinazione u, v, w, ed è pertanto composto da 3 bytes

L’ occupazione di memoria richiesta è spaventosa  :

 

3*256^5 = 3.298 E12 bytes = 3145728 Mb !!!

 

Una occupazione di memoria accettabile

Si è visto come 256 valori per parametro siano troppi.

L’ unica soluzione è diminuire la definizione.

Quantità accettabili  per la RAM possono essere  :

u : 21 valori (contenibili in 1 byte)

v : 15 valori (contenibili in ½ byte)

w : 15 valori (contenibili in ½ byte)

d : 15 valori

T : 15 valori

 

Adesso ogni elemento della matrice contiene 2 bytes ( cioè 1 byte per u e 2 mezzi bytes ciascuno per v ed w, che forniscono l’ output desiderato) ; La matrice risultante avrà dimensioni :

 

21*15*15*15*15*2 = 2126250 bytes = 2.02775 Mb

 

Finalmente una quantità ragionevole, che può comunque essere diminuita, a scapito della definizione, o viceversa.

 

Definire con l’ accetta

Utilizzando questi valori sorge però un problema drammatico sulla definizione ; ad esempio, si prenda in esame la velocità longitudinale u .

Supponendo, secondo il ragionamento prima svolto,  che 16 dei 21 valori possibili  siano assegnati alle velocità positive, si dispone di soli 16 valori per rappresentare velocità comprese tra 0 e 400 Km/h.

Ciò vuol dire che le caratteristiche sono calcolate solo ogni 25 Km/h.

Se ci si fermasse qui, il modello fisico risultante sarebbe completamente privo di fluidità.

 

Interpolando multidimensionalmente

La soluzione sta nell’ interpolare tra i (relativamente) pochi valori disponibili.

 

Essendo i valori in input  ben 5 ( ovvero u,v,w,d,T) occorrerà interpolare su tutti questi.

 

Si riprenda in esame la velocità longitudinale u.

La matrice contiene triplette u,v,w solo in corrispondenza di u (positive) pari a

0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250 Km/h e così via fino a 400 Km/h, con incrementi di 25 Km/h da un’ elemento all’ altro.

Per semplicità, si supponga inizialmente che i parametri v,w,d, T che  il veicolo ha in un  dato istante siano precisamente corrispondenti a valori presenti nella matrice, non presentando quindi alcuna necessità di approssimazione.

Solo per la  u si presenta un problema, essendo essa di 105 Km/h, valore non presente in matrice

Si esamineranno gli elementi della matrice corrispondenti ad u = 100 (che conterrà u100, v100, w100) ed u = 125 (che conterrà u125, v125, w125)

Si può pertanto effettuare una media ponderata dei valori di u,v,w forniti dai due elementi viciniori, dando ovviamente maggiore peso a quello più vicino :

 

u = 4/5 u100 + 1/5 u125

v = 4/5 v100 + 1/5 v125

w = 4/5 w 100 + 1/5 w 125

 

Naturalmente, in linea generale, i restanti parametri v,w,d, T non saranno affatto corrispondenti a valori presenti in matrice.

Pertanto la u andrà calcolata riferendosi ai valori di v,w,d, T che meno si discostano da quelli effettivi.

 

Tuttavia sarà possibile ripetere questo ragionamento anche per gli altri parametri .

 

Il risultato sarà costituito da 5 triplette u,v,w , ciascuna interpolata su un solo parametro

Basterà fare la media di questi risultati per ottenere la tripletta u,v,w da usare nello step successivo

 

Grazie a questo tipo di interpolazione, si otterrà una continua variabilità delle caratteristiche della vettura, pur in presenza di pochi dati.

 

Gli ammortizzatori

Con i parametri fisici finora considerati non si può  simulare la rigidezza degli ammortizzatori  : essi sono sensibili alla velocità di rollio (anche a quella di beccheggio, ma c’e’ un limite a quello che un povero programma di simulazione può fare…)

 

Infatti la rigidezza di rollio può considerarsi dovuta a 3 fattori :

 

1)     Km = rigidità delle molle

2)     Kb = rigidità della barra antirollio

3)     Ka = rigidità degli ammortizzatori.

 

Occorre tenere presente che Km e Kb dipendono dal rollio, e sono le sole rigidità che intervengono col veicolo a regime.

Al contrario Ka dipende dalla velocità di rollio ; ha quindi influenza nei transienti, come l’ entrata e l’ uscita di curva , ma non ha effetto a regime.

 

Volerne tenere conto in una simulazione implica quindi l’ aggiornamento di una variabile dq/dt , velocità di rollio

 

Esso è influenzato dall’ altezza del baricentro e dall’ entità delle accelerazioni centripete, oltre che dalla rigidezza delle molle e dalla taratura degli ammortizzatori.

Ci si ritrova qui di fronte ad un problema già visto : gli ammortizzatori offrono una resistenza al rollio che dipende dalla velocità di rollio ; ma la velocità di rollio dipende dalla resistenza offerta dagli ammortizzatori …. Niente lacrime, prego : siamo tecnici.

E ricorreremo ancora ad un programma numerico. Decisamente, questi calcoli vanno effettuati all’ inizio.

 

Certo, usare anche questo parametro implica l’ aumentare ancora la grandezza delle matrici. Non esistono pasti gratis.

 

Tre dimensioni

Ormai tutti i simulatori di guida sono su 3 dimensioni. Questo implica che la vettura debba muoversi lungo un tracciato che presenta dislivelli.

I dislivelli influiscono in più modi sul moto.

Chiaramente la macchina tenderà ad accelerare in discesa e rallentare in salita, ma vi sono anche effetti più sottili.

Infatti, se prendiamo ad esempio una salita, la forza peso non agirà più normalmente rispetto alla vettura, ma secondo un vettore inclinato.

Come si vede in figura, tale vettore intercetterà il suolo in un punto posto posteriormente rispetto al baricentro.

Ciò significa che il treno posteriore sarà maggiormente caricato : la macchina tenderà a sottosterzare rispetto al piano. Analogamente, in discesa si avrà sovrasterzo.

Inoltre non è detto che il dislivello sia semplicemente una salita o una discesa ; esso può essere laterale, come in una curva sopraelevata stile Indianapolis, e in tal caso influirà sulla tenuta laterale.

Ciò crea la necessità di comunicare di volta in volta alla vettura l’ inclinazione del piano stradale.

C’ è di più : possono infatti crearsi notevoli effetti inerziali, come avviene in presenza di dossi, dove una vettura può addirittura decollare, come succedeva sul vecchio Nurburgring

Questo implica che del tracciato dovranno essere memorizzate anche le coordinate di elevazione z, oltre che x ed y.

Occorre che il programma controlli, ad ogni step almeno 3 punti , ad esempio la mezzeria delle ruote anteriori e un punto per ogni ruota posteriore.

Ciò permette di individuare ad ogni istante le inclinazioni laterale ILT e longitudinale ILG della vettura, ed eseguire i calcoli opportuni.

Nelle equazioni del moto dovrà entrare anche una nuova coordinata di velocità verticale w; questa sarà utilizzata per gli effetti inerziali di salto.

Sarebbe opportuno inserire addirittura una velocità angolare di beccheggio.

Un impiego collaterale di  queste nuove componenti può essere il loro sfruttamento per la visualizzazione di incidenti particolarmente spettacolari, come quelli che avvengono in caso di aggancio tra le ruote di due vetture.

Tuttavia nel caso di un videogame, è improbabile che il giocatore si accorga di una simile sottigliezza, e può essere possibile ricorrere a sequenze preregistrate per i “voli”.

 

 

Farewell Definition

Come si è visto, nel caso 3D entrano in gioco i nuovi parametri velocità verticale w, inclinazione longitudinale ILG, inclinazione trasversale ILT .

Inoltre un buon simulatore 3D dovrebbe simulare anche gli ammortizzatori ; introducendo un quarto parametro velocità di rollio dq/dt

L’ aggiunta di qusti parametri fa sì che le definizioni viste nel caso 2D siano purtroppo eccessive per un simulatore 3D

 

3D vs RAM

Quale sarebbe l’ occupazione di memoria per il caso 3D (con ammortizzatori) ?

I parametri in input sono u,v,w,w, dq/dt, d, T, ILT, ILG

I parametri in output sono : u,v,w,w, dq/dt

Non c’è infatti bisogno di avere ILG, ILT in output, perchè essi saranno forniti allo step successivo dalla lettura dei punti di controllo della pista (salvo l’ eccezionale situazione di un salto, che può essere gestita da una diversa routine dato che in quel caso, mancando il contatto con il suolo, l’ effetto dei pneumatici è nullo ed i calcoli sono semplificati).

Immaginando di avere :

 

11 valori per u      (contenibili in ½ byte)

9 valori per v        (contenibili in ½ byte)

7 valori per  w       (contenibili in ½ byte)

3 valori per w        (contenibili in ¼ byte)

3 valori per dq/dt   (contenibili in ¼ byte)

5 valori per d

5 valori per  T

2 valori per ILT

2 valori per ILG 

 

abbiamo che la matrice avrà 623700 elementi ed ogni elemento della matrice conterrà 2 bytes ;

Dimensione totale : 1.784 Mb

 

Solo l’ esperienza, ovviamente , potrà dire quali sono i parametri cui assegnare più o meno valori.

 

Le  collisioni con lo scenario

Come entrano le collisioni con muri e altre vetture nel modello fisico ?

In realtà la collisione non fa che fornire delle nuove componenti di velocità u, v ,w , w  alla vettura; una volta calcolatele con le equazioni della fisica elementare (bilancio della quantità di moto e dell’ energia cinetica) , esse diventano l’ input allo step successivo, senza che il discorso nella sostanza cambi