Go Down

Topic: input e ragionamenti per il PID (Read 4 times) previous topic - next topic

astrobeed


In questo modo un pid anche solo P dovrebbe funzionare, altrimenti il PID dovrebbe avere valori che "assomigliano" alla curva motore+la correzione


Un PID solo P non esiste, non è nemmeno possibile raggiungere il valore desiderato usando solo la P.
Il PID non deve avere valori che assomigliano alla curva motore+correzione, il PID deve essere modellato sulla funzione di trasferimento del sistema nel suo globale.

lesto

ok, credevo che quello fosse il motivo, comunque sia via simulazione 3d che nella realtà, l'uso del pid sulla forza voluta e non sul segnale ppm ha dato risultati migliori. Io pensavo fosse quel motivo, poi nella realtà cosa succeda, ho "tirato ad indovinare".

Non capisco perchè un solo P non esista, in fondo è una proporzione, più ti avvicini al valore desiderato e più l'output è 0. Che poi il P possa funzionare solo nella teoria, non so.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

astrobeed

Ma l'hai letto il tutor di Livio Orsini sul pid che ti ho linkato ?
Anche se è un entry level contiene molte risposte, inclusa quella perché un PID non può essere solo P, e le basi per capire come funziona il PID.





lesto


Ma l'hai letto il tutor di Livio Orsini sul pid che ti ho linkato ?
Anche se è un entry level contiene molte risposte, inclusa quella perché un PID non può essere solo P, e le basi per capire come funziona il PID.


no  :smiley-red:, ma ho letto altri documenti. link? forse questo? http://docs.google.com/viewer?a=v&q=cache:fevaQ11rQ5AJ:www.fabbrimarco.com/droboitalia/Le%2520guide%2520di%2520Roboitalia%2520-%2520il%2520PID%2520facile1.pdf+Livio+Orsini+pid&hl=en&gl=my&pid=bl&srcid=ADGEESiqI5TJLAa8IqOC38cE3kWkwEYus-jSynodEj99bmR3FVkBVGQd9JMN4U0WwZCL_ZrVhL0TEB7hwiAme1K6RMOhwjahvQ-8oY4aCfJupwqU3oqPkwGduuLzjZWxcRBaz8wFWE6v&sig=AHIEtbTW1pjYRCeso6scQnu9k9M_O17ugg

Quote
non basta il solo altimetro!
serve quantomeno anche un "inclinometro di volo"


scusa mi sono espresso male, intendevo che avessi 3 o 4 sensori di distanza:
o uno al centro del mezzo e due all'estremità dei bracci, o i classici 4 all'estremità dei bracci. Però a questo punto il suolo deve essere perpendicolare alla gravità, piano e i sensori precisi (specialmente nella configurazione a 3, che per la stessa precisione in lettura di uno a 4 il sensore deve avere il doppio di risoluzione).
spero do non aver detto ancora castronerie :)

Quote
e ancora le informazioni non bastano

così hai sensore di quota + inclinometro (sia che usi 3/4 di profondità sia un sistema più canonico come IMU o meglio MARG), quindi dovresti esserci con take off e mantenimento quota. Manca (se usi una MARG) il sensore di posizione assoluta per un sistema a waypoint: il GPS, ma sbaglia di molti metri, oppure una triangolazione di segnale ma devi a priori mette delle antenne (almeno 2 a differenti x, y, e z, se non erro).
Attento all'effetto suolo, a 50cm non credo che si senta, dipende anche dalla potenza dei motori, ma ti sballa un sacco i calcoli
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

se mettessi, caso più semplice, 4 sensori di distanza alla fine di ogni braccio, e dando per scontato:
Quote
Però a questo punto il suolo deve essere perpendicolare alla gravità, piano e i sensori precisi

puoi ottenere la tua inclinazione X usando il teorema dei seni, se non erro
angolo =asin( ( distanzaX1-distanzaX2*sin(90°) )/lughezzaBraccioX )


per le 3 azioni pid mi son ben accorto che lavorano alla grande nella realtà :)

Quote
usare 2 accelerometri inclindati di 45 gradi, 2 accelerometri per asse, x-y

non conoscevo questo metodo, come fai ad eliminare le accelerazioni?

Quote
usare gyro-3assiale e accelerometri-3assiali correlati in logica quaterninica (complesso ma fattibile)

aggiungici anche 3assi di magnetometro se vuoi un controllo assoluto anche sullo yaw, se però vuoi solo il mantenimento di quota ti basta ciò che hai

