spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Competizioni robotiche > Line Follower

Rispondi
 
Strumenti discussione Modalitŗ† visualizzazioe
  #11  
Vecchio 04-04-2006, 16.43.12
nonno_62 nonno_62 non è collegato
Robottaro sostenitore
 
Data registrazione: 25-11-2005
Residenza: sardegna
Etŗ†: 69
Messaggi: 572
Potenza reputazione: 81
nonno_62 E' un faro della comunitŗ
Predefinito

Non ha replicato nessuno ..... ho fatto un cattivo riassunto.

Saluti Nonno
Rispondi citando
  #12  
Vecchio 04-04-2006, 17.46.22
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Monselice (PD)
Etŗ†: 57
Messaggi: 5,458
Potenza reputazione: 422
marnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua fama
Predefinito

Sono un neofita del PID per cui........
Se non erro ti servono due grandezze, una √® il tempo e l'altra pu√≤ essere la velocit√* o il numero di clik o una distanza ecc.
In pratica il tempo DEVE entrare in gioco, diversamente non puoi realizzare ne la I ne la D.
Quello che ti manca nella regolazione P √® proprio un fattore di smorzamento e di anticipo, entrambi legati necessariamente al tempo (su anticipo forse √® pi√Ļ immediato comprendere che √® un fattore tempo dipendente)
Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #13  
Vecchio 04-04-2006, 18.23.25
nonno_62 nonno_62 non è collegato
Robottaro sostenitore
 
Data registrazione: 25-11-2005
Residenza: sardegna
Etŗ†: 69
Messaggi: 572
Potenza reputazione: 81
nonno_62 E' un faro della comunitŗ
Predefinito

Ciao marnic come al solito sempre presente Cercavo di stimolare la discussione visto che Astrobeed proponeva di lavorare insieme, comunque di indirizzarci ..... e non capita spesso di trovare chi ha voglia di dare in pasto agli altri la propria conoscenza.

Da quello che ho letto il "tempo" dovrebbe servire a fare le letture a intervalli di tempo regolari. (scusate la ripetizione) L'altra grandezza possono essere i tick o altro, ad esempio nel caso dei motori.

Però lui proponeva, se non ho capito male, di prendere a riferimento proprio il tempo come grandezza principale, o meglio l'intervallo di tempo fra due eventi susseguenti tipo 010 110 e poi fra il rispettivo 110 010.

L'integrale, che altro non è che l'area della parte di piano rappresentata tramite assi cartesiani delimitata dal tempo, in orizzontale, e dalle grandezze lette in verticale, o meglio dal valore degli errori che si hanno avuti. Vediamo se si può fare lo stesso ragionamento con il line follower.

In altezza ci mettiamo il tempo che intercorre fra una situazione di errore ed un'altra, magari opportunamente corretta in funzione di quale passaggio fra stati facciamo, mentre la delimitazione in orizzontale rimane il clock del tempo.

No non mi sembra funzionare!

Altra possibile soluzione, supponiamo che il bot all'inizio faccia una curva verso un lato, a quel punto i sensori cambiano stato, diciamo che applichiamo una correzione sui due motori che riporti il bot, ruotando, a ricambiare stato tornando a quello effettivo, dopo altro tempo il bot uscira dalla parte opposta cambio stato dei sensori, a questo punto si interviene di nuovo sui motori.

Adesso sappiamo con precisione che il bot per X millisecondi è stato sulla riga, solo sensore centrale acceso, da qui sappiamo anche di quanto è il suo disallineamento, non in senso assoluto ma sicuramente in quello relativo. Voglio dire non sappiamo se sono 10 o 20 o 30 gradi di disallineamento ma sappiamo che è disallineato di X millesimi di secondo! Questa è la misura dell'errore.

In proporzionale direi: X millesimi (allora) Y decelerazione del motore 1 e Z accelerazione del motore 2.

In integrale .... azzz non so se va bene ..... teniamo conto della somma degli ultimi n valori di X, in cui n varia per il tempo che prendiamo in considerazione ...... ad esempio ultimi 100 millisecondi, di pari passo per la derivata.

Mah, sar√* giusto? ...... Aaspetto bastonate, ma anche commenti costruttivi, questo mi sembra un bell'argomento su cui rompersi la testa e dire cazz....te

