Salve ragazzi,
sto alle prese con la costruzione del mio primo quadricottero e in realtà l'obiettivo è alquanto ambizioso: vorrei creare da zero il software di controllo su un microcontrollore arm cortex M3. Ho già provveduto a realizzare una struttura abbastanza robusta con due bacchette di fibra di carbonio, 4 motori emax 2822, 4 esc turnigy 30A, 1 batteria lipo 3S 3300mAh, giroscopio ITG3200, accelerometro BMA180. Per semplicità ho provato il tutto senza l'algoritmo di controllo per testare motori e struttura, quindi senza sensori e con l'ausilio di un semplice PIC per la generazione dei segnali PPM per i motori e la cosa sembra andare abbastanza bene. Vi riporto il link del video:
A&P Webmasters - Siti Web, Robotica, Elettronica, Realtà Virtuale, &...
Il punto è questo: volendo ora passare all'implementazione di un algoritmo di controllo che fa uso di due regolatori pid, vorrei capire meglio come l'uscita del pid, e quindi la legge di controllo, vada ad incidere singolarmente sui motori. In particolare, se associo ogni pid a una coppia di motori (entrambi sullo stesso asse del quadricottero), l'idea sarebbe quella di variare l'angolo di riferimento da zero (assetto stabile) a uno diverso da zero in modo che il quad possa spostarsi in una determinata direzione. A questo punto il pid dovrà generare un valore che dipende dall'errore calcolato come differenza tra l'angolo attuale del quadricottero calcolato con l'ausilio dei sensori e il riferimento scelto da me, e tale valore dovrebbe andare ad incidere sul segnale ppm in ingresso ai due motori in modo differente in maniera tale che un motore deceleri e uno acceleri. E' giusto o mi sbaglio? Se è così vorrei cercare di capire in che modo ciò possa essere fatto, intendo proprio in termini matematici o almeno algoritmici. Penso che in maniera molto semplice potrei sommare con un segno diverso per i due motori il valore restituito dal pid ad una durata di base dell'impulso che invio all'esc e da cui dipende la quota del quadricottero.
Inoltre, vorrei capire come potrei tener in conto nei due regolatori anche della rotazione del quadricottero lungo il proprio asse perpendicolare al terreno (yaw) senza il bisogno di dover implementare un ulteriore regolatore e se ciò possa inficiare e in che modo su quanto ho detto prima per il controllo degli angoli di pitch e roll.
In ogni caso penso che sarebbe comodo avere un modello dinamico del multirotore in modo da poter provare tutto al simulatore. Avete idea di dove potrei prendere qualcosa di già fatto?
Spero di essere stato abbastanza chiaro. Grazie a tutti anticipatamente...
sto alle prese con la costruzione del mio primo quadricottero e in realtà l'obiettivo è alquanto ambizioso: vorrei creare da zero il software di controllo su un microcontrollore arm cortex M3. Ho già provveduto a realizzare una struttura abbastanza robusta con due bacchette di fibra di carbonio, 4 motori emax 2822, 4 esc turnigy 30A, 1 batteria lipo 3S 3300mAh, giroscopio ITG3200, accelerometro BMA180. Per semplicità ho provato il tutto senza l'algoritmo di controllo per testare motori e struttura, quindi senza sensori e con l'ausilio di un semplice PIC per la generazione dei segnali PPM per i motori e la cosa sembra andare abbastanza bene. Vi riporto il link del video:
A&P Webmasters - Siti Web, Robotica, Elettronica, Realtà Virtuale, &...
Il punto è questo: volendo ora passare all'implementazione di un algoritmo di controllo che fa uso di due regolatori pid, vorrei capire meglio come l'uscita del pid, e quindi la legge di controllo, vada ad incidere singolarmente sui motori. In particolare, se associo ogni pid a una coppia di motori (entrambi sullo stesso asse del quadricottero), l'idea sarebbe quella di variare l'angolo di riferimento da zero (assetto stabile) a uno diverso da zero in modo che il quad possa spostarsi in una determinata direzione. A questo punto il pid dovrà generare un valore che dipende dall'errore calcolato come differenza tra l'angolo attuale del quadricottero calcolato con l'ausilio dei sensori e il riferimento scelto da me, e tale valore dovrebbe andare ad incidere sul segnale ppm in ingresso ai due motori in modo differente in maniera tale che un motore deceleri e uno acceleri. E' giusto o mi sbaglio? Se è così vorrei cercare di capire in che modo ciò possa essere fatto, intendo proprio in termini matematici o almeno algoritmici. Penso che in maniera molto semplice potrei sommare con un segno diverso per i due motori il valore restituito dal pid ad una durata di base dell'impulso che invio all'esc e da cui dipende la quota del quadricottero.
Inoltre, vorrei capire come potrei tener in conto nei due regolatori anche della rotazione del quadricottero lungo il proprio asse perpendicolare al terreno (yaw) senza il bisogno di dover implementare un ulteriore regolatore e se ciò possa inficiare e in che modo su quanto ho detto prima per il controllo degli angoli di pitch e roll.
In ogni caso penso che sarebbe comodo avere un modello dinamico del multirotore in modo da poter provare tutto al simulatore. Avete idea di dove potrei prendere qualcosa di già fatto?
Spero di essere stato abbastanza chiaro. Grazie a tutti anticipatamente...
Commenta