View Full Version : domanda sensori inerziali (leggi accelerometri)
YordanRhapsody
16-03-2006, 15:42
salve a tutti, mi rendo conto che la domanda non è tanto semplice, ma ci provo lo stesso...
dunque, devo sviluppare un software per un sistema inerziale, che deve entrare in funzione nel momento in cui il segnale del gps non riesce a dare informazioni!
il sistema inerziale è composto di accelerometri e girscopio, combinando i dati ricevuti da tali sensori e dall'ultima posizione gps, riesco a tirar fuori una stima dei valori della longitudine e della latitudine!
per ora però ho solo 2 accelerometri, uno lungo la direzione della macchina e uno perpendicolare...
mi domando, è possibile ricavare l'angolo di sterzata ad ogni istante di campionamento solo con il contributo di questi due accelerometri?
pensavo di si, ma quando ho provato il tutto in matlab, mi son reso conto che non era così semplice...
mi sono calcolato l'accelerazione come vettore risultante delle due componenti, poi ho calcolato l'angolo di sterzata come l'angolo compreso tra il vettore risultante e la direzione della macchina! con questi valori ho calcolato le stime e m'è venuto fuori che la macchina ha fatto solo una serie infinita di testacoda...
qualcuno sa dirmi se sbaglio qualcosa?
Se parli di un'auto, quello che ti interessa non e' l'accelerazione lungo l'asse longitudinale, ma la velocita' istantanea, che e' l'integrale dell'accelerazione che misuri.
Quando hai la velocita' istantanea longitudinale (periferica) e l'accelerazione laterale (centrifuga) puoi calcolare l'angolo di sterzata, o meglio il raggio di curvatura, posto ti serva a qualcosa e posto che l'auto non slitti (l'accelerazione laterale va a zero).
Se quello che cerchi e' la posizione, quello che ti interessa e' fare due volte l'integrale dell'uscita dei due accelerometri. Al primo colpo ottieni le velocita', al secondo gli spostamenti e solo a quel punto componi i vettori.
Se parli di un'auto, che fai del girometro?
YordanRhapsody
16-03-2006, 17:05
ciao, ho cercato di contattarti via msn...
allora il problema è questo
io ho due accelerometri montati su di una macchina, uno nella direzione della macchina e l'altro perpendicolare, solo che non riesco a far quello che mi stai dicendo tu...
sto lavorando con matlab per ora, per poi scriverlo in c e metterlo in un dispositivo per la navigazione inerziale!
YordanRhapsody
16-03-2006, 17:14
la mia esigenza è quella di far cooperare questo sistema inerziale con un gps, in modo tale che quando il gps perde il segnale, entra in gioco l'ins...
io procedo in questa maniera, prendo i dati del gps dell'ultima misurazione (longitudine, latitudine, velocità e angolo rispetto al nord), prendo i dati che mi da il sistema inerziale, (per ora sono accelerazione x e accelerazione y, una che va nella direzione dlla macchina e l'altra in maniera perpendicolare),
calcolo il vettore accelerazione risultante facendo la radice della somma dei quadrati delle componenti lungo x e lungo y
calcolo l'angolo che c'è tra il vettore risultante e la direzione della macchina facendo l'arcotangente della componente y sulla componente x
calcolo la nuova velocità sommando alla vecchia velocità il vettore accelerazione risultante moltiplicato per il periodo di campionamento (nel mio caso 1/10s)
calcolo la nuova direzione rispetto al nord sommando la variazione del nuovo angolo alla vecchia direzione rispetto al nord
trovo le variazioni di latitudine e longitudine moltiplicando lo spazio percorso (nuova velocità per periodo di campionamento) per il coseno e il seno dell'angolo rispetto al nord
sommo queste due variazioni ed in teoria ho le nuove coordinate di longitudine e latitudine
dove sbaglio?
YordanRhapsody
16-03-2006, 17:16
se puoi ci sentiamo domattina, dalle 9 in poi sono collegato sia qui su hwupgrade che su msn
la mia esigenza è quella di far cooperare questo sistema inerziale con un gps, in modo tale che quando il gps perde il segnale, entra in gioco l'ins...
io procedo in questa maniera, prendo i dati del gps dell'ultima misurazione (longitudine, latitudine, velocità e angolo rispetto al nord), prendo i dati che mi da il sistema inerziale, (per ora sono accelerazione x e accelerazione y, una che va nella direzione dlla macchina e l'altra in maniera perpendicolare),
calcolo il vettore accelerazione risultante facendo la radice della somma dei quadrati delle componenti lungo x e lungo y
calcolo l'angolo che c'è tra il vettore risultante e la direzione della macchina facendo l'arcotangente della componente y sulla componente x
calcolo la nuova velocità sommando alla vecchia velocità il vettore accelerazione risultante moltiplicato per il periodo di campionamento (nel mio caso 1/10s)
calcolo la nuova direzione rispetto al nord sommando la variazione del nuovo angolo alla vecchia direzione rispetto al nord
trovo le variazioni di latitudine e longitudine moltiplicando lo spazio percorso (nuova velocità per periodo di campionamento) per il coseno e il seno dell'angolo rispetto al nord
sommo queste due variazioni ed in teoria ho le nuove coordinate di longitudine e latitudine
dove sbaglio?
Sbagli fin dall'inizio, perche' sommi i vettori accelerazione.
Pensa di percorrere una curva a raggio costante e a velocita' costante. La velocita' tangenziale, quindi quella misurata dall'accelerometro longitudinale, e' costante, quindi non c'e' accelerazione e l'uscita dell'accelerometro e' zero.
Al contrario, l'accelerometro laterale misura un'accelerazione costante (centripeta o centrifuga, fa lo stesso, cambia solo un segno).
Se tu componi le due accelerazioni ottieni un vettore di modulo costante con direzione laterale, e basta. Fai poi tutti i tuoi calcoli e il risultato e' che ti sei spostato di lato senza rotazioni sull'asse verticale.
Per quello ti dico che devi fare prima gli integrali.
L'integrale dell'accelerazione, se l'accelerazione e' zero, non e' zero, ma un valore costante. Velocita' costante, appunto. L'integrale di una velocita' costante e' uno spazio che si incrementa.
Devi riuscire a arrivare ai due vettori spazio e comporre quelli.
YordanRhapsody
17-03-2006, 09:03
si, ma io sto lavorando in tempo discreto, dove devo fare tutto sto lavoro ad ogni istante di campionamento!!!
aiutatemi per favore...
si, ma io sto lavorando in tempo discreto, dove devo fare tutto sto lavoro ad ogni istante di campionamento!!!
aiutatemi per favore...Tempo discreto o non tempo discreto, con i vettori accelerazione non fai nulla. Devi integrare.
E' quello che fanno gli inerziali.
Non si tratta di inventare nessun concetto nuovo, ma di applicare quelli esistenti.
Fai qualche ricerca per navigatori inerziali o INS.
YordanRhapsody
17-03-2006, 14:22
mi sa che allora non sono in grado di fare adeguatamente questo lavoro, ho cercato un pò ovunque su internet...
sto cercando di capire come fare quello che mi dici, ma non è così semplice...
io ho ad esempio 65000 campioni relativi ad un circuito, questi campioni sono dei due accelerometri uno longitudinale alla macchine e l'altro trasversale!
come unità di misura i valori hanno [g]
il problema mi viene quando devo trovare l'angolo...
in teoria se faccio arcotangente della componente trasversale/componente longitudinale non dovrei ottenere l'angolo di variazione della direzione?
YordanRhapsody
17-03-2006, 14:26
e comunque, scusami sul serio, ma non so come fare l'integrale dell'accelerazione, ad esempio l'accelerazione di 0.24 g verso x (longitudinale), 0.06 g verso y, la velocità allo step precedente era ad esempio 1 km/h, o se preferisci 1 m/s!
come faresti tu a trovare la nuova posizione ipotizzando che la posizione iniziale fosse (0,0)?
L'integrazione la fai, per forza, tra due campioni successivi, applicando le formule della cinematica, oppure elettronicamente in analogico o digitale.
Supponiamo di applicare le formule e assumiamo anche che i campioni siano sufficientemente vicini nel tempo da poter trascurare il fatto che effettivamente l'auto si muova lungo una curva (quella complicazione aggiungila poi tu, se vuoi).
Intanto converti i g in m/s^2. Basta moltiplicare per 9.8.
Poi scegli se fare due passaggi (v=v0+at) o trovare direttamente lo spostamento s=v0t + 1/2 at^2.
Lo fai per le due direzioni (in laterale assumi al primo giro v0 = 0) e componi i vettori spazio.
Se preferisci la strada meno approssimata, ma piu' complicata, assumi che in presenza di accelerazione laterale il moto sia circolare (lo approssimi a circolare tra due campioni sufficientemente vicini nel tempo). L'accelerazione longitudinale e' l'accelerazione tangenziale, v0 e' la velocita' tangenziale iniziale, l'accelerazione laterale e' l'accelerazione centripeta. Ti manca il raggio, ma l'accelerazione centripeta nell'istante iniziale e' v0^2/r, per cui lo ricavi a ogni iterazione per quel tratto.
Personalmente, considerato l'utilizzo e se i campioni sono vicini (che so, 0.1 secondi) trascurerei la curvatura e comporrei due moti rettilinei (gli spostamenti, non le accelerazioni). L'errore concettuale tanto lo fai gia' utilizzando queste formule invece del calcolo differenziale. Ma i risultati sono sufficientemente vicini alla realta', inutile andare a farsi male.
Per l'angolo trovi l'angolo del segmento che congiunge il punto iniziale e quello finale di ogni tratto.
Per utilizzare i valori del tuo esempio assumo che il tempo tra due campioni sia 0.1 secondi (il dato non c'e').
Assumo che la velocita' iniziale sia 1 km/h = 3.6 m/s.
L'accelerazione longitudinale e' 0.24 g = 2.35 m/s^2 Assumo che positivo voglia dire verso destra, il dato manca.
L'accelerazione laterale e' 0.06 g = 0.59 m/s^2.
In senso longitudinale:
s = 3.6 x 0.1 + 1/2 x 2.35 x 0.01 = 0.37 m
In senso laterale:
s = 1/2 x 0.59 x 0.01 = 0.03 m
Queste sono le coordinate dopo 0.1 s.
L'angolo e' l'arcotangente del rapporto tra delta longitudinale e delta laterale.
In questo caso e' 85 gradi.
Se devi riportarlo a angoli sulla bussola devi invertirlo di segno e aggiungere 90 gradi (nord = zero gradi e cresce in senso orario), quindi 5 gradi.
YordanRhapsody
17-03-2006, 15:20
le formule sono le stesse che ho adoperato io...
anche se sbagliavo il calcolo della distanza percorsa, il problema pare essere l'angolo!
ogni volta che faccio una nuova misurazione, eseguo i calcoli necessari, mi calcolo l'angolo di variazione facendo l'arcotangente e sommo questa variazione all'angolo rispetto al nord (o comunque rispetto ad un riferimento) in modo da avere lo spostamento in un riferimento rispetto al nord (devo ragionare in longitudine e latitudine)
ma le variazioni di angoli sono troppo elevate (a proposito il periodo di campionamento era proprio 0.1s), ad esempio dopo 500 campioni ho fatto un giro di 500 radianti, eppure i valori misurati dagli accelerometri sono corretti...
mah, ti ringrazio non voglio tediarti oltre, cerco di risolvere il problema...
grazie mille davvero per la tua disponibilità
Scusa, ma sbagli l'angolo come conseguenza dell'errore sulla distanza percorsa.
Inoltre l'angolo che calcoli tra due punti non e' una variazione, ma una direzione assoluta (ok, relativa a un riferimento, ma assoluta nel senso che non la sommi a quelle precedenti).
YordanRhapsody
17-03-2006, 15:57
tanto ci devo riuscire...
il fatto è che non tieni conto, nel tuo ragionamento, del movimento degli assi x e y...
questi seguono l'andamento della macchina ed ogni volta si devono pesare i contributi rispetto al nord...
ma è sempre un problema...
il fatto è che non tieni conto, nel tuo ragionamento, del movimento degli assi x e y...
questi seguono l'andamento della macchina ed ogni volta si devono pesare i contributi rispetto al nord...Hai ragione ed e' un mio errore.
Devi tenere conto ogni volta della direzione iniziale, azzerare tutto, fare i conti come se stessi andando verso nord e sommare poi nel modo giusto.
Nell'esempio sarebbero 5 gradi piu' la direzione iniziale.
YordanRhapsody
17-03-2006, 16:16
è quello che faccio, il problema è sempre la variazione ad ogni misurazione che p troppo elevata e piano piano mi fa variazioni troppo elevate...
ti ringrazio per l'aiuto.
mi ci rimetto domani a mente fresca o semmai stasera!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.