Originariamente inviato da arnaldo
Visualizza il messaggio
annuncio
Comprimi
Ancora nessun annuncio.
MultiWii Quad! Alternativa ad Aeroquad/Baronpilot con sensori wii
Comprimi
X
-
-
codice:// Rotate Estimated vector(s), ROLL deltaGyroAngle = gyroADC[ROLL] * deltaTime; EstG.V.Z = scos(deltaGyroAngle) * EstG.V.Z - ssin(deltaGyroAngle) * EstG.V.X; EstG.V.X = ssin(deltaGyroAngle) * EstG.V.Z + scos(deltaGyroAngle) * EstG.V.X; #if defined(MAG) EstM.V.Z = scos(deltaGyroAngle) * EstM.V.Z - ssin(deltaGyroAngle) * EstM.V.X; EstM.V.X = ssin(deltaGyroAngle) * EstM.V.Z + scos(deltaGyroAngle) * EstM.V.X; #endif // Rotate Estimated vector(s), PITCH deltaGyroAngle = gyroADC[PITCH] * deltaTime; EstG.V.Y = scos(deltaGyroAngle) * EstG.V.Y + ssin(deltaGyroAngle) * EstG.V.Z; EstG.V.Z = -ssin(deltaGyroAngle) * EstG.V.Y + scos(deltaGyroAngle) * EstG.V.Z; #if defined(MAG) EstM.V.Y = scos(deltaGyroAngle) * EstM.V.Y + ssin(deltaGyroAngle) * EstM.V.Z; EstM.V.Z = -ssin(deltaGyroAngle) * EstM.V.Y + scos(deltaGyroAngle) * EstM.V.Z; #endif // Rotate Estimated vector(s), YAW deltaGyroAngle = gyroADC[YAW] * deltaTime; EstG.V.X = scos(deltaGyroAngle) * EstG.V.X - ssin(deltaGyroAngle) * EstG.V.Y; EstG.V.Y = ssin(deltaGyroAngle) * EstG.V.X + scos(deltaGyroAngle) * EstG.V.Y; #if defined(MAG) EstM.V.X = scos(deltaGyroAngle) * EstM.V.X - ssin(deltaGyroAngle) * EstM.V.Y; EstM.V.Y = ssin(deltaGyroAngle) * EstM.V.X + scos(deltaGyroAngle) * EstM.V.Y; #endif // Apply complimentary filter (Gyro drift correction) // If accel magnitude >1.4G or <0.6G => we neutralize the effect of accelerometers in the angle estimation. // To do that, we just skip filter, as EstV already rotated by Gyro if (!((36 > AccMag) or (AccMag > 196))) { for (axis = 0; axis < 3; axis++) EstG.A[axis] = (EstG.A[axis] * GYR_CMPF_FACTOR + ACC_VALUE) * INV_GYR_CMPF_FACTOR; } // Attitude of the estimated vector angle[ROLL] = _atan2(EstG.V.X, EstG.V.Z); angle[PITCH] = _atan2(EstG.V.Y, EstG.V.Z); GEstG = EstG; #if defined(MAG) // Apply complimentary filter (Gyro drift correction) for (axis = 0; axis < 3; axis++) EstM.A[axis] = (EstM.A[axis] * GYR_CMPFM_FACTOR + MAG_VALUE) * INV_GYR_CMPFM_FACTOR; // Attitude of the cross product vector GxM heading = _atan2(EstG.V.Z * EstM.V.X - EstG.V.X * EstM.V.Z, EstG.V.Y * EstM.V.Z - EstG.V.Z * EstM.V.Y) / 10; #endif }
Questo e' il codice di compensazione .... ;)
Uguale a quello di Arducopter di 6 mesi fa' .. ;)
L'unica cosa da verificare e' il posizionamento dei sensori ... in base all'accelerometro e al magnetometro usato la posizione deve essere allineata ... io di solito per trovare la taratura corretta , mi metto con quad a nord e poi sposto il magnetometro finche' non mi legge correttametne il nord ... alla fine provo a ruotare di 90 gradi il quad facendo le prove di rotazione su roll e pitch .. alla fine quando trovo la corrispondenza giusta ho solo 2-3 gradi con inclinazioni anche oltre i 60 gradi.
Saluti
RobertoRedfox74
Virtual Robotix ( Arducopter DEVTEAM )
http://www.virtualrobotix.com
Canale di supporto FB
https://www.facebook.com/groups/1606596929592397/
Commenta
-
sinceramente il baro sempra funzionare abbastanza bene ora...con la mod di Patrik riesco a stare entro 50cm e direi che e molto buono...ora ha preparato una nuova versione per la dev e dice che andrà meglio....la proverò domani e vi sapro dire...
il magneto funziona benissimo sul piano...qiuindi quando sono in hovering direi che va molto bene...ma quando vado sull asse pitch o roll la coda inizia a scompensarsi di brutto....ancora cmq devo provarla in vola con la DEV.
per il resto sono molto felice della IMU ALLINONE devo dire che l itg e il bma180 sono nettamente migliori dei sensori wii.... o meglio questa è la prima impressione che mi hanno dato in questi giorni!
cmq...riguardando la gui...pitch in avanti di circa 60gradi spostamento della bussola anche di 90, pitch indietro anche di 90 bussola immobile...roll invece in entrambi i sensi la bussola è un casino!Ultima modifica di arnaldo; 05 maggio 11, 00:18.
Commenta
-
Ciao Roberto, ti prego di non fare polemica gratuitamente, non mi sembra sia il caso, le tue opinioni sono più o meno condivisibili ma molti altri utenti la pensano diversamente.
Che il codice sia caotico e incomprensibile è abbastanza discutibile e comunque potrebbe essere detto benissimo di molti altri progetti che sebbene ordinati per certi aspetti sono estremamente frammentati e pasticciati sotto altri.
Non è separando qualche funzione in sketch diversi che magicamente tutto funziona meglio.
Fare confronti tra tante piattaforme non è facile e bisogna avere molta esperienza su frangenti anche molto distanti tra loro, per esprimere giudizi davvero imparziali.
Quindi forse è meglio limitarsi ai dettagli tecnici e ad approfondire le differenze di implementazione e magari arricchire questo o quel progetto con le implementazioni migliori, senza troppo scagliarsi per partito preso contro una o l'altra piattaforma...Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
Originariamente inviato da redfox74 Visualizza il messaggioBah ,
scusa ma a cosa ti riferisci .. a me risulta .. invece tutto un'altro scenario .. AQ 2.x e' un firmware che a livello di qualita' e' avanti anni luce sia rispetto a MultiWii che a Arducopter NON ha di certo bisogno di MultiWii per evolvere anche perche' mi sembra abbastanza la situazione contraria , il codice di MW e' talmente caotico che non si capisce ormai piu' nulla , e anche alex se n'e' accorto tanto che nell'ultima revisione ha iniziato a riorganizzare il codice in file .. cosa non fatta fino alla versione 1.7.
Uno dei piu' grandi limiti della multiwii e' sicuramente l'accanirsi nell'usare il bus i2c per leggere i sensori ... a breve implodera' come e' gia' accaduto a noi sul progetto arducopter che infatti per i sensori usiamo ormai la SPI e non piu' l'i2c .
Che i quad basati su arducopter cadono come mosche non mi risulta , poi dipende se chi ci mette le mani non sa' come muoversi un progetto complesso non puo' essere preso alla leggera ;)
Evvai un po' di polemica ;)
A fronte di una bellissima architettura (è per questo che l'ho scelto ormai un anno fa) le funzionalità sono spesso approssimative, alcuni esempi, Il modo stabile (ora attitude mode )dopo qualche minuto di volo va in palla, la vantata compatibilità con sensori multipli si è fermata già nell'integrazione di Wii che nessuono riesce a far funzionare su AQ2.4, è stata presentata con enfasi la imu ARG e MARG fermorestando che la MARG non gestisce alcora la Bussola !!??, per il GPS mi risulta che l'unico AQ volante con GPS è il mio che usa una AQ2.01 molto custom (c'è un esperimento di adamson che però è incoerente con parte degli sviluppi attuali ... ne potrei dire tante ma la cosa più significativa che vedo è che molti utenti AQ si stanno spostando su MWii e che è praticamente impossibile vedere un volo veramente stabile e manovrato fatto da un AQ (forse perchè mancano i piloti !!??).
Su un tema che sono sicuro ti sta a cuore il main loop è stato limitato a 100 Hz già su Arduino che di per se potrebbe andare al triplo .... e questa secondo te sarebbe una soluzione di avanguardia ... per me si tratta di un' eccellente architettura ad oggeti (grande Mikro) con mediocri funzionalità ... al contrario Mwii Vola bene è relativamente facile da mettere a punto e gode di sviluppi HW e SW della più svariata specie e questo è oltremodo divertente ....
P.S. per pulizia la piattaforma che mi piace di più è il Baronpilot del buon Ciskye
ciao
Commenta
-
Originariamente inviato da arnaldo Visualizza il messaggiocmq...riguardando la gui...pitch in avanti di circa 60gradi spostamento della bussola anche di 90, pitch indietro anche di 90 bussola immobile...roll invece in entrambi i sensi la bussola è un casino!Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
codice:void AP_Compass_HMC5843::calculate(float roll, float pitch) { float headX; float headY; float cos_roll; float sin_roll; float cos_pitch; float sin_pitch; Vector3f rotmagVec; cos_roll = cos(roll); // Optimizacion, se puede sacar esto de la matriz DCM? sin_roll = sin(roll); cos_pitch = cos(pitch); sin_pitch = sin(pitch); // rotate the magnetometer values depending upon orientation if( orientation == 0 ) rotmagVec = Vector3f(mag_x+offset[0],mag_y+offset[1],mag_z+offset[2]); else rotmagVec = orientation_matrix*Vector3f(mag_x+offset[0],mag_y+offset[1],mag_z+offset[2]); // Tilt compensated magnetic field X component: headX = rotmagVec.x*cos_pitch+rotmagVec.y*sin_roll*sin_pitch+rotmagVec.z*cos_roll*sin_pitch; // Tilt compensated magnetic field Y component: headY = rotmagVec.y*cos_roll-rotmagVec.z*sin_roll; // magnetic heading heading = atan2(-headY,headX); // Declination correction (if supplied) if( declination != 0.0 ) { heading = heading + declination; if (heading > M_PI) // Angle normalization (-180 deg, 180 deg) heading -= (2.0 * M_PI); else if (heading < -M_PI) heading += (2.0 * M_PI); } // Optimization for external DCM use. Calculate normalized components heading_x = cos(heading); heading_y = sin(heading); }
Redfox74
Virtual Robotix ( Arducopter DEVTEAM )
http://www.virtualrobotix.com
Canale di supporto FB
https://www.facebook.com/groups/1606596929592397/
Commenta
-
Originariamente inviato da jhoexp Visualizza il messaggioSei sicuro di avere sistemato correttamente l'orientamento del magnetometro nel codice?
pero ripeto...in hovering corregge bene!
Commenta
-
Originariamente inviato da ziojos Visualizza il messaggione potrei dire tante ma la cosa più significativa che vedo è che molti utenti AQ si stanno spostando su MWii e che è praticamente impossibile vedere un volo veramente stabile e manovrato fatto da un AQ (forse perchè mancano i piloti !!??).
Io comunque ne ho fatti diversi di voli con aq con le vecchie release, ma spesso si inchiodava o non sentiva il comando, il pid era ostico e per volare decentemente erano necessari molte ore di tuning, alla fine l'ho schiantato un sacco di volte senza grandi soddisfazioni. Poi a settembre ho aperto questo thread....
Con la 2.4 ho volato solo la settimana scorsa per qualche minuto, ma il mese prima con la precedente release e tutti i sensori "ufficiali" (che assurdità la sua enorme shield!! ) ho comunque avuto problemi, a partire dal configuratore che con la dcm ha comportamenti ancora un po' strani e non molto coerenti.
Certo è ben strutturato, ma per ora non posso che capire chi migra verso multiwii...d'altronde io ho fatto lo stesso.Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
Originariamente inviato da ziojos Visualizza il messaggioNon è per polemica, sono su AQ con grande soddisfazione, ma sto osservando cose strane,
A fronte di una bellissima architettura (è per questo che l'ho scelto ormai un anno fa) le funzionalità sono spesso approssimative, alcuni esempi, Il modo stabile (ora attitude mode )dopo qualche minuto di volo va in palla, la vantata compatibilità con sensori multipli si è fermata già nell'integrazione di Wii che nessuono riesce a far funzionare su AQ2.4, è stata presentata con enfasi la imu ARG e MARG fermorestando che la MARG non gestisce alcora la Bussola !!??, per il GPS mi risulta che l'unico AQ volante con GPS è il mio che usa una AQ2.01 molto custom (c'è un esperimento di adamson che però è incoerente con parte degli sviluppi attuali ... ne potrei dire tante ma la cosa più significativa che vedo è che molti utenti AQ si stanno spostando su MWii e che è praticamente impossibile vedere un volo veramente stabile e manovrato fatto da un AQ (forse perchè mancano i piloti !!??).
Su un tema che sono sicuro ti sta a cuore il main loop è stato limitato a 100 Hz già su Arduino che di per se potrebbe andare al triplo .... e questa secondo te sarebbe una soluzione di avanguardia ... per me si tratta di un' eccellente architettura ad oggeti (grande Mikro) con mediocri funzionalità ... al contrario Mwii Vola bene è relativamente facile da mettere a punto e gode di sviluppi HW e SW della più svariata specie e questo è oltremodo divertente ....
P.S. per pulizia la piattaforma che mi piace di più è il Baronpilot del buon Ciskye
ciao
Anche il mio primo amore e' stato aeroquad dopo mikrokopter questo due / tre anni fa' .. poi assieme a Mirko che stimo molto , Jani e Jose abbiamo fondato Arducopter , e abbiamo iniziato a lavore assieme al progetto .. dopo un annetto e' nata la prima versione stabile di Arducopter , che grazie a Jose Julio ha guadagnato la stabilita' invidiabile che AQ ancora non ha oppure ha usando lo stesso codice che avevamo sviluppato assieme su Arducopter , ora Io ho lasciato lo sviluppo di Arducopter 8 bit per dedicarmi a tempo pieno su Arm , il mio loop time e' a 800 hz .. ma sono limitato dai limiti che sto' rimuovendo su i2c .. sto' provando ad andare a 1 khz .. l'ultimo dei miei problemi e' il volo stabile .. su acm che e' un evoluzione di arducopter merge tra arducopter e ardupilot abbiamo anche la navigazione waypoint e la return to home .. quindi se vuoi studiare qualcosa di decisamente avanzato guarda arducoptermega che e' ancora in fase dev e non e' stato ancora rilasciato per gli user , ma lo trovi in repo.
Aeroquad purtroppo piu' che un bel software volabile e' un ottimo banco di test per effettuare sperimentazioni sulle varie funzionalita' piu' che essere un prodotto orientato a piattaforme RTF
Un saluto
RobertoRedfox74
Virtual Robotix ( Arducopter DEVTEAM )
http://www.virtualrobotix.com
Canale di supporto FB
https://www.facebook.com/groups/1606596929592397/
Commenta
-
Ciao Jhoexp ,
in realta' sai che non c'e' l'ho con multiwii .. anzi apprezzo il lavoro fatto da Alex in primis , pero' dire che che MW ha ispirato AQ e Arducopter , mi sembra alquanto fuori luogo ...
Comunque ci mancherebbe sono contento che anche su questa piattaforma si stia iniziano a provare qualcosa di nuovo e sicuramente innovativo come il barometro , il magnetometro e penso a questo punto anche il gps .. quasi ci siamo dai ;)
Per quanto riguarda l'architettura e l'uso del bus i2c continuo ad essere molto scettico .. e se si vuole evitare che realmente i nostri quaddini incomincino a cadere come mosche aumentando il numero di sensori che condividano lo stesso bus , converra' correre ai ripari velocemente ;) L'unica speranza e' quella che esca il prima possibile MPU 6000 con bus spi cosi' si potra' anche senza aggiungere sensori analogici o ad converter come sulla oilpan sfruttare un altro bus e dividere il carico di lavoro.
Un saluto
RobertoRedfox74
Virtual Robotix ( Arducopter DEVTEAM )
http://www.virtualrobotix.com
Canale di supporto FB
https://www.facebook.com/groups/1606596929592397/
Commenta
-
Originariamente inviato da redfox74 Visualizza il messaggioCiao Jhoexp ,
in realta' sai che non c'e' l'ho con multiwii .. anzi apprezzo il lavoro fatto da Alex in primis , pero' dire che che MW ha ispirato AQ e Arducopter , mi sembra alquanto fuori luogo ...
Roberto
Per quanto riguarda l'HW ovviamente apprezzo moltissimo il tuo lavoro ma sono altresì sicuro che il buon Arduino ha ancora tanto da dare .... e che non sia assolutamente utilizzato al suo limite
Commenta
-
Originariamente inviato da ziojos Visualizza il messaggioLa realtà è che molti MWii entusiast stanno sviluppando funzionalità innovative che man mano si diffondono nel WEB ..... poi tutti sappiamo che il mitico PID AQ nasce da quello di una macchinetta per il caffè
Per quanto riguarda l'HW ovviamente apprezzo moltissimo il tuo lavoro ma sono altresì sicuro che il buo Arduino ha ancora tanto da dare .... e che non sia assolutamente utilizzato al suo limite
Quindi grande Alex .. grazie per il tuo lavoro ... per quanto riguarda avr 328 vs Arm Cortex A3 . E' come paragonare una panda con una bella bmw di fascia alta potente e affidabile ... anche la panda ha le sue ottime qualita' .. ci mancherebbe ma la cosa assurda e' che costano uguali .. se tu confronti il prezzo del mio micro e quello di un avr mega , costa di piu' l'avr mega .. allora perche' insistere portandosi dietro tutti i limiti del vecchio micro ? Io penso di avere spinto al massimo con MP8 basata su avr 644P quella fascia di micro , ma ho chiuso li il progetto non tanto per problemi di performances , ma per i limiti sui bus e sulla memoria flash e ram , l'ultima versione di acm occupa 150 kbyte .. e non gira piu' nemmeno sul mega con le ultime funzioni per la gestione della posizioni con la telecamerina da montare sotto il micro .. con arm abbiamo 512 kbyte ... ;)
Notte e grazie della chiacchierata alla prossima .Redfox74
Virtual Robotix ( Arducopter DEVTEAM )
http://www.virtualrobotix.com
Canale di supporto FB
https://www.facebook.com/groups/1606596929592397/
Commenta
-
Francamente red non ti capisco, perchè intervieni in questo ambito (MW) quando è palese che non la digerisci?
P.s. "ma la cosa assurda e' che costano uguali", un arduino nano costa 15-17 euro, quando costa la tua scheda?Informatico Professionista, Amante dei 4x4 e delle auto ibride, costruttore di quadricotteri.
Commenta
-
Originariamente inviato da redfox74 Visualizza il messaggioci mancherebbe ma la cosa assurda e' che costano uguali .. se tu confronti il prezzo del mio micro e quello di un avr mega , costa di piu' l'avr mega .. allora perche' insistere portandosi dietro tutti i limiti del vecchio micro ?
Non so se ultimamente hai/avete cambiato qualcosa in questo senso, ma la mia idea è che se non riesco a capire nemmeno che componenti mi servono, figuriamoci dopo quando sarà ora di collegarli e metterli in funzione
Prendila come una critica costruttiva, il tuo progetto mi interessa, ma devi fare in modo che sia più comprensibile anche da chi non è Ingegnere
Commenta
Commenta