0
Online
Tesla Member
Karma: 82
Posts: 8193
:(){:|:&};:
|
 |
« on: February 28, 2011, 11:52:40 am » |
Ciao la domanda di oggi non è propriamente sull'arduino ma sul PID ho 4 PID, uno per motore, che teoricamente mi servono per stabilizzare il quadricottero allora, come input io passo: angolo attuale (in radianti) e come setpoint l'angolo desiderato (in radianti) attualmente l'angolo desiderato (o set-point) lo possiamo considerare sempre 0, in realtà viene modificato dalla trasmittente per muoversi (tranne su e giù) l'output del PID sarà un valore, se è +5 per il motore sinistro, sarà -5 per quello destro, e così via Poi prendo l'output del PID e lo sommo con la potenza desiderata dei motori. Il problema di questo metodo è che a qualsiasi potenza desiderata, l'influenza del PID è sempre la stessa. Pensavo ad una soluzione del genere: potenza+(potenza*PID) e cercare di mantenere l'output di PID nel range tra -1 e 1 Però ho un altro dubbio: per essere stabili, non è detto che se il motore di destra spinge 10 allora anche quello di sinistra spinge 10, potrebbe dover spingere 12 come 9, ciò è dettato dal fatto che non tutte le eliche sono perfettamente uguali, che i motori non sono montati millemetricamente alla stessa distanza dal centro, effetto suolo, e più avanti anche colpi di vento e altre sollecitazioni esterne. Questo problema viene automaticamente risolto dal PID? Magari dalla parte I? O esiste qualche altra soluzione? per chi non sa cos'è un quadricottero (e per vantarmi  ): http://www.facebook.com/photo.php?pid=755173&l=71017e5eae&id=100000061327654 non dovrebbe servire essere registrati a facebook per vedere la foto, in caso contrario avvisatemi 
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #1 on: February 28, 2011, 02:49:54 pm » |
Il problema di questo metodo è che a qualsiasi potenza desiderata, l'influenza del PID è sempre la stessa. Pensavo ad una soluzione del genere: potenza+(potenza*PID) e cercare di mantenere l'output di PID nel range tra -1 e 1
Il PID ti fornisce in uscita un valore che serve per compensare l'errore istantaneo, tale valore è tanto maggiore quanto è l'errore e l'accumulo di errore nel tempo, chi provvede a questo è la componente integrale. In pratica se l'errore è piccolo l'out del pid può essere molto piccolo se non ci sono errori pregressi da compensare oppure molto grosso nel caso contrario e con una grande quantità di errori pregressi da compensare. Non ha alcuna importanza il valore reale della potenza (= velocità eliche) fornita al motore, tanto il pid ti fornisce sempre la giusta quantità per compensare lo sbandamento perché questa dipende dalla velocità angolare desiderata e non dalla potenza in uso dai motori. Però se il pid che stai usando è quello che hai postato nell'altro thread ti dico subito che quello non è un pid, ti consiglio una attenta lettura del tutor di Livio Orsini che ho linkato nell'altro thread.
|
|
|
|
|
Logged
|
|
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #3 on: February 28, 2011, 03:58:27 pm » |
Concordo, infatti serve un pid per ogni grado di libertà da controllare, dato che parliamo di rollio e beccheggio il tutto si riduce a solo due pid, se vogliamo controllare anche l'imbardata, consigliato su un quadricottero, serve un terzo pid che andrà ad agire su tutti e quattro i motori.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8193
:(){:|:&};:
|
 |
« Reply #4 on: February 28, 2011, 04:38:47 pm » |
dato che l'imbardata è comandata attraverso i due motori in rollio (roteanti) e i due in beccheggio (controroteanti) teoricamente tutto rimane fattibile con due PID, no? vado a rivedermi i tutorial, sapevo che quel PID è un pò farlocco ma speravo bastasse 
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #5 on: February 28, 2011, 05:15:54 pm » |
Non è che è un po farlocco, è tutto farlocco  Sia in teoria, che in pratica, ti bastano due pid. Purtroppo parliamo di controllare un assetto, quindi errori angolari, e non mi pare che sia possibile fare semplificazioni come avviene per l'errore di velocità. Un consiglio, non usare i float nel pid, l'ATmega 328 è un micro da solo otto bit e non ha nessun supporto hardware per la matematica, usa solo numeri interi.
|
|
|
|
|
Logged
|
|
|
|
|
Milan
Offline
Edison Member
Karma: 1
Posts: 1128
gioblu.com
|
 |
« Reply #6 on: February 28, 2011, 07:56:02 pm » |
Se hai bisogno ti do una mano col codice!! Cmq ottimo progetto non vedo l'ora di vederlo volare
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 412
Arduino rocks
|
 |
