Control

L’odometria parte 2

l'ultima volta avevamo trattato della discretizzazione del modello dell'uniciclo, trovando una nuova formula che potesse essere utile per la stima della posizione iniziale. [tex]{x_{k+1} = x_{k} + frac{v_k}{omega_k}(sintheta_{k+1}-sintheta_{k})y_{k+1} = y_{k} - frac{v_k}{omega_k}(costheta_{k+1}-costheta_{k})theta_{k+1} = theta_{k} + T cdot omega_k[/tex] Affinché sia possibile effettivamente formulare un codice che sia implementabile e sia funzionale, vanno effettuate nuovamente delle ulteriori modifiche. (more…)

By Raffaello Bonghi, ago
Control

L’odometria, Dead reckoning – parte 1

Riprendiamo gli sviluppi teorici abbondonati precedentemente, per approfondire una delle caratteristiche principali del robot. Dead Reckoning L'odometria permette di stimare la propria posizione rispetto ad un riferimento assoluto determinato all'avvio del robot. L'utilizzo di questa tecnica è di fondamentale importanza per l'implementazione di controllori in retroazione di alto livello che utilizzano come misura la posizione e l'orientamento istantaneo del robot. (more…)

By Raffaello Bonghi, ago
Control

…e velocità sia!

Nell'articolo precedente eravamo rimasti al calcolo della velocità ed all'utilizzo della periferica del dsPIC chiamata QEI per l'interfacciamento del sensore. Adesso partiremo con l'analisi ed il calcolo della velocità attraverso l'encoder. Modello Encoder Perché sia possibile sapere la velocità del motore bisogna utilizzare un timer che possa contare quanto tempo passa tra l'intercorrere di una cella ed un'altra. La Velocità misurata diventa quindi [tex] V_m = frac{N_thetatheta_c}{T}[/tex] La misura però è soggetta ad un errore di quantizzazione, in quanto l'angolo è definito con una precisa risoluzione. [tex] theta_m = N_thetatheta_c = theta pm epsilon_theta[/tex] Dove [tex]epsilon_theta[/tex] è l'errore dovuto alla quantizzazione ed è compreso [tex]|epsilon_theta| < theta_c[/tex] (more…)

By Raffaello Bonghi, ago
Control

Test PID

Come anticipato tempo fa, finalmente ecco il primo video del robot in azione. In Questo test viene provato il controllo PID sui motori con una pavimentazione sconnessa. Da questo video si può verificare che il robot si muove in modo rettilineo senza particolari problemi.

By Raffaello Bonghi, ago
Control

PID digitale (parte 3)

Lo studio del regolatore PID oramai è giunto alla terza. Eravamo rimasti nell'ultima puntata con uno pseudocodice di un regolatore PID partito da una discretizzazione semplice che non teneva conto di molti vincoli, (regolatore PID parte 2).Il primo modello di approssimazione si basa su una trasformazione rettangolare o metodo delle differenze all’indietro o di Eulero. Quello che analizzeremo oggi è il metodo più usato basato su una trasformazione bilineare o metodo d’ integrazione trapezoidale (di Tustin). Il regolatore PID in funzione del tempo [tex] C(t) = K_p cdot e(t) + K_d cdot frac{de(t)}{dt} + K_i cdot int_0^t e(tau)dtau[/tex] e la sua forma approssimata con il metodo di Eulero: [tex] C(k) = K_p cdot e(k) + frac{K_d}{T_c} cdot (e(k)-e(k-1)) + K_i cdot T_c sum_{i=0}^{k} e(i)[/tex] Sfruttando l'approssimazione trapeziodale che approssima l'integrale, come si può vedere nell'immagine Tusin [tex] int_0^t e(tau)dtau simeq T_c cdot sum_{i=0}^{k} frac{e(i)+e(i-1)}{2} [/tex] Portando la legge di controllo in questa nuova versione: [tex] C(k) = K_p cdot e(k) + frac{K_d}{T_c} cdot (e(k)-e(k-1)) + K_i cdot T_c sum_{i=0}^{k} frac{e(i)+e(i-1)}{2}[/tex] (more…)

By Raffaello Bonghi, ago
Control

Saturazioni

Con questo piccolo articolo analizziamo in dettaglio le saturazioni del motore utilizzato.

Come da specifiche di costruzione il motore opera in un regime di tensione compreso tra [tex] V_{min} = 4.5V[/tex] e [tex] V_{max} = 12V[/tex], che comporta in prima approssimazione ad una non linearità istantanea di tipo a soglia con pendenza di circa [tex]m simeq 2.6[/tex] e saturazione netta.

Soglia con pendenza

(more…)

By Raffaello Bonghi, ago
Control

Il robot, dai vincoli al moto

Il sistema trovato precedentemente è l'insieme di tutti i vincoli non integrabili, quindi anolonomi del robot. che nel nostro caso è: Le direzioni ammissibili del robot saranno quelle appartenenti al nucleo della matrice A(q) Una possibile matrice G(q) può essere che porterebbe a rappresentare un moto ammissibile del genere:

(more…)

By Raffaello Bonghi, ago
Control

Il Robot, i vincoli del sistema

Dopo aver analizzato attentamente tutto il controllo di un motore partendo dal suo modello teorico, possiamo finalmente giungere all'analisi teorica della struttura del robot. Questo studio teorico ci porterà a poter strutturare un sistema di localizzazione, odometrica, che un sistema di controllo. RuotaUn primo punto di partenza è lo studio dell'elemento portante del robot: la ruota. La ruota è libera di rotolare su un piano orizzontale, nel nostro caso il pavimento, dove è possibile definire tre cordinate che ne caratterizzano posizione ed orientamento del punto di contatto sul suolo, com'è possibile vedere in figura. E' possibile descrivere un preciso vettore velocità, descritto: o anche  Per semplicità di analisi, la ruota non potrà mai slittare o avere una velocità normale al piano sagittale della ruota . Per definire quindi questo vettore, dovremo trovare un vettore ortonormale a quello di velocità, definito in precedenza: Il vettore normale avrà quindi la seguente forma tale vettore, espresso in forma Pfaffiana, definisce l'unica velocità che non potrà mai effettuare ed il vincolo che permette alla ruota di avanzare sempre sul proprio asse di rotolamento. Il vettore normale viene definito anolonomo o anche non integrabile, poiché la ruota non può raggiungere qualsasi punto dello spazio senza dover fare delle manovre. L’articolo CONTINUA (clicca qui)

(more…)

By Raffaello Bonghi, ago
Control

Il PID (parte 2)

Nell'articolo precedente eravamo rimasti allo studio di un PID che soltanto a livello teorico può funzionare, a causa di elementi che nella realtà è impossibile realizzare (la trattazione di questo articolo è particolarmente semplificata). Primo fra tutti, l'azione derivativa che deve essere per forza approssimanta, in quanto sistema non causale, aggiungendo un polo in alta frequenza, che nel gergo ingegneristico viene chiama: "derivata ingegneristica" in quanto stima la derivata effettiva usando soltanto le informazioni salvate precedentemente. Real PID Un altro modo di interpretare la derivata è vedere il blocco derivativo come una rete anticipatrice: con un L’articolo CONTINUA (clicca qui) (more…)

By Raffaello Bonghi, ago