Go Down

Topic: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo (Read 132 times) previous topic - next topic

samu_87

Ciao ragazzi, io sono in procinto di costruire un quadricottero, ho acquistato il necessario e ora sto provando a creare l'algoritmo per bilanciare due motori posti su un'asse (è la base di partenza) con scarsi risultati però.

Lavoro con un Arduino Mega2560 e un sensore giroscopio accelerometro GY-521, riesco a leggere i dati raw (che forse sono un po' ballerini) ma non ci sono dati aberranti. Volevo capire se avete consigli su un filtro semplice da utilizzare sui dati e la logica con la quale essi modificano l'output suoi motori. Se avete esempi consigli vi ringrazio molto anticipatamente.

lesto

Guarda sulla mia firma il progetto quadrilatero completo, ma occhio che non credo sia veramente completo, non ricordo se ho aggiornato il codice. Però è una base di partenza. In pratica ora fai così: invia i dati letti al pc e crea una guida che visualizzi un oggetto 3d che farai muovere con il sensore. Quando questo è ok puoi passare alla fase braccio, poi alla fase quad, ed ifine volo
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

samu_87

Ho fatto qualche passo avanti, vi posto il video del risultato (ancora in beta) che ho ottenuto applicando un PID per cercare di bilanciare un asse: https://www.youtube.com/watch?v=Jo9mfy4mhxg

Ho notato però che l'input del sensore è poco uniforme, quindi per procedere devo assolutamente implementare un filtro di kalman come questo http://www.gioblu.com/tutorials/programmazione/98-filtro-di-kalman-con-arduino ma ho una domanda da niubbo, l'algoritmo nel link mi permette di filtrare solo un asse giusto?! Nel programma finale, avrò bisogno di controllare 2 assi quindi devo implementare 2 kalman e due PID?!

Grazie anticipate!

astrobeed


Ho fatto qualche passo avanti, vi posto il video del risultato (ancora in beta) che ho ottenuto applicando un PID per cercare di bilanciare un asse: https://www.youtube.com/watch?v=Jo9mfy4mhxg


Direi che sei sulla buona strada :)

Quote

Ho notato però che l'input del sensore è poco uniforme, quindi per procedere devo assolutamente implementare un filtro di kalman come questo http://www.gioblu.com/tutorials/programmazione/98-filtro-di-kalman-con-arduino ma ho una domanda da niubbo,


Si ti serve un Kalman, ma non quella cosa che trovi sul tutorial che hai linkato, è tutto meno che un vero Kalman :)
Il Kalman lo applichi a tutto il sistema, ovvero a tutti i d.o.f., e questo richiede un grosso lavoro di analisi matematica e devi anche conoscere in modo abbastanza preciso le funzioni di trasferimento del sistema altrimenti te lo scordi di implementare un Kalman che sia realmente preciso.
Potresti optare per la soluzione di Lesto che utilizza solo la DCM, molto più semplice da implementare e offre lo stesso buoni risultati.
Ovviamente c'è sempre la questione pid, che è tutt'altro che secondaria, e da quello che hai scritto qui direi che non hai le idee molto chiare su cosa sia e come funziona il pid  :)
Ti consiglio di cercare il corso pid di Livio Orsini, lo trovi in formato pdf liberamente scaricabile, è la miglior introduzione possibile al mondo del pid che, dietro l'apparente semplicità della formulazione canonica, nasconde molte insidie e alberga il maligno (come direbbe Bonolis  :smiley-mr-green: ).

astrobeed


Go Up