Pages: 1 ... 78 79 [80] 81 82 ... 106   Go Down
Author Topic: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo  (Read 99123 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, a questo punto mi interessa sapere cosa combina la parte di filtro passa basso, cosa ci "buttano dentro" e cosa si apsettano in uscita. Purtroppo la mia ignoranza dilaga (le mie supposizioni di prima sono basate solo su quello che fa il flrtro passa basso, non sul resto del sistema di filtrazione dati)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non riesco a capire cosa vuoi sapere ?
Il giroscopio vedilo come una black box, quello che c'è dentro e cosa fa e come lo fa non ti serve saperlo, di cui sai solo che ti fornisce in uscita certi dati in funzione di certi stimoli.
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Studierò il PID, però lasciandolo un attimo da parte, perchè non si può usare quel metodo?

Non vorrei essere petulante, né insistere sulla possibilità di usare questa logica ma qualcuno potrebbe spiegarmi in che problema inciamperei?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non riesco a capire cosa vuoi sapere ?
Il giroscopio vedilo come una black box, quello che c'è dentro e cosa fa e come lo fa non ti serve saperlo, di cui sai solo che ti fornisce in uscita certi dati in funzione di certi stimoli.


vorrei sapere cosa fa un filtro passa basso.  smiley-mr-green
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Studierò il PID, però lasciandolo un attimo da parte, perchè non si può usare quel metodo?

Non vorrei essere petulante, né insistere sulla possibilità di usare questa logica ma qualcuno potrebbe spiegarmi in che problema inciamperei?

il pid è una semplificazione di un sistema complesso. E' una perdita di precisione usarlo dove non serve. ma nulla vieta di creare  un sistema complessissimo fatto da pid, auguri a debuggarlo.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il pid è una semplificazione di un sistema complesso. E' una perdita di precisione usarlo dove non serve. ma nulla vieta di creare  un sistema complessissimo fatto da pid, auguri a debuggarlo.

Ma io infatti non parlavo di usare il PID, ma di non usarlo! Al posto di sapere quanto agire sui motori e poi agire, perchè non posso agire direttamente fino a quando so che ad esempio il quadri ha raggiunto quell'inclinazione?(while(!inclinato)motore++.. per rendere l'idea, ovviamente non così semplicemente!)
 
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il pid serve per capire quanta botta di potenza dare al motore per tornare dritto il più in fretta possibile, senza però dare troppa potenza e finire di sbilancirrsi dall'altra parte. Se vuoi puoi costruirci sopra un modello fisico, ma il problema che questo modello non terrà conto di mille altri fattori (vento, eliche non perfette, risposta dei motori non lineare e dipendente dall'umidità, durezza dell'aria, etc...).
Come noti sei in un sistema multivariabile in cui le variabili sono praticamente infinite, e sopratutto per la maggior parte di esse non hai nemmeno i mezzi per misurarle/stimarle.

Quindi si usa un PID.

Era mia ntenzione elaborare un modello fisico che almeno, conosciuta la forza espressa dall'accoppiata elica/motore, usasse le formule del pendolo inverso per trovare il giusto (teoricamente, quindi niente vento etc...) valore del motore, e aggiungere solo un "pizzico" di pid, in pratica renderlo molto meno influente nelle scelte. ma rimane comunque necessario.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

vorrei sapere cosa fa un filtro passa basso.  smiley-mr-green

Per definizione un filtro passa basso limita la frequenza massima di un sistema, ovvero oltre il limite imposto si ha una attenuazione del segnale tanto maggiore quanto è maggiore lo scostamento, poi a seconda delle caratteristiche del filtro l'attenuazione può essere o maggiore o minore a parità di scostamento.
Applicato al nostro giroscopio vuol dire che variazioni della velocità angolare troppo rapide rispetto alla reale banda passante vengono attenuate fino ad essere azzerate.

Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma io infatti non parlavo di usare il PID, ma di non usarlo! Al posto di sapere quanto agire sui motori e poi agire, perchè non posso agire direttamente fino a quando so che ad esempio il quadri ha raggiunto quell'inclinazione?(while(!inclinato)motore++.. per rendere l'idea, ovviamente non così semplicemente!)

