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

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


rilevare la posizione di un robot
     
Autore Messaggio opzioni
multimetro





postato il:
10.05.2012, alle ore 18:38
rilevare la posizione di un robot 

Ciao a tutti,
sto sviluppando un progetto che prevede l'uso di un robot che trasmetta ad un computer "master" la sua posizione nello spazio quando gli viene chiesto;
mi spiego meglio: il robot è un robot "esploratore" che si muove casualmente in uno spazio rettangolare con degli ostacoli al suo interno, quando trova un ostacolo informa il "master" trasmettendogli le coordinate cartesiane dell'ostacolo.
Il punto è: come faccio a far "sapere" al robot in che posizione si trova in quel momento, cioè le sua coordinate cartesiane?
La precisione dovrebbe essere circa di più o meno un cm, quindi escluderei l'uso di un GPS, anche perchè il robot lavorerà dentro un edificio.
Ovviamente il robot, prima di iniziare il lavoro, verrà "messo a zero" rispetto al punto di coordinate 0,0 (origine degli assi).

Grazie anticipatamente,
Silvano.



W l'ambiente.
sito internet:
http://scientificamente.weebly.com
Jasson





postato il:
11.05.2012, alle ore 11:38
Se ne è già parlato in altri post, e comunque la soluzione più semplice, è quella di misurare la distanza percorsa, la direzione del robot, per capire in che posizione si trova.
schottky





postato il:
11.05.2012, alle ore 20:35
multimetro:
Ciao a tutti,
sto sviluppando un progetto che prevede l'uso di un robot che trasmetta ad un computer "master" la sua posizione nello spazio quando gli viene chiesto;
mi spiego meglio: il robot è un robot "esploratore" che si muove casualmente in uno spazio rettangolare con degli ostacoli al suo interno, quando trova un ostacolo informa il "master" trasmettendogli le coordinate cartesiane dell'ostacolo.
Il punto è: come faccio a far "sapere" al robot in che posizione si trova in quel momento, cioè le sua coordinate cartesiane?
La precisione dovrebbe essere circa di più o meno un cm, quindi escluderei l'uso di un GPS, anche perchè il robot lavorerà dentro un edificio.
Ovviamente il robot, prima di iniziare il lavoro, verrà "messo a zero" rispetto al punto di coordinate 0,0 (origine degli assi).

Grazie anticipatamente,
Silvano.


Non esiste nessuna soluzione a meno di 10000 euro che consenta di rilevare con precisione inferiore al centimetro la posizione di un robot in una stanza, La cosa più prcisa che si può fare è qullo di usare parechi sensori sonar che con opportuni algoritmi di mapping consentano di rilevare al posizione del robot (rispetto alla mappa a prioro conosciuta dell'ambiente) e di eventuali ostacoli individuati. Il metodo indicato da jasson detto anche di "odometria" consiste nell'inteegrare le rilevazioni degli encoder delle ruote e risalire cosi alla posizione, può essere anche molto preciso, ma solo per intervalli di tempo molto piccoli dopo la "messa a zero" infatti vi sono derive inevitabili causate da imprecisione degli encodere del profilo delle ruote, slittamenti nella dirazione del moto e strisciamenti nella direzione ortogonale che sono inevitabili.



Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
schottky





postato il:
11.05.2012, alle ore 20:36
Per inciso la soluzione a più di 10000 euro si basa sull'impiego di distanziometri laser ed è molto complessa anche dal punto di vista algoritmico.


Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
14.05.2012, alle ore 15:03
Jasson:
Se ne è già parlato in altri post, e comunque la soluzione più semplice, è quella di misurare la distanza percorsa, la direzione del robot, per capire in che posizione si trova.


Non ho letto i vecchi post ma si potrebbe assemblare un sistema di navigazione inerziale in questo modo:

- una bussola digitale XY che se ben calibrata ha una presicisone di 3-4 gradi pari all'1% (40-60 euro)
- un encoder a 48 passi sulla ruota che ha una precisione del 2% (20 euro)
- un arduino che lavora in virgola mobile con funzioni trigonometriche (25 euro)

leggendo ogni secondo la distanza percorsa "s" e scomponendola nelle due componenti X ed Y in base ai dati di direzione del modulo magnetico si dovrebbe avere la posizione con una precisione del 5% che in uno spazio di 1 metro per 1 metro fornisce un raggio di errore di 3 cm

Per iniziare potrebbe essere una via interessante e poco costosa.

Si potrebbe anche usare due accelerometri ad un asse ( o uno a due assi) integrando due volte rispetto al tempo, ma occorre valutare se la sensibilità in termini di "g" è adeguata al movimento del robot.

In ogni caso è fondamentale la calibrazione dei sensori, altrimenti si misura solo "garbage" !!

Qui c'è un bell'articolo con la calibrazione dei sensori

http://starfinder.altervista.org/index.html



"se peso cado, ma se cado non peso"
adamatj.altervista.org
schottky





postato il:
16.05.2012, alle ore 09:21
Corretto il discorso sulla bussola/odometria, almeno in linea di principio, il problema maggiore è quello del contatto ruota suolo che introduce errori (strisciamenti e slittamenti) come dicevo prima che sono incontrollabili. Su unrobot di livello alto con encoder con 3600 passi per giro dopo un metro si trovano errori di qualche centimetro che ovviamente sono molto più alti di quanto ci si aspetterebbe.
La cosa della doppia integrazione della lettura degli accellerometri invece non si può fare a caisa della deriva. La doppia integrazione è un'operazione fortemente instabile (due poli nell'origine). senza entrare nei dettagli analitici si pensi che un piccolissimo errore presente sul valore iniziale della posizione viene anch'esso integrato due volte per cui da luogo ad una deriva che diverge con legge quadratica.
In definitiva è sempre necessario nella localizzazione "fare il punto" almeno periodicamente, misurando la distanza da oggetti noti per correggere le derive che, in qualsiasi metodo sono presenti.
Per chi fosse interessato all'argomento ri-consiglio di leggere questo report diponibile gratuitamente che anche se non è molto recente tratta l'argomento della localizzazione robotica in modo abbastanza completo http://www-personal.umich.edu/~johannb/Papers/pos96rep.pdf



