Official topic: multicotteri con arduino!

milvusmilvus:

Con Arduino non puoi fare navigazione in real time su un UAV perchè non ha abbastanza potenza di calcolo. Intendiamoci nulla vieta di implementare routine matematiche a 64 bit su una cpu a 8 bit, del resto le prime calcolatrici tascabili scientifiche utilizzando processori a 8 bit, gettonatissimo lo Z80, e facevano calcoli precisissimi con risoluzione anche maggiore di 64 bit, però erano lente, per fare un logaritmo, una esponenziale o una qualunque operazione trigonometrica ci mettevano decimi di secondi, i calcoli di rotta richiedono decine di queste operazioni per ogni iterazione.

per real time, intendevo 0,5s o 1s, cosi da poterle fare comunqe, ovviamente ad una certa distanza deve inziare a rallentare...

Il tuo cellulare ha sicuramente un processore a 32 bit, un ARM, un MIPS o un Freescale, da qualche centinaio di MHz, potrebbe avere anche un DSP, e di sicuro non ha problemi a macinare calcoli a 64 bit.

mi hai fatto venire un dubbio.... ora mi informo :D

Se ti dico la reale precisione di un GPS militare mi arrestano, sono informazioni riservate, ti dico solo che è migliore di quello che pensi, però il GPS, sulle armi, viene utilizzato esclusivamente sui missili a lunga gittata, p.e. i cruise, e non è lo strumento di rotta primario. Sulle armi ad uso immediato, come le bombe intelligenti, si usano gli illuminatori laser perché non servirebbe a nulla un GPS in questo caso, non perché non offre la necessaria precisione, ma perché è impossibile prendere al volo le coordinate del bersaglio ed è necessario un certo tempo per avviare il gps ed ottenere il fix, per non parlare del fatto che è facilissimo disturbarlo e che potrebbe essere non disponibile per via delle condizioni meteo.

per quanto siano precisi dubito che scendano sotto i 10cm, 1 perche è inutile per un missile :D, 2 perche anche una variazione di pressione atmosferica influisce sulla velocità del onda che invia il sengale

Il mio telefono è del 2008 ed ha una CPU qualcomm a 540Mhz :P:P

milvusmilvus: 2 perche anche una variazione di pressione atmosferica influisce sulla velocità del onda che invia il sengale

Questa non l'ho capita, il GPS usa onde radio micrometriche, la pressione atmosferica non ha nessun effetto sulla velocità del segnale. Forse volevi dire che tocca tenere conto degli effetti relativistici dovuti alle differenze di velocità e gravità tra l'orologio del ricevitore sulla terra e l'orologio posto sul satellite, errore che ha un valore massimo di circa 23 ns però varia in funzione della posizione orbitale del satellite e deve essere calcolato ad ogni ciclo di ricezione.

astrobeed: Questa non l'ho capita, il GPS usa onde radio micrometriche, la pressione atmosferica non ha nessun effetto sulla velocità del segnale. Forse volevi dire che tocca tenere conto degli effetti relativistici dovuti alle differenze di velocità e gravità tra l'orologio del ricevitore sulla terra e l'orologio posto sul satellite, errore che ha un valore massimo di circa 23 ns però varia in funzione della posizione orbitale del satellite e deve essere calcolato ad ogni ciclo di ricezione.

veramente mi riferivo al fatto che le onde radio nel vuoto viaggiano a 300'000 km al secondo, nell aria a un po meno, con la pressione diferente dell aria la variazione c'è, anche se forse è trascurabile, poi come hai detto tu c'è l' errore dovuto agli orologi....non si avrà mai una precisione al mm.

i medoti di navigazione posso essere: 1) dico allo uav di fare 100m verso nord, lui a causa della circonnferenza terrestre avra un certo errore(non calcolando a 64bit) 2) dico di recarsi ad un certo punto, caloca l' itinerario iniziale e lo raggiunge con un certo errore(non calcolando a 64bit) 3)dico di recarsi ad un certo punto, caloca l' itinerario iniziale e lo raggiunge con un certo errore, ripete il calcolo e riduce l' errore, e cosi via (non calcolando a 64bit)

