Show Posts
Pages: [1] 2 3 ... 730
1  International / Software / Strano errore di compilazione on: Today at 07:57:55 pm
compilando del codice con la 1.5.6 r2 (non ho testato altre) ottengo il curioso errore:

Code:
FreeIMU/FreeIMU.cpp.o: In function `FreeIMU::update()':
/home/mauro/Arduino/libraries/FreeIMU/FreeIMU.cpp:57: multiple definition of `gyro'
FreeIMU_quaternion.cpp.o:/home/mauro/arduino-1.5.6-r2/hardware/arduino/avr/cores/arduino/HardwareSerial.h:95: first defined here
FreeIMU/FreeIMU.cpp.o: In function `FreeIMU::update()':
/home/mauro/Arduino/libraries/FreeIMU/FreeIMU.cpp:57: multiple definition of `sensors'
FreeIMU_quaternion.cpp.o:/home/mauro/arduino-1.5.6-r2/hardware/arduino/avr/cores/arduino/HardwareSerial.h:95: first defined here

qualche idea? il codice lo trovate quì:
https://github.com/MauroMombelli/freeimu/tree/b357b18314121500143685032ffbe2426729b5a4
2  International / Generale / Re: Consiglio per quadricottero e volo autonomo on: Today at 03:53:19 pm
Se l'ESC lavora a 3.3V tre Volt vanno bene, se lavora a 5V sei realmente al limite.