Il vantaggio di essere intelligente e' che si puo' sempre fare l'imbecille, mentre il contrario e' del tutto impossibile. -- W. Allen
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
16.05.2012, alle ore 16:46
le osservazioni sono piu' che giuste sul piano pratico: una ruota che rotola senza strisciare" non è semplice da realizzare.

Per la doppia integrazione ho invece qualche dubbio, ma forse son passati troppi anni: per me la posizione iniziale NON viene integrata nel tempo

ipotizzando "g" costante si ha:

x(t)= 1/2*g*t^2 + v0*t + x0

se all'inizo della corsa il robot è fermo (Vo=0) nel punto x0 si dovrebbe avere:

x(t) = 1/2*g^2 + x0

e quindi la posizione è funzione quadratica del tempo per l'accelerazione "g"

Mi sembra che questo sistema fosse quello usato prima del GPS per gli "oggetti volanti a lungo raggio"

si sbalio corigetemi, come disse GPII.

Condivido invece la necessità di "rifare periodicamente il punto" , ma questo si potrebbe realizzare (almeno in spazi limitati) con dei chekpoint di posizione nota che il robot "riconosce" quando ci passa sopra.

Grazie mille per il report, mi leggerò con calma le 282 pagine!





"se peso cado, ma se cado non peso"
adamatj.altervista.org
multimetro





postato il:
16.05.2012, alle ore 17:47
Eccomi di nuovo dopo sei giorni di nulla cosmico!
Vi ringrazio molto per i suggerimenti che mi avete dato finora; devo dire che l'idea di usare un accelerometro a due assi mi sembra carina, tanto più che ho trovato quanlche info su internet che corrisponde a quanto detto da double_wrap (vedi: chifis.unipv.it/materials/ChComp/MC1.PPT).
Per poter proseguire con le meditazioni su questo metodo, però, vorrei che mi spiegaste cosa vuol dire "integrare due volte rispetto al tempo"; ve lo chiedo perchè sono in quarta scientifico e non ho ancora fatto integrali e derivate.

Grazie mille!
Silvano.



W l'ambiente.
sito internet:
http://scientificamente.weebly.com
Daniels118





postato il:
16.05.2012, alle ore 20:02
Detto maccheronicamente vuol dire che ad intervalli regolari e brevissimi sommi il valore di accelerazione misurato ottenendo il valore della velocità istantanea. Poi, sempre ad intervalli regolari e brevissimi, sommi i valori calcolati di velocità, ottenendo la posizione raggiunta. Ovviamente sia accelerazione che velocità possono essere negative, quindi la posizione può sia "crescere" che "decrescere". Queste operazioni devono essere ripetute per ogni dimensione spaziale (se il robot si muove nel piano ne bastano due).
Ad ogni integrazione l'errore sale vertiginosamente. Un consiglio: desisti.



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!
double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
17.05.2012, alle ore 00:25
Provo a dare una spiegazione e che lo zio Isacco mi assista: per semplicità consideriamo il moto in una sola dimensione x