io invece, volevo fare un sistema molto piu grezzo, e semplice, in pratica siccome per 2 punti passa solo una linea retta(per semplificare supponiamo i punti alla stessa altezza da terra, e senza ostacoli tra di loro) una bussola di bordo dice in che direzione è rivolto il mezzo, si calcola l' angolazione rispetto a questo verso del punto di arrivo, e si fa ruotare di tot gradi, poi sapendo la distanza(ricalcolandola ogni secondo) mi dirigo verso il viewpoint, quando la distanza sarà inferiore ad un certo numero si ferma. come non farlo schiantare a terra?? n sensore gli dice di mantenere un altezza costante.

approposito, oltre ai barometri, che non sono precisissimi, ed agli ultrasuoni, che funzionano solo a piccole distanze, ci sono dei telemetri laser per arduino?

milvusmilvus: approposito, oltre ai barometri, che non sono precisissimi, ed agli ultrasuoni, che funzionano solo a piccole distanze, ci sono dei telemetri laser per arduino?

Come sensore altimetrico usa usa il BMP085, facilmente reperibile e costa 7 Euro (solo chip), ho avuto modo di provarlo a lungo e posso confermare che la risoluzione riportata dal data sheet, circa +/- 25 cm, è reale anche se al costo di una serie abbastanza complessa di calcoli, ovviamente deve essere installato all'interno di una camera con presa d'aria statica. Gli ultrasuoni puoi usarli solo per l'avvicinamento finale al suolo, diciamo da tre metri fino all'atterraggio, c'è il problema che i classici sensori a 40 kHz funzionano malissimo sull'erba e sono facilmente influenzati dalle armoniche delle vibrazioni dovute ai rotori, per quanto equilibri ci saranno sempre, l'ideale è utilizzare sensori a 200 kHz, purtroppo non facilmente reperibili e costosetti. Un telemetro laser è un oggetto abbastanza ingombrante, pesante e molto costoso, il più economico che puoi trovare è il metro laser della Stanley, circa 100 Euro, però non prevede nessuna interfaccia, tocca hackerarlo, e ci mette diversi secondi per fare la misura, praticamente inutile. Tra parentesi stavo valutando proprio in questi giorni la realizzazione di un progetto Arduino Based che ho battezzato AlVarIno, è un Altimetro con Variometro realizzato con il BMP085 e un micro dedicato (devo decidere quale) che fa tutti i conti e fornisce direttamente la quota e il rateo di salita/discesa aggiornandoli 30 volte al secondo, il tutto interrogabile tramite I2C o Seriale/RS485.

milvusmilvus: io invece, volevo fare un sistema molto piu grezzo, e semplice, in pratica siccome per 2 punti passa solo una linea retta(per semplificare supponiamo i punti alla stessa altezza da terra, e senza ostacoli tra di loro) una bussola di bordo dice in che direzione è rivolto il mezzo, si calcola l' angolazione rispetto a questo verso del punto di arrivo, e si fa ruotare di tot gradi, poi sapendo la distanza(ricalcolandola ogni secondo) mi dirigo verso il viewpoint, quando la distanza sarà inferiore ad un certo numero si ferma. come non farlo schiantare a terra?? n sensore gli dice di mantenere un altezza costante.

Io chiedevo perchè mi serve per grosse distanze, e non nell'ambito quadricottero.. per piccole distanze secondo me con coordinate cilindriche o sferiche risolvi tutti i tuoi problemi (dipende da come vuoi implementare il controllo sull'altezza)

ovviamente pirma si provera con altezze uguali… poi si implementa il controllo del altezza dal suolo, che non dovrebbe essere difficile da tenere con un il multiwii, il controllo si puo fare con un barometro per grandi altezze, o con un sensore ad ultrasuoni

non si puo costruire con arduino un telemetro laser??? il funzionamente è abbastanza semplice, ma non ho capito come fa a capire quanto il laser colpisce l’ oggetto, non credo che venfa riflesso per centinaia di metri…

superlol: un quadri in media vola a 40km/h per 15 minuti, raggiungerebbe nei casi migliori diciamo il km.