Il PID è un algoritmo matematico che permette di ottenere un fattore di regolazione partendo da un errore e dalle costanti di tempo del sistema, ovvero ti consente sia di correggere in modo graduale l'errore senza andare nel contempo oltre il fattore di correzione desiderato, che comunque viene raggiunto dopo una leggera oscillazione smorzata, senza innescare un processo oscillatorio esponenziale che porta inevitabilmente alla distruzione del sistema.
Detto in modo più semplice se fai solo una regolazione proporzionale dell'angolo di inclinazione del quadri non riesci a tenerlo stabile al punto desiderato, anzi non riesci nemmeno a raggiungere il punto desiderato.
Il PID è uno dei più semplici algoritmi per il controllo, ce ne sono di molto più complessi, e non è applicabile a tutte le problematiche di controllo, nel caso del quadri non solo va bene, è indispensabile, ovviamente nulla vieta di usare algoritmi più complessi come il "controllo robusto" (si è proprio il nome dell'algoritmo).
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Era mia ntenzione elaborare un modello fisico che almeno, conosciuta la forza espressa dall'accoppiata elica/motore, usasse le formule del pendolo inverso per trovare il giusto (teoricamente, quindi niente vento etc...) valore del motore, e aggiungere solo un "pizzico" di pid, in pratica renderlo molto meno influente nelle scelte. ma rimane comunque necessario.

Allora usa un controllo adattativo oppure un controllo robusto.
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per non raggiungere il punto desiderato intendete dire che, in quel modo, agendo ad muzzum sui motori, sorpasserei il punto desiderato e quindi il quadri cercherebbe di bilanciarsi all'infinito?
Quindi il pid sarebbe una costante fissa tarata sul mio quadricottero che mi dice quanto agire tante volte fino a che non arrivo al punto desiderato?
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi in pratica se vede che tra la lettura X e la lettura X+1 c'è troppa differenza, nel modello ideale fa in modo che X+1 sia uguale a X?
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10102
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per non raggiungere il punto desiderato intendete dire che, in quel modo, agendo ad muzzum sui motori, sorpasserei il punto desiderato e quindi il quadri cercherebbe di bilanciarsi all'infinito?
Quindi il pid sarebbe una costante fissa tarata sul mio quadricottero che mi dice quanto agire tante volte fino a che non arrivo al punto desiderato?


sono 3 valori, una è la P che dice quanto inflienza la parte Proporzionale, la I dice come comportari nel modo Integrativo (ovvero: se la P prima non è bastata, aggiunge qualcosa in più), e la D per il modo derivatico (ovvero: se ci avviciniamo al punto desisderato, smorza la P)

comqune con solo la P vederti il quad che continua ad oscillare come un pendolo, con solo la I lo vedresti apparentemente non far niente quando si inclina per qualche istante, per poi aumnetare a dismisura la potenza sui motori fono a superare ampiamente il punto desisderato, con solo la D vedreti che il motore va sempre a una velocità fissa (impostats dall P), tranne quando ti avvicini al punto desiderato che diminuisce
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per non raggiungere il punto desiderato intendete dire che, i

Intendo dire che con solo un controllo proporzionale non riesci proprio a raggiungere il punto desiderato, a seconda del gain puoi ottenere un punto maggiore o uno minore, ma mai quello atteso, apparentemente aumentando il gain sull'errore è possibile arrivare al punto desiderato, ma qui subentra l'instabilità (Bode e Nyquist) e il sistema va in oscillazione esponenziale autodistruggendosi.
Ti consiglio caldamente di cercare il corso sul PID di Livio Orsini (liberamente scaricabile), è uno dei migliori e rende la cosa molto semplice, dopo che lo avrai letto ti sarà tutto chiaro, ovviamente è solo il punto di partenza perché l'argomento è vasto e ogni controllo pid è una storia a se perché al di la della semplice formuletta del pid canonico poi c'è da prendere in considerazione tutta una serie di parametri del sistema e la sua fisica per arrivare al pid ottimale, non che quello canonico non funzionerebbe, però non puoi ottenere il massimo dell'efficienza.
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 723
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Questo? Sarebbe meglio perchè ad essere sincero non ho capito molto smiley-grin
Logged

Pages: 1 ... 78 79 [80] 81 82 ... 106   Go Up
Jump to: