home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Robotica
Finalmente un posto dove poter discutere di robotica, scambiarsi idee, progetti ed opinioni. Partecipa anche tu...


rilevare la posizione di un robot
     
Autore Messaggio opzioni
Renzo91





postato il:
02.06.2012, alle ore 15:24
Sei un grande, adesso ho capito cosa intendevi!
(che ficata complimenti, l'ho guardato fisso per 5 minuti :-D)

Ma questo problema è risolvibile facilmente: è sufficiente che una volta contati 180 impulsi (dal trasmettitore e dal ricevitore, con 180 = tempo minimo per il quale nel mio esempio risulta sempre sincronizzato), si fermi l'emissione del segnale per un ritardo opportuno (comunque inferiore a 0,01 secondi!), dopodichè si manderà un solo impulso che rappresenterà insieme al calcolo del tempo corretto la distanza effettiva o il raggio della circonferenza! E vaiiiiiiiiiii!
Comunque penserò a una soluzione alternativa perchè questa è valida per spazi piccoli o per velocità di trasmissione elevate...

Non capivo la tua questione perchè il problema più che la sincronizzazione riguardava il calcolo corretto del tempo a causa del problema di "fase" che intendevi: ebbene, di questo aspetto non ne avevo parlato perchè come problema fondamentale mi ero interessato alla sincronizzazione, infatti nella mia soluzione mi sono fermato a "ok, 11 impulsi contatti dunque sincronizzato".
Adesso mi è chiaro tutto e ti ringrazio, non bisogna sottovalutare anche le questioni che intuitivamente non sono importanti.



Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Daniels118





postato il:
02.06.2012, alle ore 15:41
Grazie per i complimenti :)
Se ho ben capito il primo paragrafo del tuo ultimo post, tu intendi utilizzare il sistema che avevi illustrato per eseguire una sincronizzazione all'avvio del sistema e poi far andare i clock ciascuno per conto suo, giusto?
Dal punto di vista teorico è perfetto, purtroppo anche se i clock vengono perfettamente sincronizzati, la loro frequenza non è stabile nel tempo, per questo è necessario avere un ulteriore satellite che permetta di risolvere costantemente il sistema con una variabile in più (il tempo appunto).

PS. se qualche volta hai bisogno di qualche slide per illustrare qualche concetto fammelo sapere, mi farà bene ripassare un po' la grafica flash, a lavorare sul 3270 mi sto rammollendo :)



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
Renzo91





postato il:
02.06.2012, alle ore 15:45
Comunque penserò a una soluzione alternativa perchè questa è valida per spazi piccoli o per velocità di trasmissione elevate...


Non è un problema!! Il mio tipo di sincronizzazione è sufficiente che si faccia una sola volta, una volta fatto, il ritardo verrà considerato solo la prima volta (perchè l'istante t0 di invio del primo segnale dopo i 180 impulsi si fissa solo la prima volta!) quindi solo la prima misurazione inserirà un errore (in quel 0,01 secondi l'oggetto avrà percorso un certo spazio), ma tutte le successive misurazioni dipenderanno solo dalla frequenza di aggiornamento del segnale!



Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Renzo91





postato il:
02.06.2012, alle ore 15:54
Daniels118:

Dal punto di vista teorico è perfetto, purtroppo anche se i clock vengono perfettamente sincronizzati, la loro frequenza non è stabile nel tempo, per questo è necessario avere un ulteriore satellite che permetta di risolvere costantemente il sistema con una variabile in più (il tempo appunto).

No problem, è sufficiente ripetere ogni tot secondi/minuti il procedimento!
Quello da valutare è adesso l'errore che comporta nel migliore dei casi la mia soluzione, comunque son contento che funziona!
Spero che qualche sprovveduto non passi da qui e mi rubi l'idea, perchè se porta buoni frutti una volta approfondita come matematicamente si deve la pubblicherò col nome "Loran positioning system" e sarai ovviamente il primo nelle citazioni per il contributo nello sviluppo... hihihi :-)

PS. se qualche volta hai bisogno di qualche slide per illustrare qualche concetto fammelo sapere, mi farà bene ripassare un po' la grafica flash, a lavorare sul 3270 mi sto rammollendo :)


Sei gentilissimo, d'accordo grazie!



Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Renzo91





postato il:
02.06.2012, alle ore 15:56
ops...
... col nome "Loren positioning system"...





Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Daniels118





