disegnare traiettoria con accelerometro

Salve a tutti sono nuovo nel forum ma lo seguo da un po’ di tempo.
Poiche sono un appassionato di motori ho montato un accelerometro collegato all’ arduino in un go kart. Io riesco a leggere l’accelerazione laterale e longitudinale grazie ad un LDC montato sul volante. Vorrei sapere dai più esperti in materia come riuscire ad interpretare i dati forniti dall’ accelerometro per poter disegnare la traiettoria seguita da kart.
Vi ringrazio in anticipo
un cordiale saluto a tutti… :stuck_out_tongue:

Ciao! Per disegnare una traiettoria hai bisogno di sapere anche di quanto ha curvato il mezzo. Ti serve anche almeno un giroscopio.

ciao grazie per la risposta. Ma per sapere quanto ha curvato non basta solo avere il valore dell' accelerazione laterale in relazione a quella longitudinale istante per istante???

E le “derapate” e gli slittamenti sulle 4 ruote dove li mettete?
Per far vedere le traiettorie in F1 usano dei GPS, e hanno una traiettoria piuttosto fedele da mostrare in TV… Ma se i dati gli servono per capire come migliorarsi in gara, altro che un accelerometro e un giroscopio… ne servono almeno due coppie (uno davanti ed uno di dietro) per verificare tutti i movimenti imprevedibili… E poi con quale frequenza si vuole loggare il tracciato??
Insomma, un lavoretto per il quale forse solo un Arduino con LCD non basta :stuck_out_tongue:

si in effetti mi sembra un lavorone :D volendo potresti scrivere tutti i dati in una SD ma dovrai creare un bel software per interpretarli. Se pensi che ne valga la pena io farei come ha detto kokiua, pero' metterei 3 accelerometri in modo da individuare le componenti di 3 punti in un piano, di giroscopi secondo me te ne basta uno. in tempo reale "potresti" vedere la tua traiettoria sul display, pero` il codice arduino a quel punto diventa abbastanza tosto e forse 16MIPS sono poche... boh potresti provare con un dsPIC a 40MHz o un ARM a 72MHz...

Ciao. Vuoi scrivere un programma per la navigazione inerziale? I nuovi sistemi di riferimento inerziale presenti sui moderni jet di linea fanno quello che dici tu, si ricordano istante per istante le accelerazioni e rotazioni a cui sono sottoposti per tutto il viaggio e matematicamente si calcolano l’effettivo spostamento, la velocità e l’inclinazione in rapporto alla massa dell’aereo. Sembra interessante. A che punto sei con la matematica? Serve una conoscenza non comune di matematica e fisica per scrivere un software del genere.

Ci sono alcuni problemi:
-Max g degli acc
-Max degrees/second giro
-clock cpu utilizzata
-vibrazioni che deteriorano un sacco il dato
-conseguente filtro (dannatamente pesante vedi filtro di kalman)

@gbm: Ora però gli hai dato tutti gli input per rinunciare a qualsiasi velleità di migliorare il suo progettino... :-/ Non esiste nulla che gli si possa consigliare senza scomodare aerei e quant'alro? :P Vediamo un po, con i dati di un accelerometro quali informazioni si possono desumere??

te l'ho detto volendo con 3 accelerometri, stando nel loro range di funzionamento puoi desumere di quanto ti sei spostato nello spazio. Accoppiando questi dati con un giroscopio che senta le rotazioni sul piano parallelo alla pista puoi sapere piu' o meno di dov'eri e quanto inclinato con una certa precisione (data dall'MCU utilizzata). Chiaramente sapendo la velocità a cui si sta andando piuttosto precisamente grazie a un sensore encoder il calcolo diventa piu' semplice perchè ti permette di tenere l'output IMU un po' piu' sporco dalle vibrazioni (aumentando di per se la risoluzione e la velocità di acquisizione).

Allo stesso modo è possibile utilizzare i dati OUTPUT IMU per creare una sorta di ESP. Cioè se non si sta accelerando e le ruote girano troppo rispetto all'accelerazione acquisita taglio corrente alla candela.

Ma a questo punto perchè non lo fai elettrico il kart :D :D :D :D?

X Calamaro credo basti un solo giroscopio posto al centro del kart.

grazie per le risposte, vedo che è più complicato di quanto mi aspettassi..... Per ovviare al problema di montare 3 accelerometri e poi non saper interpretare i dati, avevo in mente di montare un modulo gps che registrasse istante per istante la posizione in una memory. Il problema pero sarebbe sempre quello di interpretare i dati. In questo modo otterrei un file che contiene per esempio tantissime letture in gradi primi e secondi. Il programma per interpretare i dati diciamo che lo avrei è un software open souces si chiama DANAS. Dal modulo gps le mie informazioni dovrebbero uscire in un formato NMEA e poi le dovrei convertire in .dat o .log. Spero di non aver detto fesserie. Please help me !!!! :'(

se il tuo obbiettivo è quello dell'elaborazione/visualizzazione "onboard" la vedo mooolto in salita. se invece puoi "decentralizzare" lo storage e l'elaborazione dei dati diventa solo una questione di budget... e comunque il realtime è da dimenticare...