dovrei vedere, prossima volta che penso di usali cerco i pin di alimentazione da DS e li misuro. però sono gli HK SS (ho anche degli afro, lì in teoria basta vedere gli schemi open.. w l'open xD)

Ovviamente è una risposta basata su un accurato test fatto su circa sei ESC in loro possesso, un dato statistico assolutamente certo e affidabile  smiley-mr-green

è proprio questo che mi preoccupa. Ho fatto i test e vanno, ma sai, il calo momentane di tensione per un botto dei motori, o qualsiasi altra cosa..

per quanto rigurada le schede postate, vrbrain ok, costicchia ma è una scatolotta pronta di tutto etc. etc., ma la seconda postata, la pixhawk, cme giustifica il prezzo? a me sembra sullo stesso livello della prima, ma costa il doppio... cosa mi sfugge?
3  International / Generale / Re: Consiglio per quadricottero e volo autonomo on: Today at 02:13:27 pm
ma il limite di arduino sta nei bit con cui è codificata la rilevazione dei sensori? nel frequenza del processore? qual è il limite?
allora
1. no, i sensori "migliori" (aka quasi tutti quelli consumer, poi oltre non so) contengono la digitalizzazione del valore al loro interno, in modo da sollevarti da una serie di problematiche HW, oltre che fare una pre-elaborazione con filtri, code di valori e altre cosucce che a noi non interessano.
I sensori che hai elencato sono i classici in accoppiata arduino, e sono a 10-12bit, quelli sulla stm32f3 (che uso) sono a 16bit per esempio, ma non avrebbero problemi a funzionare con arduino.
Però se parliamo di calcoli di traiettoria GPS ecco che i float a 16bit (aruino non ha i double) non basterebbero, e nemmeno i 32bit se ricordo bene; bisogna andare di 64 (astro confermerà, anche come alcuni mostreranno che ad ALCUNE latitudni te la puoi cavare con 16/32bit.. tutto dipende dall'arrotondamento smiley )
2. esatto. Come dicevo arduino non ha problemi ad usare i sensori di cui sopra, ma non è in gradi nemmeno di LEGGERLI abbastanza in fretta, in teoria il bus SPI ci sta dietro, ma non la parte SW arduino. parlo di codice arduino, usando C e registri miglioreresti molto (da esami empirici mi pare di aver raggiunto 2000letture/s al massimo)
3. un altro grosso limite è lo SPAZIO per il codice, se osservi i codici ancora arduino based hanno il grosso problema dello spazio (ram, ma sopratutto flash), tanto che anche astro ti ha consigliato la MEGA che non ha più potenza di calcolo, ma ram e flash
4  International / Generale / Re: Consiglio per quadricottero e volo autonomo on: Today at 11:17:17 am
appunto, 3.3V, ma la ST è 3V... per esempio dietro ai miei esc chè un atmega44, se vale lo stesso valore di 1 logico dell'atmega328p, allora sono al limite estremo.

Quando ho chiesto chiarificazione hai ragazzi le uniche risposte che ho avuto sono state "a me funziona", un risposta molto tecnica e ispiratrice di fiducia xD
5  International / Generale / Re: Consiglio per quadricottero e volo autonomo on: Today at 10:58:50 am
non vedo i video, ma n generale arduino oltre alla stabilizzazione angolare non va. Tutto ciò oltre necessita di una board più potente.

Astro, di openpilot (e "clone" taulab) cosa ne pensi? per ora sto usando taulab visto che supporta nativamente la stm32f3 (anche se IMHO la loro idea di usare gli ESC direttamente con i segnali PWM a 3v NON mi piace, io ho previsto dei transistor per portare a 5v) la cosa bella è che è molto semplice creare un modulo.
6  International / Megatopic / Re: Pinout Diagram on: July 30, 2014, 03:10:53 am
Bentornato Astro. E' un po' che non ti si leggeva.  smiley-mr-green

probabilmente dopo aver visto il decollo del mio quad è corso a preparare il rifugio anti-tutto  smiley-mr-green
7  International / Generale / Re: progetto torsiometro on: July 28, 2014, 07:31:40 am
se serve per "salvare" la batteria io direi che l'idea è ok, poi che tu usi un transistor o un ralè o un mosfet poco cambia (io preferirei integrati, i relè sono meccanici e ciò che non c'è..)
8  International / Software / Re: Comunicazione su stessa seriale con due script diversi (soluzione o alternative) on: July 25, 2014, 04:45:55 am
potresti usare un file "dati.txt" per passare i dati;

php crea un file "lock.txt"; se la creazione è senza errori (il file NON esisteva) allora ha il controllo del file dati, e ci scrive dentro la riga. poi cancella il file "lock.txt", di fatto liberando il file dati per essere usato da altre parti. Se invece la creazione del file di lock va in errore (file dati in uso), allora aspetta qualche istante (1 ms è sufficiente) e poi riprova, per 5/10 volte dopo di che da errore (giusto per evitare che il codice superi il tempo massimo di loading della pagina)

Questo serve per evitare che 2 pagine di PHP scrivano contemporaneamente nel file, incasinandosi a vicenda; potresti voler usare una delle librerie di lock file PHP... MA il file dati va usato ANCHE da phyton, e che io sappia non esiste un sistema di lock "portabile" quindi devi usare questo metodo per fare a manina

ora, anche il phyton fa la stessa cosa col file di "lock.txt", quando ottieni il lock leggi il file dati in memoria e SVUOTI il file dati (o lo rinomini) , rilasci il lock, e poi con calma analizzi tutti i coamdni richiesti e li mandi ad arduino.

Ora, come può phyton rilevare che il file dati è cambiato? Sicuramente c'è qualche libreria che consente di ascoltare la modifica di un file, in linux si può registrare un evento, in windows invece devi controllare la data di ultima modifica ogni tot (polling), cosa inefficiente, ma se polli ogni 500ms il ritardo di controllo è minimo.

(sicuramente le librerie che troverai per il "file lock multisistema" usano sistemi simili, e magari ce ne è una che consente di settare i file dati e di lock; se setti gli stessi sia lato php che phyton hai fatto)

un sistema ancora migliore è se trasformi il phyton in un server, con un socket che accetta connessioni multiple, e poi i PHP aprono una connessione al server phyton (che può essere sulla stessa macchina, o dall'altra parte del mondo!), poi internameto al phytn usi le classiche strutture di sincronizzazione native del linguaggio
9  Community / Bar Sport / Re: [OT ITA] Lo spamm bar on: July 24, 2014, 06:54:04 pm
trovata soluzione, la spammo anche di qua perchè è un bel esercizio di stile: http://forum.arduino.cc/index.php?topic=257039.msg1817335#msg1817335
10  International / Software / Re: [codice completo] blink without delay sotto steroidi on: July 24, 2014, 06:23:06 pm
per chi proprio non ci capisse un acca, consiglio di farsi un pò di basi con http://www.leonardomiliani.com/en/2012/come-gestire-loverflow-di-millis/

per chi dimostra di strizzare un pò le meningi sono aperto ad ogni questione.

da una discussione con un amico:

la magia avviene in 2 punti
1. ad ogni check non calcolo il tempo che MANCA all'esecuzione, ma il tempo che è PASSATO da quando avrei dovuto eseguirla
2. verifico che il tempo passato da quando avrei dovuto eseguirla è <= del tempo passato dall'ultima esecuzione del check
11  International / Software / [codice completo] blink without delay sotto steroidi on: July 24, 2014, 06:21:47 pm
diciamo di avere un task da schedulare ogni x microsecondi. e diciamo che purtroppo il nostri timer non si incrementa di microsecondo in microsecondo, ma magari di 4 in 4 (come la micros() di arduino!).

certo, e poi bisogna anche consderare che magari le variabili di tempo di esecuzione vanno in overflow... quanti if, quante condizioni, quanti... o no? o forse possiamo aggirare gli overflow, e non solo, ma anche eseguire quei task che cadono dall'ultima esecuzione?

ecco la mia soluzione, un piccolo esercizio di stile, apparentemente semplice, ma che nasconde uno sforzo per essere compreso a fondo, specialmente nei casi limite

Code:
#include <stdio.h>
#include <stdint.h>

int main(int argv, char *args[]){
uint8_t tempo_attuale = 0;
uint8_t tempo_ultima_esecuzione = -1;//force overflow, or if first execution is at 0 it get screwed up
uint8_t periodo_in_esame;

/*le seguenti 3 variabili possono essere messe in una strutture a poi "arrayzzate" per avere più eventi indipendenti*/
uint8_t tempo_esecuzione = 0;
uint8_t tempo_passato;
uint8_t periodo = 10;

/* more difficult! il timer è irregolare */
uint8_t ganularita_timer = 3;

for (uint16_t b = 0; b < 200; b++){
tempo_passato = tempo_attuale-tempo_esecuzione;

periodo_in_esame = tempo_attuale-tempo_ultima_esecuzione;

printf("\nt1=%d, t=%d,tempo_passato=%d", tempo_esecuzione, tempo_attuale,tempo_passato);

if (tempo_passato <= periodo_in_esame){
tempo_esecuzione += periodo;
printf(" ESECUZIONE!");
}

tempo_ultima_esecuzione = tempo_attuale;
tempo_attuale+=ganularita_timer;
}

return 0;
}
12  International / Generale / Re: progetto torsiometro on: July 24, 2014, 03:48:26 am
1.2? non è 1.5? in ogni caso arduino va a 5/6v, quindi la "lantern" pare una buona soluzione, voltaggio ok e una durata più che decente
13  Community / Bar Sport / Re: [OT ITA] Lo spamm bar on: July 24, 2014, 03:43:12 am
uhmm avrei dovuto allegare il caso di test.

è una lista, ordinata in base ad un  "PESO" che ogni elemento possiede.

ci sono 2 funzioni di "estrazione", entrambe lavorano sulla "testa";

.estrazione della testa (quindi dell'elemento con peso minore) - caso A
.estrazione della testa con peso <= ad un dato valore - caso B


esempio caso A:
mettiamo che hai un meccanismo, che per rimanere allineato ha bisogno che ogni 2 "passi" dello stepper1 fai uno scatto di stepper2 e 10passi di stepper3; i periodi da impostare sono quindi s1 = 10/2=5, s2 = 10/1=10, s3=10/10=1, a questo punto tu semplicemente fai una estrazione di testa (e conseguente reinserimento ordinato per schedulare il prossimo salto)

altro esempio caso A:
immagina di avere une serie di operazioni (per esempio 5 funzioni da chiamare), MA che esse abbaino una certa priorità di esecuzione; per esempio un robot quando è vicino ad un muro può decidere di aumentare la priorità del sensore ping, o quando è in curva aumentare la priorità degli input da utente, o quando perde il segnale con l'input utente aumentare la priorità degli algoritmi di stabilizzazione/return to home

caso esempio B:
vogliamo fare uno scheduler, come il LeOS. in pratica è uguale al caso A, solo che gli step non vogliamo eseguirli il più velocemente possibile, ma ogni tot tempo. il "peso" diventa quindi la data di esecuzione, mentre il valore passato alla funzione di estrazione è la "data attuale"

ps. mi sono accorto che quando "peso"va in overflow non gestisco il caso
14  International / Generale / Re: comunicazione tra GSM/GPRS/GPS SHIELD e google maps on: July 24, 2014, 03:26:39 am
non serve che modifichi le librerie: ciò che non viene usato il compilatore non lo include. quello che devi evitare sono variabili globali e/o grosse variabili locali (stinghe lunghe, ad esempio) oltre che l'allocazione dinamica di memoria
15  International / Generale / Re: progetto torsiometro on: July 24, 2014, 03:06:02 am
le lipo sono le batterie ai polimeri di litio, e hanno vari impieghi, dai cellulari ai modelli.
Se usi delle batterie "rubate" ai cellulari, allora stai più o meno tranquillo perchè l loro interno possiedono dei circuiti di protezione (esempio limitazione di corrente assorbita), se invece usi delle celle "sfuse" devi farci attenzione, sopratutto quando si gonfiano.. bhe conviene avere un estintore a polvere nelle vicinanze xD


dicendo "semplici batterie 9V" in realtà on dici nulla,visto che esistono in versione alcalina (la più comune, quindi immagino intendi questa), wiki dice da 565mAh, la versione al litio la da a 1200mAh. oppure passi al modello C alkalino (il torcione) che ha 12Ah di carica!

buona lettura: http://it.wikipedia.org/wiki/Lista_dei_tipi_di_batterie
Pages: [1] 2 3 ... 730