postato il:
03.06.2012, alle ore 10:24
Non vorrei smontare il tuo entusiasmo, però analizza le seguenti considerazioni.
Prima ho accennato all'effetto doppler, l'ho messo da parte per non complicare il discorso, però ora lo riprendo in esame per evidenziare che nonostante sia piccolo non è ininfluente. Il ritardo in fase (in senso assoluto, non sui 360°) è direttamente proporzionale alla differenza delle frequenze (quella reale e quella percepita) integrata rispetto al tempo. Per semplificare il calcolo supponiamo che il robot si muova a velocità costante, in questo modo l'integrale viene un semplice prodotto. E' vero che se il robot si muove piano la differenza delle frequenze è piccola, ma è anche vero che più si muove piano più tempo impiegherà per percorrere la stessa distanza: il prodotto resterà sempre lo stesso, indipendentemente dalla velocità del robot e dipenderà solo dalla distanza percorsa. Questo significa che anche se fai la sincronizzazione solo occasionalmente per riagganciare solo la frequenza, se in quel momento il robot si muove, il clock sarà sincronizzato su una frequenza leggermente diversa che, integrata nel tempo, produrrà un forte sfasamento. Visto che l'errore è cumulativo in breve tempo i clock saranno completamente sfasati. Il sistema gps richiede una sincronizzazione perfetta, quindi tutti i sistemi cumulativi risultano inefficaci.



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
Renzo91





postato il:
04.06.2012, alle ore 12:55
Daniels118:
Il sistema gps richiede una sincronizzazione perfetta, quindi tutti i sistemi cumulativi risultano inefficaci.

Il sistema gps dispone di orologi al cesio e la velocità delle onde radio è pressappoco quella della luce, dunque l'effetto doppler è poco rilevante, e comunque facilmente correggibile. Ci sono tuttavia altri fattori più problematici che leggo su wikipedia e penso che possano essere corretti allo stesso modo.
Temo che per migliorare al massimo il mio sistema, debba studiarmi perfettamente con le equazioni il sistema GPS, e trovare se possibile soluzioni migliori ai fattori problematici che si presentano, se conosci qualche documento che ha una buona impostazione matematica, grazie per il link! :-)

In ogni caso conoscendo alcune caratteristiche fondamentali dell'oggetto che si osserva, quali l'accelerazione e la decelerazione massime, qualsiasi ritardo in termini di tolleranza nella posizione calcolata può essere fortemente ridotto.

Occorrono circa 400km/h per avere un'errore di posizione di 10m considerando come ritardo solo il tempo di percorrenza del segnale... E un mezzo che raggiunge tale velocità è lungo almeno 4,5m (Bugatti Veyron...), in altre parole ogni sistema può essere perfezionato, l'unico limite sono i materiali utilizzati, i costi, il grado di sufficienza del risultato, e le idee convenzionali che rimangono tali per molto tempo (non penso che nessuno abbia progettato un sistema migliore del GPS, ma sappiamo che al mondo d'oggi se non c'è un valido ritorno di soldi spesso nulla si tiene in considerazione).

Una cosa è certa, come dicevo qualche pagina fa, il mio sistema non pretende assolutamente di avere risultati migliori del GPS, ma può darsi che anche nel 50% dei casi usare 18 satelliti invece di 24 sia praticamente INDIFFERENTE -> meno dati da elaborare -> maggiore velocità del risultato e minore memoria occupata dal calcolatore -> costi inferiori -> ... ->inf ... Nobel ... ahahahaha :-)



Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Daniels118





postato il:
04.06.2012, alle ore 14:25
la velocità delle onde radio è pressappoco quella della luce, dunque l'effetto doppler è poco rilevante, e comunque facilmente correggibile.

E' vero che l'effetto doppler è minore, ma è anche vero che a quella velocità una differenza di frequenze infinitesima comporta un errore di calcolo enorme. Quando dicevo che la cosa era banale, è proprio perchè l'errore commesso è esattamente uguale alla distanza percorsa, il tempo e la velocità di propagazione si semplificano e spariscono dalle equazioni. Ricordati inoltre che l'errore è cumulativo.
Il sistema gps dispone di orologi al cesio e la velocità delle onde radio è pressappoco quella della luce [..]
Occorrono circa 400km/h per avere un'errore di posizione di 10m considerando come ritardo solo il tempo di percorrenza del segnale... E un mezzo che raggiunge tale velocità è lungo almeno 4,5m (Bugatti Veyron...), in altre parole ogni sistema può essere perfezionato