Ciao, utilizzare solo gli accelerometri per definire traiettorie è praticamente impossibile per problemi di precisione dei sensori mems ... quello che ti posso consigliare è l'impiego di un gps ... se vuoi poi avere info di telemetrie sul tuo kart gli acc. assieme ad i giroscopi possono fare al caso tuo ... io ho realizzato una scheda competa di tutto quello che ti serve ... si chiama MultiBoard e nasce per applicazioni di volo automatico ... ultimamente abbiamo aperto anche una nostra network in ning che abbiamo chiamato www.virtualrobotix.com .. se passi di li puoi trovare molte info su come usiamo accelerometri ed amenità simili.

se integri una volta l'accelerazione ottieni la velocità, se integri i dati della velocità ottieni lo spostamento nei tre assi e quindi istante per istante conosci la tua posizione .

Nel tuo caso visto che il percorso viene ripetuto più volte , puoi ad ogni giro ridistribuire l'errore dx,dy,dz in modo che le coordinate del punto di partenza coincidano con quelle del punto di arrivo e gli eventuali errori vengano compensati ( post processing )

come elaborato finale potresti tracciare un grafico con le progressive dei tempi, l'accelerazione,la velocità, lo spostamento per ogni istante e per ogni asse e le coordinate xyz.

per maggiori dettagli contattami dolfrang@libero.it

ps attenzione devi conoscere le caratteristiche dell'accelerometro ed eseguire una serie di test per ottimizzare il programma.

Sono banali tecniche utilizzate nel campo della sismologia e/o dell'ing. sismica per monitorare le oscillazioni del terreno o dei fabbricati in caso si sisma o reale o indotto.

scusate spero di non essere troppo ot nel topic. con un accelerometro a 3assi e' possibile calcolare un angolo? Se io muovo l'accell di 90 gradi, e' possibile capire che la cosa e' stata fatta? F

si perchè guardi la variazione della gravità: gli accelerometri la misurano come se fosse una accelerazione normale ed è costante. la scomponi in vettori e sai come è orientato l'accelerometro se però questo è sottoposto solo a quell'accelerazione

scusami garinus La tua affermazione é correttta in parte. Se ruoti il accelerometro nella asse x e y é possibie perché c'é l'acelerazione terrestre che é sempre presente. Se lo giri nel sul asse z non legge niente. Per quello vengono gli acelerometri vengonousati insieme ai gyroscopi a 3 assi. Ciao Uwe

concordo con uwe!! Applicato a un sistema che ruota su due assi un accelerometro puo' darti un valore di rotazione piuttosto preciso. Uwe correggimi se sbaglio, non si fa l'arco tangente tra i due assi dell'acc?? Almeno io su i miei robot self-balncing con IMU utilizzo questo sistema, accoppiato alla lettura pulita dal kalman di un giro ad un asse.

non confondiamo accelerazione di un moto con accelerazione terrestre L'accelerazione terrestre non viene misurata da un accelerometro perchè è costante ( a meno che non stiamo precipitando nel vuoto asse z ) quello che l'accelerometro misura è l'accelerazione di un corpo nelle tre direzioni x,y,z . se sono in auto fermo ed accelero . l'accelerometro misura l'accelerazione lungo l'asse di direzione , quando poi raggiungo la velocità di crociera ( v= costante) l'accelerometro si azzererà quando freno avrò un'accelerazione contraria proporzionale alla frenata quando l'auto si ferma l'accelerazione è uguale a zero. Ciò accade in tutti e tre gli assi.

per quanto riguarda la rotazione di 90 gradi, l'accelerometro la può stimare solo se compiamo una curva di novanta gradi con un certo raggio, se la rotazione avviene sull0asse senza spostamenti lungo i tre assi, l'accelerazione =0

in tal caso occorre usare i/3 girroscopi. esiste in commercio un accelerometro a tre assi con tre girroscopi, in tal caso è possibile avere maggiori informazioni sul moto comprese le rotazioni sull'asse girroscopico.

secondoi me metti l'accelerometro lungo lasse X(accelerazione) e Y(rotazione), i valori letti al tempo T saranno l'ascissa e l'ordinata del vettore spostamento nel momento T. se vuoi l'angolo di curvatura al momento T basta fare atan2(y/x); se vuoi l'accelerazione al momento T sqrt(x^2+y^2). Meno tempo trascorre tra T e T+1 più precisa è la mappa (in un mondo ideale); in realtà ogni lettura ha un piccolo errore che si somma, quindi maggiore è il numero di tempi registrati e maggiore sarà l'imprecisione. Quindi troppe letture = troppo errore, poche letture = poca precisione(in curve e accelerazioni). Io comunque ti consiglio di fare il massimo numero di letture possibili, l'errore lo puoi abbattere inserendo nell'algoritmo giroscopi o GPS.

Dato che i valori su cui lavori sonbo finiti, sbattitene degli integrali e usa le sommatorie, mooolto più facili da implementare (la somma della lunghezza dei vettori è la velocità, la somma degli angoli è l'orintamento attuale) ;D Da quì si nota subito che se acceleri/curvi per 1sec., mentre il tuo algoritmo legge i dati ogni 2 sec., ci possono essere 2 comportamenti: l'algoritmo pensa di non aver girato/accelerato, oppure l'algoritmo pensa di aver girato/accelerato per 2 secondi.

Attenzione se avessimo un'accelerometro lungo l'asse Z (che guarda in basso) esso leggerebbe sempre l'accelerazione di gravità = 1G e non 0.