Saluti Nonno.

PS Azzz stasera mollo la costruzione di schede e bot e mi ripasso le nozioni che avevo letto sul PID , mia moglie mi ha detto che chieder√* il divorzio .... finalmente mi lascer√* in pace.
Rispondi citando
  #14  
Vecchio 04-04-2006, 19.12.01
L'avatar di Raen82
Raen82 Raen82 non è collegato
Moderator
 
Data registrazione: 05-02-2004
Messaggi: 600
Potenza reputazione: 78
Raen82 E' per ora ancora un mistero
Invia un messaggio via MSN a Raen82
Predefinito

Nessuno ha pensato ad utilizzare per la sensoristica dei sensori resistivi come le fotoresistenze?...la cosa può evitare di utilizzare convertitori A/D come nella soluzione riportata nel link proposto da Guido, l'utilizzo delle fotoresistenze per es. in pbasic è supportato con un semplice comando così da acquisire un'informazione rappresentativa della superfice riflettente, i problemi in questo caso sono la taratura del sensore con la definizione della scala.

Ciao.
Raen
__________________
Raen - Roboitalia Staff
www.roboitalia.com - raen [at] roboitalia.com
Il mio sito personale: www.raen.it
Rispondi citando
  #15  
Vecchio 04-04-2006, 20.05.44
Rider Rider non è collegato
Robottaro gold
 
Data registrazione: 04-12-2004
Residenza: Latina
Messaggi: 113
Potenza reputazione: 64
Rider E' per ora ancora un mistero
Invia un messaggio via MSN a Rider
Predefinito

Scusate... ma la linea √® sfocata o no?... usando delle fotoresistenze si misura l'intensit√* luminosa di un led riflesso.
Quindi se la linea è sfocata è possibile ma se è solo nera?
__________________
http://roboworld.altervista.org
Rispondi citando
  #16  
Vecchio 04-04-2006, 21.09.02
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Monselice (PD)
Etŗ†: 57
Messaggi: 5,458
Potenza reputazione: 422
marnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua famamarnic La sua reputazione Ť oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da Rider
Scusate... ma la linea √® sfocata o no?... usando delle fotoresistenze si misura l'intensit√* luminosa di un led riflesso.
Quindi se la linea è sfocata è possibile ma se è solo nera?
E' come se fosse sfuocata.... la luce del led colpira in proporzione riga nera e fondo bianco in modo diverso in funzione della sua posizione, ricorda che non hai un punto laser ma un cono di luce.

Nonno, ti ho seguito un po' poi mi sono perso, a causa anche della mia impreparazione.
capisco il concetto legato al tempo in cui abbiamo solo il sensore centrale a 1, questo misura quanto siamo disallineati ma solo se la velocit√* del bot √® costante e questa certezza non c'√® (?)
Il concetto però è un po' diverso (penso), vedila graficamente, se inseguiamo una linea diritta e correggiamo con linee rette (la P è una retta) o pendoliamo bruscamente (guadagno alto) o ci avviciniamo molto lentamente (guadagno basso) al valore obiettivo con il rischio di uscire in caso la linea da seguire faccia una curva con una pendenza maggiore alla nostra correzione.
Si deve introdurre una funzione asintotica che raccordi la nostra traiettoria con la linea che seguiamo, questo ci permette di raggiungere la linea e non passare oltre ma ritarda il raggiungimento del valore vero rispetto a quello che era il percorso retto....
qui mi fermo perche mi sorgono dubbi
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #17  
Vecchio 04-04-2006, 21.14.06
L'avatar di astrobeed
astrobeed astrobeed non è collegato
Robottaro sostenitore
 
Data registrazione: 18-03-2004
Residenza: Roma
Etŗ†: 60
Messaggi: 3,377
Potenza reputazione: 350
astrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua famaastrobeed La sua reputazione Ť oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da nonno_62
Però lui proponeva, se non ho capito male, di prendere a riferimento proprio il tempo come grandezza principale, o meglio l'intervallo di tempo fra due eventi susseguenti tipo 010 110 e poi fra il rispettivo 110 010.
No, io ho detto che il tempo che intercorre tra l'attivazione/disattivazione dei vari sensori, combinato con la distanza inter sensore che √® un dato noto, ci permette di calcolare la velocit√* angolare, questo √® il parametro in ingresso al PID.