1) alle scuole medie la velocità è definita come rapporto fra spazio percorso e tempo impiegato a percorrerlo.
2) alle superiori si cerca di essere piu' precisi: per calcolare questo rapporto QUANTO spazio e QUANTO tempo occorre prendere in considerazione?
3) se si considera un intervallo di tempo "qualunque" il rapporto fra spazio percorso e tempo impiegato sarà la "velocità media" in quell'intervallo di tempo
4) noi vogliamo però la "velocità istantanea" e quindi dovremo diminuire l'intervallo di tempo
5) quanto più diminuiamo l'intervallo di tempo tanto più la velocità media si avvicinerà a quella istantanea
6)l'intervallo minimo che si puo' misurare si chiama "tempo infinitesimale" dt, dove dt= (T1+delta ) - T1 con delta che "tende a zero" , cioè è pochissimo maggiore di zero
7) di conseguenza anche lo spazio percorso sarà "infinitesimale" e sarà uguale a dx dove dx=x2(T1+delta) -x1(T1)
8) il rapporto dx/dt è la velocità istantanea v(t) ed è una funzione di t perchè tale rapporto cambia da istante ad istante
9) per i matematici il rapporto dx/dt si chiama derivata di x rispetto a t mentre per i geometri è la tangente alla funzione v(t)

Un percorso analogo si segue per l'accelerazione

1) il termine "spazio percorso" puo' essere definito anche come "variazione di posizione": questa precisazione è utile per fare una analogia con l'accelerazione
2) l'accelerazione è il rapporto fra "la variazione della velocità" e "il tempo necessario affinchè tale variazione avvenga"
3) se facciamo tendere a zero il tempo nel quale misuriamo la variazione della velocità otteniamo l'accelerazione istantanea a=dv/dt
4) possiamo dire che l'accelerazione è la derivata della velocità rispetto al tempo

Ma se la velocità è la derivata dello spazio rispetto al tempo e se l'accelerazione è la derivata della velocità rispetto al tempo allora con gran fantasia si puo' dire che l'accelerazione è la "derivata seconda" dello spazio rispetto al tempo a = d^2x/dt^2

Questo vuol dire che se misuro lo spazio x2-x1 percorso nel tempo (T1+delta)-T1 posso trovare sia la velocità (derivando una volta) che l'accelerazione (derivando due volte)

MA VUOL DIRE ANCHE CHE SE CONOSCO L'ACCELERAZIONE A1 AL TEMPO T1 POSSO RISALIRE SIA ALLA VELOCITA' CHE ALLO SPAZIO PERCORSO: SERVE L'OPERAZIONE INVERSA CHE SI CHIAMA INTEGRAZIONE

Le operazioni di derivazione ed integrazione si studiano in 5^ liceo: ci sono delle semplici regole per le funzioni elementari come polinomi, funzioni trigonometriche e logaritmico/esponenziali. Se la derivata prima puo' essere definita come la tangente di una funzione, così l'integrale primo di una funzione puo' essere definito come "l'area sottesa dalla funzione"

Un esempio per tornare al robot: come integrare due volte rispetto al tempo
1) l'integrale di una costante <a> rispetto al tempo <t> è la retta v(t)=a*t+vo (dove vo è il valore di v(t) per t=0
2) l'integrale della retta V(t)=a*t+Vo rispetto al tempo t è una parabola x(t)=1/2a*t^2 + Vo*t + so dove so è il valore di x(t) all'istante to

Come si calcola il nostro integrale di posizione conoscendo l'accelerazione istantanea?

a) ipotizzo dei "periodi di tempo" , delta_t diciamo 1/100 di secondo
b) ipotizzo che il robot parta da fermo v0=0 dal punto x0=0

1) misuro l'accelerazione <a> al tempo t1: puo' essere positiva (accelera) o negativa (rallenta)
2) calcolo la nuova posizione x1(t+delta_t)=1/2*a*(delta_t)^2
3) lascio passare il tempo delta_t
4) ricomincio dal punto 1)

Il punto critico è la precisione della misura della minima accelerazione che si riesce ad ottenere calibrando il sensore ed anche il delta_t scelto: piu' è piccolo e maggiore sarà la precisione.

Gli errori accumulati si sommano e periodicamente serve una "correzione della posizione" con un riferimento noto, (una mappa, un punto noto, ecc)

Un <g> di accelerazione (il campo gravitazionale della terra) corrisponde a 9,81 m/sec^2: vuol dire che con tale accelerazione ogni secondo la velocità aumenta di circa 36 Km/h, come dire da 0 a 100 Km/h in 3 secondi, quasi una formula 1! Se il modulo ha un range di +/- 1g allora deve avere una risoluzione di almeno 1/100 di g .....





















"se peso cado, ma se cado non peso"
adamatj.altervista.org
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/2024 GRIX.IT - La community dell'elettronica Amatoriale