Quote
usare Horizon sensor

i sensori di orizzonte esistono di vari tipi, so che sono stati usati con successo indoor, ma hanno qualche problema a lavorare all'aperto

Quote
ecco qui tutta la presenza sinergica delle 3 azioni P, I, D

mai detto che non serva, ma che secondo me lavora meglio (ovvero è più facile da settare la terna) se la risposta al suo output è lineare(ovvero il pid da un ouput una forza peso), anziché parabolica (il pid outputta direttamente il PPM)

Quote
per compensare le perturbazioni
che sono accelerazioni lungo i 3 assi e rotazioni attorno ai 3 assi
(anche infinitesime, ma ci sono)

qui non ti seguo. Se precedentemente hai usato uno degli altri 2 punti discussi sopra (4 assi di accelerometro o sensore di orizzonte) in teoria non hai bisogno di tutti questi sensori, perché sono in parte derivabili dai valori che già possiedi.


comunque a livello di test con un motore fisico (jbox2d), possiedo un algoritmo (non fatto da me, ma da un mio compagno di uni) che usa se non erro 3 PID, per mantenere l'angolo, l'altezza, e la posizione. Lavora in 2d, ma non dovrebbe essere difficile portarlo in 3d(ciò vuol dire il doppio dei pid)
se vi interessa posso chiedere se posso postarlo, ma non aspettatevi una buona leggibilità del codice, sono i tentativi fatti mentre preparavo il motore fisico in 3d (jbullet) :D
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

Quote

Diversamente ti si deve rispondere: assolutamente no! Nell'affermare che un PID sia + facile se e' olo P -- senza ID, ti sembra + facle, ma anche solo abbozzando una funzione di trasferimento del tuo sistmea (compresi trasduttori, attuatatori e risposta in frequenza dei motori), confezionato il regolatore R(S) .... beh, dai conti, antitrasformando da S->t, anche solo per guardare che faccia ha il grafico nel tempo della risposta del sistema retroazionato ad uno stimolo (per esempio uno scalino sca(t)), si evince tutta una discussione che ti porta a dire che R(S) e' bene che abbia tutte e 3 le azioni P.I.D.


non sto parlando nel PID usare solo la P, ma sto dicendo che se gli attuatori lavorando proporzionalmente al valore in ingresso dal pid, lavorano meglio. Quindi nel PID uso comunque i 3 valori, (in particolare nel mio caso P e D), quello che cambia è la risposta degli attuatori.
E' vero che il PID, se correttamente regolato, può tener conto della risposta non lineare degli attuatori (in fondo esiste anche per quello), ma visto che è una risposta conosciuta a priori, preferisco sgravare il problema dal PID, il cui settaggio è divenuto meno critico

Quote
Infatti non mi convincono. Ma e' anche vero che non li conosco.

quelli che ho visto io rilevavano l'orizzonte tramite UV.. inutile parlare dei problemi che si potevano avere nel caso di ombre, ostacoli sull'orizzonte, e settaggio
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

#36
Jun 06, 2011, 12:38 am Last Edit: Jun 06, 2011, 12:42 am by lesto Reason: 1
uso PPM puro (50Hz). occhio però che il massimo del motore non corrisponde a 180... in un paio di prove a banco il 100% del motore per me corrisponde a circa 70/80, probabilmente intorno a 90, ovvero "il centro" del servo.

edit: sinceramente non sono molto convinto dell'i2c, sicuri che il motore riesca a battere l'inerzia in così poco tempo? magari per quad piccolini, il mio è da un 1.4kg in ODV, e quindi le eliche son grandi (tripala 9x5, ma dovrei prendere delle bipala 11x4.5)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

lesto

mostro? la prima struttura è di 130cm di diametro, giace appesa nell'angolo finchè non mi procuro le eliche di dimensione adeguata.
Ho rimediato su una struttura di 1m di diametro (e con calibro inferiore), però mi son basato sulla spinta calcolata da un programmino, che ha cannato di ben 100grammi (per un totale di errore di quasi mezzo chilo), e quindi anche questa struttura è troppo pesante (al limite proprio). La uso per i test a banco.

Sono pronti i materiali per costruire una 50x50cm, l'idea è di volare prima di comprare altri pezzi (eliche, gps, sonar/IR, barometro, magnetometro, etc...)

Stavo anche valutando l'idea del passo variabile, che con le dimensioni in gioco credo inizi a diventare una valida alternativa...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up