« Reply #7 on: March 02, 2011, 08:41:37 am » |
Quando avrai fatto, fammi un fischio. Da tempo ho in mente di fare un quadricottero super economico, però non ho mai avuto il tempo di cimentarmi. Magari, con qualche dritta da parte tua e qualche modifica al tuo codice (se vorrai condividerlo), diverrà una cosa più semplice del previsto. Ho iniziato a costruirne uno seguendo il progetto della MultiWii, però poi per motivi di tempo non sono più riuscito a finirlo  Comunque, la mia idea sarebbe quella di provare a fare un quadricottero addirittura con motori a spazzole. Lo so, magari non ci farai un granchè, però sicuramente verrebbe fuori un progetto molto economico per chi non può/vuole investire molto su un progetto simile.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #8 on: March 02, 2011, 09:01:35 am » |
Comunque, la mia idea sarebbe quella di provare a fare un quadricottero addirittura con motori a spazzole. Lo so, magari non ci farai un granchè, però sicuramente verrebbe fuori un progetto molto economico per chi non
Non ti voglio scoraggiare, ma con i motori brushed non vai da nessun parte, non solo sono meno potenti a parità di peso e dimensioni, ma sono pure molto meno efficienti, alla fine devi mettere tante di quelle batterie (= peso = maggiore potenza dei motori = più batterie = più potenza dei motori = ciclo vizioso) che è un miracolo se il quadricottero si solleva e vola per qualche decina di secondi prima di finire la carica.
|
|
|
|
|
Logged
|
|
|
|
|
Milan
Offline
Edison Member
Karma: 1
Posts: 1128
gioblu.com
|
 |
« Reply #9 on: March 02, 2011, 01:36:03 pm » |
in effetti meglio brushless, anche le cinesate ormai funzionano. Testato sulla mia pelle.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8193
:(){:|:&};:
|
 |
« Reply #10 on: March 03, 2011, 08:53:06 am » |
i primi xufo erano brushed, ma come dice astrobeed non è che fossero prestanti come gli attuali... Il mio codice lo condividerò quando funzionerà, quindi spero presto  occhio non tanto alle cinesate quanto alle vibrazioni: per esempio a me le viti dell'albero motore tendono a svitarsi, per colpa delle vibrazioni. Sostituite quelle perse (ebbene sì) con viti da PC (il ferramenta sotto casa mi diceva che quella misura di viti era introvabile -.-) e il problemea ora non si presenta più, in caso una goccia di colla o sostanze apposite e via
|
|
|
|
|
Logged
|
|
|
|
|
Napoli
Offline
Edison Member
Karma: 1
Posts: 1219
Here we go!!!
|
 |
« Reply #11 on: March 04, 2011, 05:13:52 am » |
correggetemi se sbaglio....
ma in questo caso (UAV) non sarebbe molto utile utilizzare un filtro di kalman, anche perchè se ci sono degli "errori di progetto" (come ad esempio il fatto che le eliche non sono tutte alla stessa distanza dal centro etc etc..) tu puoi inserire delle tolleranze e il modello matematico del tuo quadricottero "cambierà " a seconda della situazione...
lo so che sono tutte chiacchiere, però mi sembrava potesse essere uno spunto utile per te!
Tienici aggiornati
|
|
|
|
|
Logged
|
L'impossibile...richiede solo piu' tempo!
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7348
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #12 on: March 04, 2011, 06:51:18 am » |
ma in questo caso (UAV) non sarebbe molto utile utilizzare un filtro di kalman,
Il kalman non serve a nulla per il controllo del quadricottero, serve per pulire dal rumore (tanto) i sensori, comunque la vedo molto difficile implementare tutti i filtri necessari e farli lavorare real time con la necessaria banda su ATmega 328.
|
|
|
|
|
Logged
|
|
|
|
|
0
Online
Tesla Member
Karma: 82
Posts: 8193
:(){:|:&};:
|
 |
« Reply #13 on: March 04, 2011, 11:36:39 am » |
si il kallman è un algoritmo lento ma fattibile. Io usa la DCM (direct cosine matrix) che è molto più veloce in tempo macchina, in pratica è un PI applicato ai quaternioni di rotazione. E' un algoritmo recente, se googli trovi la tesi del tizio, che dimostra anche come sa leggermente meglio del kallman (il kallman al è difficile aggiungere altri tipi di sensori, la DCM invece nasce apposta, tiri fuori il quaternione dal sensore e via)
stavo ripensando al fatto di avere due soli pid e non uno per motore. Ho fatto qualche test (su un solo asse), per rimanere in equilibrio, se il motore RX spinge 35, quello SX deve spingere 40 (il range va da 0 a 180). Credo che la I debba occuparsi di questo, ma per farlo deve essere un PID per motore, no?
|
|
|
|
|
Logged
|
|
|
|
|
Napoli
Offline
Edison Member
Karma: 1
Posts: 1219
Here we go!!!
|
 |
« Reply #14 on: March 04, 2011, 12:23:30 pm » |
Il kalman non serve a nulla per il controllo del quadricottero, serve per pulire dal rumore (tanto) i sensori, comunque la vedo molto difficile implementare tutti i filtri necessari e farli lavorare real time con la necessaria banda su ATmega 328.
è giusto quello che dici, ma può servire anche per "pulire" il modello matematico del quadricottero da eventuali errori, per quello intendevo che potesse servire in questo caso!!! p.s. @lesto appena posso voglio informarmi su questa DCM che sembra molto interessante, già ne avevo sentito parlare molto bene!!!
|
|
|
|
|
Logged
|
L'impossibile...richiede solo piu' tempo!
|
|
|
|
|