Non credere che le persone che hanno progettato il sistema non ci abbiano pensato, si sono preoccupati addirittura di correggere la deriva in frequenza dei clock sui satelliti dovuta alla velocità elevata (vedi teoria della relatività), che sebbene sia minima, con velocità di propagazione così grandi si traduce in un errore enorme. Inoltre anche i gps più economici tengono conto della velocità con cui si spostano per correggere la posizione, tieni presente che con i dati ottenuti dai timer le equazioni sono irrisolvibili perchè le distanze non sono perfette da rendere il sistema risolvibile analiticamente, si utilizzano sempre sistemi di calcolo numerico e qui diventa importante avere un elevato numero di satelliti che comunque sarebbero necessari per avere la copertura globale (le onde radio non sono capaci di attraversare il pianeta e anche se potessero sarebbero inutili perchè percorrerebbero distanze più lunghe rimbalzando sui vari materiali incontrati). I tempi di calcolo non sono importantissimi perchè i valori dei timer al momento della ricezione dei segnali vengono salvati in registri appositi, quindi il calcolo può durare anche molto tempo (nei limiti dell'utilità) una volta acquisiti i dati.



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
Renzo91





postato il:
04.06.2012, alle ore 14:32
Daniels118:

E' vero che l'effetto doppler è minore, ma è anche vero che a quella velocità una differenza di frequenze infinitesima comporta un errore di calcolo enorme. Quando dicevo che la cosa era banale, è proprio perchè l'errore commesso è esattamente uguale alla distanza percorsa, il tempo e la velocità di propagazione si semplificano e spariscono dalle equazioni. Ricordati inoltre che l'errore è cumulativo.

Mi spiace ma non ti capisco... potresti scomodarti a scrivere in modo chiaro le equazioni relative? Scuse e ringraziamenti anticipati



Semplice ed elegante, come sempre la soluzione è sotto gli occhi di chi sa vederla.
Daniels118





postato il:
04.06.2012, alle ore 20:36
Siamo sicuramente d'accordo sul fatto che per funzionare, satelliti e ricevitore devono avere dei timer perfettamente sincronizzati: facciamo finta che siano degli orologi, gli orari devono essere identici, oggi e per i prossimi mille anni. Perchè questo avvenga, è necessario che gli oscillatori oscillino alla stessa frequenza; se non lo fanno (sicuramente accade) devono essere risincronizzati e lo sfasamento (inteso come conteggi in meno o in più) deve essere corretto. Fermo restando che avendo un satellite in più si può risolvere il sistema in 3 incognite (la 3a è il tempo), vediamo qual è il problema nell'utilizzo di un segnale di sincronizzazione (soluzione da te proposta).
Nell'analisi scriverò tutto in simboli, quindi il discorso sarà valido per qualunque velocità di propagazione o raggio d'azione.
La tua soluzione prevede che uno dei satelliti invii un segnale di una durata nota contenente un certo numero di impulsi. Il ricevitore conta questi impulsi e conoscendo la loro durata prevista, corregge la frequenza di oscillazione del proprio clock, nel senso che la frequenza è esatta quando il numero di impulsi generati è uguale a quelli ricevuti nello stesso tempo.
Per aiutare la lettura delle formule, indicherò con l'iniziale maiuscola i parametri (costanti) e con l'iniziale minuscola le variabili. Scriverò inoltre i prodotti esplicitamente con il simbolo *, le sequenze di caratteri pertanto NON sono da intendere come prodotto di simboli costituiti da singole lettere. Quando parlo di velocità del veicolo (o ricevitore) mi riferisco alla componente lungo la retta che congiunge il veicolo stesso con il trasmettitore; il moto tangenziale alla circonferenza con centro nel trasmettitore è ininfluente. Supponiamo inoltre che la velocità del ricevitore sia costante nel tempo, altrimenti salterebbero fuori degli integrali di funzioni non note che renderebbero impossibile la risoluzione analitica. Non prenderemo in considerazione la durata degli impulsi perchè è utile solo dal punto di vista tecnico, non influisce sui calcoli (ovviamente la durata sarà minore dell'intervallo che intercorre tra l'invio di due impulsi successivi).

SIMBOLI:
N = numero impulsi utilizzati per una singola fase di sincronizzazione;
PTX = intervallo di tempo che intercorre tra l'invio di un impulso e il successivo;
prx = intervallo di tempo che intercorre tra la ricezione di un impulso e il successivo;
DTX = durata della trasmissione, intesa come il tempo che intercorre tra l'invio del primo impulso e l'invio dell'ultimo impulso;
drx = durata della ricezione, intesa come il tempo che intercorre tra la ricezione del primo impulso e la ricezione dell'ultimo impulso;
Vs = velocità di propagazione del segnale;
ttx1 = istante in cui è partito il primo impulso;
ttxN = istante in cui è partito l'ultimo impulso;
trx1 = istante in cui è arrivato il primo impulso (trx1 >= ttx1);
trxN = istante in cui è arrivato l'ultimo impulso (trxN >= ttxN);
t = tempo generico;
ds(t) = distanza del segnale dal trasmettitore al tempo t;
dr(t) = distanza del ricevitore dal trasmettitore al tempo t;
vr = velocità del ricevitore (nella realtà è una funzione, ma la consideriamo costante per i motivi sopra citati, usiamo comunque la minuscola)
FTX = frequenza impulsi trasmessi
frx = frequenza impulsi ricevuti;
ctx(t) = valore timer trasmettitore al tempo t;
crx(t) = valore timer ricevitore al tempo t;

Diciamo che scegliamo di impostare il numero di impulsi N (utile dal punto di vista tecnico per un conteggio accurato) e l'intervallo tra l'invio dei singoli impulsi PTX (è quello che ci permette di determinare la risoluzione) e di calcolare il resto dei parametri.

--- FORMULE ---
ds(t) = Vs * (t - ttx1)
dr(t) = dr(t0) + vr * (t - ttx1)

Poichè il segnale e il ricevitore (ovviamente) devono incontrarsi nello stesso punto e nello stesso istante:
dr(trx1) = ds(trx1)
dr(ttx1) + vr * (trx1 - ttx1) = Vs * (trx1 - ttx1)
dr(ttx1) + vr * trx1 - vr * ttx1 = Vs * trx1 - Vs * ttx1
dr(ttx1) - vr * ttx1 + Vs * ttx1 = Vs * trx1 - vr * trx1
dr(ttx1) + ttx1 * (Vs - vr) = trx1 * (Vs - vr)
trx1 = (dr(ttx1) + ttx1 * (Vs - vr)) / (Vs - vr)
trx1 = ttx1 + dr(ttx1) / (Vs - vr)

analogamente:
trxN = ttxN + dr(ttxN) / (Vs - vr)

DTX = ttxN - ttx1

drx = trxN - trx1
drx = (ttxN + dr(ttxN) / (Vs - vr)) - (ttx1 + dr(ttx1) / (Vs - vr))
drx = ttxN - ttx1 + (dr(ttxN) - dr(ttx1)) / (Vs - vr)

PTX = DTX / N
PTX = (ttxN - ttx1) / N

prx = drx / N
prx = (ttxN - ttx1 + (dr(ttxN) - dr(ttx1)) / (Vs - vr)) / N

FTX = 1 / PTX
FTX = 1 / ((ttxN - ttx1) / N)
FTX = N / (ttxN - ttx1)

frx = 1 / prx
frx = 1 / ((ttxN - ttx1 + (dr(ttxN) - dr(ttx1)) / (Vs - vr)) / N)
frx = N / (ttxN - ttx1 + (dr(ttxN) - dr(ttx1)) / (Vs - vr))

ctx(t) = ftx * t
ctx(t) = N / (ttxN - ttx1) * t

crx(t) = frx * t
crx(t) = N / (ttxN - ttx1 + (dr(ttxN) - dr(ttx1)) / (Vs - vr)) * t

--------------------------

Ricordiamo che la distanza d del ricevitore dal trasmettitore viene calcolata dal sistema con la seguente formula (1**):
d = (trx - ttx) * Vs
dove ttx e trx sono rispettivamente il tempo di trasmissione e di ricezione del segnale, il primo è noto (il trasmettitore invia il segnale ad intervalli regolari), mentre il secondo vale:
trx(t) = crx(t) * PTX
NOTA: prx non è noto perchè è funzione di vr, quindi non possiamo fare altro che sostituirlo con PTX.
da cui:
d = (crx(t) * PTX - ttx) * Vs


                  N * t                  ttxN - ttx1
d = (--------------------------------- * ----------- - ttx) * Vs
                   dr(ttxN) - dr(ttx1)        N
     ttxN - ttx1 + -------------------
                     Vs - vr

                  t
d = (-------------------------- * DTX - ttx) * Vs
     DTX * (Vs - vr) + vr * DTX
     --------------------------
           Vs - vr

         t * (Vs - vr)
d = (-------------------- * DTX - ttx) * Vs
     DTX * (Vs - vr + vr)

     t * (Vs - vr)
d = (------------- - ttx) * Vs
          Vs

d = t * Vs - t * vr - ttx * Vs
d = Vs * (t - ttx) - t * vr

da notare che "Vs * (t - ttx)" è la (1**) e "t * vr" è la distanza percorsa dal ricevitore, quindi:
distanza_calcolata = distanza_reale - distanza_percorsa
Poichè è sempre vero che distanza_reale = distanza_percorsa, la distanza calcolata sarà sempre ZERO, da qui la mia affermazione "l'errore è proprio uguale alla distanza".
Scusate la lunghezza.

Saluti :)



http://daniels118.altervista.org/

Il principio di funzionamento è controllato da un microprocessore... mi fido di più quando il principio di funzionamento è controllato da chi ha progettato l'apparecchio!
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 

 
 
indietro | homepage | torna su copyright © 2004/2021 GRIX.IT - La community dell'elettronica Amatoriale