Sommario:
- Passaggio 1: inizializzazione e sensori
- Passaggio 2: ottenere dati
- Passaggio 3: completare la missione
- Passaggio 4: conclusione
Video: Roomba Explorer: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Utilizzando MATLAB e il robot Create2 di iRobot, questo progetto esplorerà diverse aree di un luogo sconosciuto. Abbiamo impiegato i sensori sul Robot per aiutare a manovrare un terreno pericoloso. Ottenendo fotografie e feed video da un Raspberry Pi allegato, siamo stati in grado di determinare gli ostacoli che il Robot dovrà affrontare e saranno classificati.
Parti e materiali
Per questo progetto, avrai bisogno di
-un computer
-versione più recente di MATLAB (per questo progetto è stato utilizzato MATLAB R2018b)
- roombaInstall toolbox
-Robot Create2 di iRobot
-Raspberry Pi con fotocamera
Passaggio 1: inizializzazione e sensori
Prima di iniziare qualsiasi programmazione, abbiamo scaricato il toolbox roombaInstall, che ha consentito l'accesso a diversi componenti del Robot.
Inizialmente, abbiamo creato una GUI per inizializzare qualsiasi Robot. Per fare ciò, è necessario digitare il numero del Robot come input. Ciò consentirà l'accesso per eseguire il nostro programma al robot Abbiamo lavorato per far sì che il robot si manovrasse attraverso i molti terreni che avrebbe incontrato. Abbiamo implementato i sensori di dislivello, i sensori di urto luminoso e i sensori di urto fisico, utilizzando le loro uscite per far scattare il robot per cambiarne la velocità e/o la direzione. Quando uno dei sei sensori di luce d'urto rileva un oggetto, il valore emesso diminuirà, causando una diminuzione della velocità del robot per evitare una collisione a piena velocità. Quando finalmente il Robot urta un ostacolo, i sensori Physical Bump riporteranno un valore maggiore di zero; per questo motivo il Robot si fermerà, quindi non ci saranno ulteriori collisioni e più funzioni potranno essere messe in atto. Per i sensori di dislivello, leggeranno la luminosità dell'area circostante. Se il valore è maggiore di 2800, abbiamo determinato che il Robot sarebbe su un terreno stabile e sicuro. Ma, se il valore è inferiore a 800, i sensori di dislivello rileveranno una scogliera, fermandosi immediatamente per non cadere. Qualsiasi valore intermedio è stato determinato per rappresentare l'acqua e farà sì che il Robot interrompa la sua azione. Utilizzando i sensori di cui sopra, la velocità del Robot viene modificata permettendoci di determinare meglio se c'è qualche pericolo.
Di seguito è riportato il codice (da MATLAB R2018b)
%% Inizializzazione
dlgPrompts = {'Numero Roomba'};
dlgTitle = 'Seleziona il tuo Roomba';
dlgDefaults = {''};
opts. Resize = 'on';
dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Crea finestra che richiede all'utente di inserire il proprio numero roomba
n=str2double(dlgout{1});
r=roomba(n); % Inizializza Roomba specificato dall'utente %% Determinazione della velocità dai sensori di urto luminoso mentre true s=r.getLightBumpers; % ottieni sensori di urto luminoso
lbumpout_1=extractfield(s, 'sinistra'); % prende i valori numerici dei sensori e li rende più utilizzabili lbumpout_2=extractfield(s, 'leftFront');
lbumpout_3=extractfield(s, 'leftCenter');
lbumpout_4=extractfield(s, 'rightCenter');
lbumpout_5=extractfield(s, 'rightFront');
lbumpout_6=extractfield(s, 'right');
lbout=[lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % converte i valori in matrice
sLbump=sort(lbout); %sorts matrice al valore più basso può essere estratta
lowLbump=sLbump(1); speed=.05+(lowLbump)*.005 %usando il valore più basso, che rappresenta gli ostacoli vicini, per determinare la velocità, velocità più alta quando non viene rilevato nulla
r.setDriveVelocity(velocità, velocità)
fine
% paraurti fisici
b=r.getBumpers; %Uscita vero, falso
bsen_1=extractfield(b, 'sinistra')
bsen_2=extractfield(b, 'right')
bsen_3=extractfield(b, 'fronte')
bsen_4=extractfield(b, 'leftWheelDrop')
bsen_5=extractfield(b, 'rightWheelDrop')
urti=[bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump=sum(bums)
se tbump>0 r.setDriveVelocity(0, 0)
fine
% Sensori di dislivello
c=r.getCliffSensors %% 2800 sicuro, altrimenti acqua
csen_1=extractfield(c, 'sinistra')
csen_2=extractfield(c, 'right')
csen_3=extractfield(c, 'leftFront')
csen_4=extractfield(c, 'rightFront')
scogliere=[csen_1, csen_2, csen_3, csen_4]
ordcliff=sort(scogliere)
se ordcliff(1) < 2750
r.setDriveVelocity(0, 0)
se scogliera<800
disp 'scogliera'
altro
versare 'acqua'
fine
r. Angolo di svolta(45)
fine
Passaggio 2: ottenere dati
Dopo l'attivazione dei sensori di impatto fisico, il Robot implementerà il Raspberry Pi a bordo per scattare una fotografia dell'ostacolo. Dopo aver scattato una fotografia, utilizzando il riconoscimento del testo se c'è del testo nell'immagine, il Robot determinerà qual è l'ostacolo e cosa dice l'ostacolo.
img = r.getImage; imshow(img);
imwrite(img, 'imgfromcamera.jpg')
foto = imread('imgfromcamera.jpg')
ocrResults = ocr(foto)
riconosciutoText = ocrResults. Text;
figura;
imshow(photo) text(220, 0, sharedText, 'BackgroundColor', [1 1 1]);
Passaggio 3: completare la missione
Quando il Robot determina che l'ostacolo è CASA, completerà la sua missione e resterà a casa. Dopo il completamento della missione, il Robot invierà un'e-mail di avviso che è tornato a casa e invierà le immagini che ha scattato durante il suo viaggio.
% Invio di posta elettronica
setpref('Internet', 'Server_SMTP', 'smtp.gmail.com');
setpref('Internet', 'E_mail', '[email protected]'); % account di posta da inviare da setpref('Internet', 'SMTP_Username', 'inserisci l'email del mittente'); % username del mittente setpref('Internet', 'SMTP_Password', 'inserire la password del mittente'); % password mittente
props = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');
sendmail('Inserisci l'email di ricezione', 'Roomba', 'Roomba è tornato a casa!!', 'imgfromcamera.jpg') % account di posta a cui inviare
Il Robot è quindi finito.
Passaggio 4: conclusione
Il programma MATLAB incluso è separato dall'intero script utilizzato con il Robot. Nella bozza finale, assicurati di inserire tutto il codice, ad eccezione della fase di inizializzazione, in un ciclo while per assicurarti che i bumper siano costantemente in esecuzione. Questo programma può essere modificato in base alle esigenze dell'utente. Viene mostrata la configurazione del nostro Robot.
*Promemoria: non dimenticare che il toolbox roombaInstall è necessario affinché MATLAB interagisca con il Robot e il Raspberry Pi integrato.
Consigliato:
Trasformare il Roomba in un Mars Rover: 5 passaggi
Trasformare il tuo Roomba in un Mars Rover:
Scorciatoie da tastiera per Internet Explorer!!: 4 passaggi
Scorciatoie da tastiera per Internet Explorer!!: Questo Instructable ti mostrerà alcune utili scorciatoie da tastiera per Internet Explorer Iscriviti al mio canale Grazie
Roomba Scout Explorer: 8 passaggi
Roomba Scout Explorer: Essendo uno dei progetti americani più attesi e più ricercati, i progetti del rover su Marte sono diventati realizzazioni umane nella produzione in continua evoluzione di sistemi autonomi ad alta tecnologia al solo scopo di investigare e inte
Da Roomba a Rover in soli 5 passaggi!: 5 passaggi
Da Roomba a Rover in soli 5 passaggi!: I robot Roomba sono un modo semplice e divertente per immergersi nel mondo della robotica. In questo Instructable, descriveremo in dettaglio come convertire un semplice Roomba in un rover controllabile che analizza contemporaneamente l'ambiente circostante. Elenco delle parti1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 passaggi
Bus Pirate 3EEPROM Explorer Board: se hai uno dei Hack a Day's Bus Pirates, cosa ne fai? Scopri le EEPROM a 1 filo, I2C e SPI con la scheda di esplorazione 3EEPROM (la chiamiamo THR-EE-PROM). L'EEPROM è un tipo di chip di memoria che memorizza i dati senza un'alimentazione continua