Veramente se uno fa 40km in 1 ora, in 15 minuti che e' 1/4 di ora fa 40/4km, quindi ne fa 10, non 1. In tutti i video che ho visto, quelli che li lanciavano "a bomba" facevano il km in un attimo... F

Federico:

superlol: un quadri in media vola a 40km/h per 15 minuti, raggiungerebbe nei casi migliori diciamo il km.

Veramente se uno fa 40km in 1 ora, in 15 minuti che e' 1/4 di ora fa 40/4km, quindi ne fa 10, non 1. In tutti i video che ho visto, quelli che li lanciavano "a bomba" facevano il km in un attimo... F

io ho visto video di tricotteri che toccavano punte di 60 km/h ma lanciandoli al massimo della potenza consumano molto di piu.... e la durata arriva a 5 min....

milvusmilvus: io ho visto video di tricotteri che toccavano punte di 60 km/h ma lanciandoli al massimo della potenza consumano molto di piu.... e la durata arriva a 5 min....

La velocità massima arriva senza problemi anche oltre i 100 km/h, esattamente come per un modello di elicottero. Un classico errore è confondere la potenza necessaria per accelerare e quella necessaria per il volo, quando si passa dal volo stazionario a quello traslato le quattro eliche diventano a tutti gli effetti un'ala con la conseguente portanza, più veloci si vola e meno potenza serve per sostenere il mezzo. Ovviamente c'è un punto oltre il quale la resistenza aerodinamica invalida l'effetto portante dei rotori e serve maggiore potenza per volare rispetto a quella per il volo stazionario. Quale sia la velocità massima per il volo traslato ove si raggiunge la massima efficienza, cioè minor consumo di energia in funzione dello spazio percorso, dipende da molti fattori, però mi sento di azzardare che per un quadricottero ben costruito sia attorno ai 30-35 km/h, diciamo che se in hovering le batterie durano 10 minuti in questa condizione di volo durano almeno 13-14 minuti.

milvusmilvus: il funzionamente è abbastanza semplice, ma non ho capito come fa a capire quanto il laser colpisce l' oggetto,

In teoria è semplicissimo, in pratica è complicatissimo, tanto per cominciare la luce in un nanosecondo percorre circa 29.8 cm (nell'aria la velocità della luce è circa 298.000 km/s), quindi primo problema come misurare il tempo con la risoluzione di almeno 1 ns per avere la precisione spannometrica di +/-30 cm. Secondo problema, per vedere il riflesso del laser con la necessaria rapidità serve un costosissimo fotodiodo a valanga e un delicatissimo amplificatore a rumore praticamente 0 e banda ultra ampia, parliamo di GHz. Terzo problema, raccogliere molta luce in poco tempo se non si vuole fare la misura in tempi lunghissimi perché vengono usati treni d'impulsi laser successivi in tempi molto precisi per aumentare la quantità di luce ricevuta e migliorare la sensibilità del sensore. Tutto questo ha un costo enorme se non fai una produzione in serie di molte unità, per non parlare delle varie competenze in campo analogico e digitale necessarie per il progetto. Non è che i telemetri laser costano un capitale, da qualche centinaio a diverse migliaia di Euro, per un capriccio dei produttori, costano tanto perché c'è un elevato costo dei componenti, non ultimo il laser stesso che non è certo il puntatorino cinese, e di sviluppo del progetto. Esistono sistemi di misura della distanza tramite laser che non utilizzano il tempo di volo, p.e. tramite misura dell'angolo di fase di una portante a 100-150 MHz che modula il laser, ma risolvono solo il problema della misura del tempo a livello del picosecondo ( 3 mm di risoluzione), tutti gli altri rimangono immutati. Esistono anche sistemi telemetrici basati sull'errore di parallasse leggendo la posizione apparente del punto laser tramite una telecamera, ma richiedono la potenza di calcolo di un processore molto veloce per via dell'analisi tramite visione artificiale e pure questi sono ingombranti e pesanti. Per farla breve scordati il telemetro laser sul quadricottero e scordati di realizzarlo con Arduino.

astrobeed:

milvusmilvus: io ho visto video di tricotteri che toccavano punte di 60 km/h ma lanciandoli al massimo della potenza consumano molto di piu.... e la durata arriva a 5 min....

La velocità massima arriva senza problemi anche oltre i 100 km/h, esattamente come per un modello di elicottero. Un classico errore è confondere la potenza necessaria per accelerare e quella necessaria per il volo, quando si passa dal volo stazionario a quello traslato le quattro eliche diventano a tutti gli effetti un'ala con la conseguente portanza, più veloci si vola e meno potenza serve per sostenere il mezzo. Ovviamente c'è un punto oltre il quale la resistenza aerodinamica invalida l'effetto portante dei rotori e serve maggiore potenza per volare rispetto a quella per il volo stazionario. Quale sia la velocità massima per il volo traslato ove si raggiunge la massima efficienza, cioè minor consumo di energia in funzione dello spazio percorso, dipende da molti fattori, però mi sento di azzardare che per un quadricottero ben costruito sia attorno ai 30-35 km/h, diciamo che se in hovering le batterie durano 10 minuti in questa condizione di volo durano almeno 13-14 minuti.

1° legge della dinamica: un corpo non soggetto a nessuna forza si muove di moto rettilineo uniforme 2° legge della dinamica (1° di Newton): F=ma

questo dovrebbe farti capire che una volta portato alla giusta velocità basta che il quadri si stabilizzi orizzontalmente e sostenga solo il suo peso (tipo hovering) che manterrà la sua velocità (ok c'è l'attrito dell'aria ma avete capito il senso).

comunque tornando sul tema del posizionamento come ho detto non possiamo prendere valori come se si muovesse su un piano senza avere troppe complicazioni e calcoli strani? tanto poi sulla terza dimensione agisce il barometro (io non mi fido dell'altitudine dettata dai GPS, la trovo molto approssimativa)

superlol: comunque tornando sul tema del posizionamento come ho detto non possiamo prendere valori come se si muovesse su un piano senza avere troppe complicazioni e calcoli strani? tanto poi sulla terza dimensione agisce il barometro (io non mi fido dell'altitudine dettata dai GPS, la trovo molto approssimativa)

Il problema di base sono le coordinate del GPS, come ho già puntualizzato non sono riferite ad un piano, sono corrette in base ad un modello geodetico della terra, ed è questo che complica notevolmente le cose, oltre al fatto che comunque ti muovi in uno spazio 3D e i calcoli ne devono tenere conto.

pensavo vi fossero sistemi telemetrici, lowcost e con precisione “ridicola” diciamo che 10 cm di errore mi basterebbero, tanto un eventuale atterraggio lo farei con il sensore ad ultrasuoni… che ha altri problemi… comunque era solo curiosità.

un corpo a 60km/h ne ha di attrito… per questo io voglio fare un tricottero piu aredinamico possibile…

per piccole distanze si puo considerare il piano a 2 diimensioni, ed affidare il cacolo l’ altezza al barometro o fare una retta tra i due punti ache obliqua. ma senza tener conto della sfericità terrestre, se poi devi fare qualche km… allora ildiscorso cambia

le coordinate de tipo, 40° 16’ 40" N e 16°… E sono riferite al piano, e mni pare che non tengano conto dell altrezza, comunque prendi l’ angolo rispetto al nord, da una posizione ad un altra e ti movi con quell angolo finche la dinzanza non diventa <x le coordinate possono anche essere espresse in patate si dovrebbe raggiungere comunque la meta :smiley:

spiego meglio;
asse y —>nord-sud
asse x —> est ovest

suppongo di stare nella posizione 0;0 e di dover andare nella posizione 5;5 la bussola mi dice che sono diretto (la parte d’avanti) verso il lato positivo dell asse y, quindi nord, per andare nel punto 5;5 mi devo girare di 45°, e spostarmi di ?50. se faccio cosi la sfericità terrestre crea problemi.
invece se mi giro di 45° e inizio ad andare avanti, finchè la posizione letta dal gps(il punto in cui mi trovo) è uguale a quella del punto in cui devo andare, è zero non dovrei avere problemi, oviamente bisogna evitare di spuperare il punto, correggere l’ angolo in caso di vento, rallentare al momento opportuno ecc

milvusmilvus:
le coordinate de tipo, 40° 16’ 40" N e 16°… E sono riferite al piano

Eccome se tengono conto dell’altezza, infatti il GPS raggiunge la massima precisione solo quando aggancia almeno 4 satelliti e può misurare anche la quota.
Altro punto importante, le coordinate non semplicemente gradi minuti e secondi, ci sono pure i centesimi/millesimi di secondo altrimenti te la scordi la precisione, ho già spiegato a quanto corrisponde un singolo secondo d’arco come spazio reale.
Tutte queste cose messe assieme rendono il problema molto più complesso di come può sembrare ad una prima analisi superficiale.

40°35'41.97"N 16° 9'30.30"E queste sono delle coordinate prese con il mio cellulare, sono per un rilevamento faunistico, e sono abastanza precise per essere usate, per ritrovare il posto (una pietra in mezzo al fiume) i gps tengono anche conto dell' altezza, ma le coordinate che restituiscono sono riferite al piano, poi si aggiunge l' altezza

42459/360 = 117.94166666667

117.942/60 = 1.9657

1.9657/60 = 33cm

33cm è la distanza (all'equatore) tra 2 secondi di longitudine.

ho sbagliato i calcoli? :roll_eyes:

anche se dovremmo contare che per semplificari i conti sarebbe meglio ragionare non in gradi primi secondi ma in gradi decimali

A me torna che 1" sono 30,9m

La circonferenza terrestre, all'equatore, sono esattamente 40.000 km pertanto 1 secondo d'arco vale :

40000/(360*60*60) = 0.0309 km = 30.9 metri.

In un post precedente avevo erroneamente scritto 300 metri, comunque il succo del discorso non cambia, occorre tenere conto almeno dei centesimi di secondo, meglio se dei millesimi, alcuni GPS arrivano addirittura a computare i decimillesimi. Ovviamente le ultime cifre delle coordinate cambiano in continuazione per via dell'errore che ha una sua variazione ciclica, però vengono utilizzate per mediare i vari conteggi e migliorare la precisione globale, più o meno lo stesso discorso di quando si prendono più campioni dall'ADC per poi farne la media in modo da ridurre il rumore. Da non scordarsi che un conto è la reale precisione e un conto è la risoluzione di una misura, nel caso del GPS la risoluzione è molto alta, però la reale precisione è almeno un ordine di grandezza minore.

Ho montato al volo su una breadboard, vedere immagine allegata, la schedina del Wii Mote Plus e un accelerometro ADXL345, ho riconfigurato lo sketch di multiwii per questa configurazione, è stato necessario riconfigurare anche l’assegnazione degli assi, e ho messo il tutto sotto torchio.
Dopo oltre due ore di funzionamento continuato non ho riscontrato nessuno sganciamento del Wii Mote Plus come paventato dall’autore del software, però il problema potrebbe dipendere dalla configurazione Nunchuk più WMP, nel mio caso sto usando un accelerometro diverso.
Per il momento il tutto pare comportarsi bene, ho provato ad agitare non poco il gruppo sensori senza riscontrare sostanziali perdite di assetto inteso come capacità di livellare il multicottero, anche perché più di questo il multiwii non può fare.

potresti fare la stessa prova ma facendo andare il WMP a 400.000kbit/s, modificando adeguatamente il twi.h, secondo le specifiche (e provato di persona) funziona. WMP+nunchuck oltre all'obbligo di viaggiare a 100.000kbit/s e di fare una lettura ogni 3ms, pena sovrapposizione dei dati, per ora mi hanno funzionato senza problemi, farò a breve una prova a lungo termine... per ora gli unici problemi li ho avuti col nunchuck da solo in fase di inizializzazione(si blocca l'inizializzazione), ma per ora non si è più verificato. Che codice stai usando?

edit: è ancora prematuro, ma per schiarirmi le idee: che magnetometro consigliate? quali specifiche e perchè deve avere per essere scelto? stessa cosa per il barometro.