insieme a un amico stavamo cercando di creare una torretta robotizzata con in cima una replica da softair... il primo modello era un treppiede con motore lavavetri e se vedeva movimento attraverso un sensore da allarme iniziava a sparare....
ora che ho scoperto il mondo arduino mi piacerebbe crescere di livello...
ho visto che arduino non riesce a gestire flussi video grossi e quindi ho capito che dovrei usare anche una webcam collegata ad un portatile...
attraverso roborealm ho visto e provato che è possibile far si che rilevi il movimento e passi le coordinate del centro punto.
quale versione di arduino ed eventuali shield dovrei acquistare?
lo scopo è : attraverso un software realizzato con roborealm fare il track dell oggetto, passare le coordinate ad arduino e muovere un servo o un motore (o due per x e y) per puntare l'oggetto e nel frattempo azionare un relè ...
cosa pensate mi possa servire? dove reperirlo? e come interfacciare poi arduino con roborealm?
grazie dele eventuali dritte per capire il mondo della robotca
potresti mettere la telecamera in parallelo al fucile e fare in modo che ogni volta che roborealm ti restituisce le coordinate(che penso siano i pixel)arduino giri il servo "orizzontale" in base alla x e quello verticale in base alla y;devi però riuscire a fare una conversione fra coordinate e gradi facendo vari tentativi.
ti rimando a questi video: 1 2 3
ti servono 2 servi,il fucile,un pc,e un sistema per premere il grilletto(io userei un elettromagnete)
P.S. il mio manda ad arduino le coordinate x e y
se vuoi dopo ti faccio il codice per arduino(a parte la conversione da x e y a gradi perchè quella la devi provare tu con la tua web) però mi devi rispondere a queste domande:
1)arduino spara ad un oggetto in movimento ogni quanto?
2)quando il movimento è finito deve sparare li ancora un paio di colpi o basta?
3)deve segnalarti quando il fucile finisce i colpi?
cacchius sei gentilissimo ( poi ti manderò una sentri tower a casa :)) )
allora per sparare arduino dovrebbe chiudere un contatto ( grilletto elettronico) o eccitare un relè ma basta appunto la chiusura del contatto dato che non passerà piu corrente di qualche mah.... per quello che credo un relè è sprecato
direi che dovrebbe sparare una volta che vede il movimento per almeno 5 secondi e fermarsi subito se non vede piu movimento .. fare comunque 3 secondi di pausa e magari se ha visto movimento e lo sta tracciando reiniziare a sparare ( ciclico) nessun segnale di finito i colpi ma se ti devo dire la verità sarebbe figo usare un entrata nella quale collego un telecomando o un interruttore per disattivare completamente la torretta...
sto giusto ora schematizzando la struttura della torre e sto cercando disperatamente un metodo di disarmo ( a parte il telecomando/interruttore) per far si che si simuli appunto il sabotaggio della torretta ... magari pensavo a un secondo interruttore con fungo di quelli da emergenza cablato con un paiuo di metri di cavo da stendere dietro la torretta ... se arrivi da dietro la puoi disarmare... mi sembra carina come idea... ma ancora è tutto nella mia testa...grazie al tuo aiuto sto iniziando a ragionare su diverse possibilità... ed ho ovviamente comprato un arduino sperando che lunedi arrivi :)) sono impazientissimo...
cosè una sentri tower?
quindi se cè movimento arduino spara appena il movimento finisce smette di sparare?
mentre cè movimento quanti colpi al secondo spara?
a che ti serve la torre?
sentry tower XD torre sentinella .. serve per una partita di softair (wargame) in cui vorrei provare a realizzare un obiettivo autonomo (ci saranno un paio di arbitri a verificare che nessuno bari) ma senza operatori umani... in pratica un team dovrà completare la missione andando in contro alle torrette automatiche...
i colpi al secondo poi li deciderò con il motorino / batteria sul fucile giocattolo... a me interessa che sia premuto il grilletto mentre c'è movimento ... ovviamente seguendo l'ostile ... !
quindi se cè movimento arduino spara appena il movimento finisce smette di sparare?
Se il fucile è predisposto e ha un interruttore elettronico, basterà aprire o chiudere una porta digitale collegata all'interruttore. Se invece hai un semplice sistema meccanico a grilletto potresti utilizzare un attuatore meccanico (un altro servo per esempio) per premerlo ;). So che è un sistema che io definirei "elefantiasi" pero' di certo funziona.
Scegli bene la webcam, che sia soprattutto molto grandangolare. Non comprare roba della trust, credimi ;).
grilletto l'ho modificato in elettronico quindi mi basta un uscita on/off !
webcam .. .allora domani prendo una semplice microsoft vx-800 da 15? che fa 640480 a 30fps e forse 800600 a 20 ..
se il tutto funziona c'è una bellissima microsoft hd 720p da 70? ma questo sarà poi la revisione 2.0 direi
sabato inizio il plastico (domani raccimolo i materiali) e gli collego 2 servi e un laser rosso ... ((( una miniatura insomma ))) lunedi dovrebbe arrivarmi arduino.... e se avremo gia qualcosa di pronto tra lunedi sera e martedi sera conto di poter dire alla community se la base software c'è e cosa potremmo correggere
ovviamente con arduino in mano potro iniziare anche io a imparare a programmarlo
aspetta per la telecamera! se il tuo unico problema è vedere il movimento puoi usare i sensori dei mouse ottici con arduino!!! uyn tizio italiano ha fatto una guida qualche mese fa, sensore mouse per rilevare il movimento e degli occhi the ti seguivano... Solo con arduino! il che vuol dire che non rischi un PC sul "campo di guerra". Ora cerco la discussione
grazie lo avevo gia visto un paio di giorni fa... e mi interessava per il discorso che non serve il computer... magari un giorno lo proverò... ma per partire mi serve un riconoscimento fino 50/60 metri e penso che non riuscirei a farlo con il mouse... magari a progetto realizzato proverò poi la modifica mouse....
#include <Servo.h> // Include the servo library
Servo servox;
Servo servoy;// Create a new servo object
char incomingData[4] = { null, null, null, null}; // A buffer to store the ASCII value read in from the serial port
int x = 0;
int y = 0; // The distance of the object from the center of the screen
int i = 0; // counter
void setup(){
Serial.begin(9600); // Open the serial port with a 9600 baud rate
Serial.println("Serial port ready"); // Print on screen
servox.attach(0);
servoy.attach(1); // Attach the servo signal line to pin 9
}
void loop(){
// Wait for data to become available at the serial port
if (Serial.available()){
// Get the data coming through the serial port and store it in the buffer
while (incomingData[i] <> "a"){
incomingData[i] = Serial.read(); // Assign the input value to the incomingData buffer
i++; // Increment the counter
}
x = atoi(incomingData);
x = convertix(x);
servox.write(x)
i = 0; // Reset the counter
if (Serial.available()){
// Get the data coming through the serial port and store it in the buffer
while (incomingData[i] <> "a"){
incomingData[i] = Serial.read(); // Assign the input value to the incomingData buffer
i++; // Increment the counter
}
y = atoi(incomingData);
y = convertix(y);
servoy.write(y)
spara();
i = 0; // Reset the counter
}
int convertix(x1){}
int convertiy(y1){}
spara(){}
la parte per la conversione e lo sparo la devi fare da solo a seconda della tua configurazione
ma la sentry me la regali veramente?