avrei bisogno di un vostro parere su un problema che ho al mio segway auto costruito !
Il progetto funziona abbastanza bene, devo dire, il software sviluppato (al solito, accelerometro + gyro filtrati da kalmann e controllore PID) va benino (a parte che nn sono capace di tunare correttamente i parametri PID, ma questa e’ un’altra storia, credo!) ma il problema e’ che e’ lento come velocita’ max…cioe’ lo vorrei piu’ veloce “a regime”. Come posso fare secondo voi? Se aumento troppo il valore che passo al motor driver (= uscita del PID) il sistema diventa troppo nervoso e comincia ad oscillare pericolosamente (e risponde troppo nervoso) ma non e’ questo che voglio in realta’! A me va bene che all’inizio quando inclino il piano il sistema reagisca in manier “soft” come velocita’ dei motori…incrementando man man inclino. Il problema e’ quando sto viaggiando col piano inclinato che la velocita’ dei motori e’ quella e nn aumenta piu’ (perche’ mantengo l’inclinazione costante) ed e’ troppo poca per i miei gusti. I motori potrebbero andare molto piu’ veloci ma se applico un semplice moltiplicatore all’uscita del PID il sistema sballa e diventa inutilmente nervoso e oscillante. Cosa mi potreste suggerire via software? potrei applicare un moltiplicatore diverso dopo una certa inclinazione del piano …questo potrebbe essere una idea ma magari sto sbagliano qualcosa di fondo, che dite? dovrei agire solo e solamente sui parametri PID ? Grazie a chi potrea’ aiutarmi. Buona giornata!
p.s. dimenticavo di dire che nn ho un sistema retroazionato quindi non ho motori con encoder.
... magari se ci dici che Arduino stai usando, ci descrivi come hai realizzato l'oggetto, ci spighi il funzionamento e poi ci fai anche vedere il codice ... qualcuno cerca pure di aiutarti ...
Buongiorno ha ragione ma nn volevo entrare troppo nei dettagli software perche’ l’algoritmo di base penso sia ben conosciuto da chi fa self balancing robots!
Comunque sto usando arduino uno (o in alternativa STM32 a 100MHz); il funzionamento, ripeto, e’ ben conosciuto in letteratura come problema del pendolo inverso e quindi si tratta di applicare una potenza ai motori proporzionale all’angolo di inclinazione in modo che il sistema ritorni in equilibrio.
La mia domanda era piu’ che altro “teorica” nel senso che vorrei capire da chi ne sa piu di me (cioe’ tutti!) se e’ una cosa legata solo al tuning dei parametri PID oppure e’ qualcosa che qualcuno ha gia’ affrontato e magari risolto in maniera furba; tutto qua:-). Grazie lo stesso. Saluti
Come ha detto anche Guglielmo, senza vedere come hai implementato la cosa, almeno come algoritmo, non è facile. Però stando a quello che mi sembra di capire, la tua retroazione è lineare, e applicare un moltiplicatore non fa che farla restare lineare (perché y=x e y=5x sono sempre delle rette). Devi fare in modo che la risposta aumenti molto per variazioni più ampie (ossia "va più veloce") e poco per piccole variazioni.
Non sono esperto di questo tipo di applicazioni quindi non so dirti se la mia "intuizione" sia applicabile al tuo contesto, ma dal punto di vista puramente algebrico potrebbe essere valido pensare ad un esponenziale anche solo un andamento parabolico (y=x^2 con eventuali "aggiustamenti" parametrici).
Mi spiace, non so dirti di più se non di fare qualche prova.
grazie mille per il feedback! In effetti nn ci avevo pensato..e provero’ ad applicare un fattore moltiplicativo parabolico. Non ho postato il codice perche’ e’ pieno di “pasticci” , accrocchi e roba simile perche’ …e’ sotto sviluppo (e quindi nn ho tempo per ripulirlo!) ma gia’ questo feedback potrebbe aiutarmi! grazie provero’ a fare qualche prova del caso !