Citazione:
Vediamo se si può fare lo stesso ragionamento con il line follower.
In altezza ci mettiamo il tempo che intercorre fra una situazione di errore ed un'altra, magari opportunamente corretta in funzione di quale passaggio fra stati facciamo, mentre la delimitazione in orizzontale rimane il clock del tempo.
Non puoi fare l'integrale, o la derivata, del tempo in funzione di se stesso.
Lo scopo del pid nel L.F. √® mantenere la velocit√* angolare, intesa come scostamento dal percorso (la linea), sempre a 0.
Ti dico subito che non servono motori con encoder, in questo caso sono inutili perch√® il nostro scopo √® controllare una sterzata e non la velocit√* di avanzamento.
Tieni presente che √® molto importante come viene realizzata la distribuzione dei sensori, pi√Ļ sono meglio √® ma come ampiamente dimostrato nel famoso filmato del micro l.f. ne bastano sei.
__________________
Bye
Rispondi citando
  #18  
Vecchio 06-04-2006, 15.47.04
nonno_62 nonno_62 non è collegato
Robottaro sostenitore
 
Data registrazione: 25-11-2005
Residenza: sardegna
Etŗ†: 69
Messaggi: 572
Potenza reputazione: 81
nonno_62 E' un faro della comunitŗ
Predefinito

Sono un Nonno arteriosclerotico .... ed è per questo che non capisco bene.

Prima di tutto voglio fare un piccolo ripasso del PID che mi sono studiato nuovamente (azz non avendo praticato mi ero dimenticato la mat√* delle cose), sia per me stesso per vedere se almeno le basi ci sono, sia per chi ha meno tempo del mio, cos√¨ potr√* comunque aseguire le nostre elucubrazioni.
Premessa: Non tenete conto dei numeri, li ho scelti solo per semplificare i discorsi. Inoltre ho preso a esempio il controllo dei giri di un motore che mi sembra pi√Ļ facile da capire.

PID: L'insieme di tre funzioni per il controllo dell'errore.

Errore: la differenza fra fra il valore a cui vorremmo regolare il macchianario e l'effettiva regolazione ottenuta.

Proporzionale: Questo controllo (Funzione) agisce in maniera Proporzionale all'errore. In pratica ad ogni tick si prende l'errore effettivo di quel momento si moltiplica per un coefficente, si trasforma in un valore analogico per il controllo del motore e si invia al motore. P=KxE. Il vantaggio √® che ci consente di avvicinarci velocemente verso un errore nullo, Lo svantaggio principale √® che non √® stabile, in pratica ci si ritrova con un errore altalenante intorno allo 0 a volte anche consistente. Inoltre con variazione del valore di regolazione del macchinario la fase di instabilit√* √® decisamente grande.

Integrale: Questo controllo è l'integrale dell'errore. Ricordiamo che l'integrale di una funzione riportata su assi cartesiani, è la somma dell'area che ha come limiti superiore e inferiore l'asse x di riferimento e il tracciato della funzione presa in esame e come limite destro e sinistro il tempo che prendiamo in considerazione (nel nostro caso dall'inizio della regolazione al momento preso in esame). Nel caso del PID si semplifica (diciamo così) sommando l'errore ottenuto con il valore calcolato dell'integrale al precedente tick, poi lo stesso viene moltiplicato per un coefficiente, infine si trasforma tale valore in analogico e inviato come regolazione del macchinario. I=Kx(I+E). Il vantaggio maggiore è un effetto di ritardo rispetto all'errore nella correzione. Questo ritardo anche nei valori calcolati consente di ammorbidire la risposta del sistema quando l'errore è prossimo allo zero. ovviamente questo si paga a prezzo di un ritardo nell'andata a regime della regolazione.

Derivativo: Questo controllo è la derivata della curva dell'errore. ricordiamo che la derivata indica la pendenza della curva nel punto preso in esame. in pratica nel PID ci dice quanto velocemente ci stiamo discostando o avvicinando all'errore zero. Praticamente si calcola facendo la differenza fra l'errore attuale e l'errore al tick precedente, poi lo stesso viene moltiplicato per un coefficiente, infine si trasforma tale valore in analogico e inviato come regolazione del macchinario. D=Kx(E-E(tick precedente)). Cosa ci permette di fare questo controllo, di aumentare la forza della correzione quando l'errore sta aumentando e diminuire la forza della correzione quando l'errore sta diminuendo.

Facciamo un esempio, giri motore richiesti = 100:

Tempo 0) partenza motore: giri raggiunti=0; errore=100-0
P=positivo in proporzione all'errore Kx(100)
I=positivo pari all'errore Kx(100+0)
D=zero pari all'errore Kx(100-100)

Tempo 1) met√* salita, giri raggiunti=50; errore=100-50
P=positivo Kx(50)
I=positivo Kx(3450+50) (3450 è un numero inventato che rappresenta la sommatoria di tutti gli errori)
D=negativo K(50-60) (60 uguale all'errore alla lettura precedente)

Tempo 2) superati i giri richiesti, giri raggiunti=130; errore=100-130
P=negativo Kx(-30)
I=positivo kx(5600(+)-30) (5600 è un numero inventato che rappresenta la sommatoria di tutti gli errori sia positivi che negativi)
D=negativo Kx(-30(-)-20) (-20 uguale all'errore lettura precedente) (notare che il totale è -10!!)

Tempo 3) discesa in avvicinamento verso errore 0, giri raggiunti=105 errore=100-105
P=negativo Kx(-5)
I=negativo Kx(-1300(+)-5) (-1300 è inventato)
D=positivo Kx(-5(-)-7) (2)

Tempo 4) superamento dell'errore 0, numero giri 90; errore 100-90
P=positivo Kx(10)
I=negativo kx(-700+10)
D=positivo kx(10-8) (2)

Tempo 5) risalita verso errore 0, giri 98; Errore 100-98
P=positivo Kx(2)
I=positivo Kx(300+2)
D=negativo Kx(2-3) (-1)

e così via .... vedi il grafico allegato.

http://img432.imageshack.us/my.php?i...grafico3gy.jpg
Rispondi citando
  #19  
Vecchio 06-04-2006, 15.52.45
nonno_62 nonno_62 non è collegato
Robottaro sostenitore
 
Data registrazione: 25-11-2005
Residenza: sardegna
Etŗ†: 69
Messaggi: 572
Potenza reputazione: 81
nonno_62 E' un faro della comunitŗ
Predefinito

Astrobeed dice:
----------------------------
No, io ho detto che il tempo che intercorre tra l'attivazione/disattivazione dei vari sensori, combinato con la distanza inter sensore che √® un dato noto, ci permette di calcolare la velocit√* angolare, questo √® il parametro in ingresso al PID
----------------------------

Però così 5 stadi come proponevo io con tre sensori (100-110-010-011-001) non sono sufficienti per per avere il senso dell'errore, secondo me c'è troppa poca risoluzione.

Serve un'altra idea per i tre sensori. .................

Nonno
Rispondi citando
  #20  
Vecchio 06-04-2006, 17.28.55
L'avatar di selfservice
selfservice selfservice non è collegato
Moderator
 
Data registrazione: 16-11-2003
Residenza: Foligno
Messaggi: 1,183
Potenza reputazione: 95
selfservice E' circondato da una spettacolare aurea
Invia un messaggio via MSN a selfservice
Predefinito

il terzo dei tre sensori √® sprecato, infatti in caso di linea dritta si trover√* sopra la linea...
la cosa ideale √® mettere un numero pari di sensori, distanziati in modo tale che se il LF va dritto nessuno dei sensori viene attivato dalla linea bianca, appena arriva la curva, uno o pi√Ļ sensori si attivano e il pid deve capire quanto velocemente si attivano (quant'√® brusca la curva) e reagire di conseguenza.
__________________
Beatu chi lu pota, beatu chi lu zappa, na paralise secca a chi ce mette l'acqua!
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalitŗ† visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code Ť Attivato
Le smilies sono Attivato
[IMG] Ť Attivato
Il codice HTML Ť Disattivato

Vai al forum


Tutti gli orari sono GMT. Adesso sono le: 02.19.38.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB