Sommario:

Roomba per l'assistenza degli astronauti: 4 passaggi
Roomba per l'assistenza degli astronauti: 4 passaggi

Video: Roomba per l'assistenza degli astronauti: 4 passaggi

Video: Roomba per l'assistenza degli astronauti: 4 passaggi
Video: Amazon re:MARS 2022 - Day 2 - Keynote 2024, Novembre
Anonim
Roomba per l'assistenza degli astronauti
Roomba per l'assistenza degli astronauti

Questo progetto è realizzato utilizzando il Raspberry Pi 3 a bordo di iRobot Create Version 2. MATLAB viene utilizzato per programmare il robot per seguire istruzioni specifiche utilizzando i suoi sensori e la fotocamera. I sensori e le telecamere sono utilizzati per eseguire compiti specifici che seguirebbero un astronauta e gli fornirebbero la capacità di comunicare con la sua base di partenza se qualcosa va storto.

Passaggio 1: parti necessarie

Parti necessarie
Parti necessarie
Parti necessarie
Parti necessarie
Parti necessarie
Parti necessarie
Parti necessarie
Parti necessarie

1. iRobot Crea versione 2

iRobot Create è la parte più essenziale di questo progetto poiché è programmabile e può essere un'ottima rappresentazione per un vero rover che segue gli astronauti e li assiste in futuro

2. Raspberry Pi 3

Il Raspberry Pi era il programmabile utilizzato per questo progetto. Il codice è progettato per il Pi e la versione del Pi allegata è la 3 (modello B). Sono utilizzabili altre schede programmabili come arduino, tuttavia, arduino e la maggior parte delle altre schede richiederanno una codifica diversa da quella descritta in un altro passaggio

3. Modulo fotocamera Raspberry Pi

L'unica connessione estranea al Raspberry Pi necessaria per questo progetto è il modulo fotocamera. Il modulo telecamera è parte integrante di questo progetto, poiché roomba eseguirà solo le attività in base a ciò che vede nella telecamera

4. MATLAB 2018a

La seconda versione più recente di MATLAB, 2018a, è stata utilizzata per la codifica coinvolta in questa configurazione. È probabile che molte altre versioni di MATLAB funzioneranno con questo dato che la programmazione di roomba è in circolazione da un po'

Passaggio 2: file e configurazione della fotocamera

File e configurazione della fotocamera
File e configurazione della fotocamera

1. Connessioni Raspberry Pi e fotocamera al roomba

  • Il Pi può connettersi all'iRobot direttamente con una micro USB. Questo è tutto ciò di cui ha bisogno per essere pronto per l'uso. Tuttavia, si consiglia di posizionarlo saldamente sul roomba come mostrato nelle immagini durante la presentazione finora.
  • La fotocamera ha una connessione diretta al Raspberry Pi e si consiglia vivamente di acquistare o realizzare qualcosa per tenere la fotocamera direttamente in alto. Non ha alcun senso la telecamera se non può essere tenuta in posizione per mostrare ciò che vede il roomba.

2. File

  • Dopo aver configurato e collegato tutto, assicurati che il robot sia ripristinato e pronto all'uso tenendo premuti i pulsanti "Spot" e "Dock" per 10 secondi insieme.
  • È qui che è necessario prima MATLAB. I file per roomba devono essere installati prima e tutto ciò che è necessario per l'esecuzione di questi file è il codice fornito su questo collegamento:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Passaggio 3: test iniziale di Roomba

Ci sono molti controlli iniziali da eseguire su roomba per assicurarsi che funzioni.

1. Assicurati di essere connesso alla stessa rete WiFi di roomba. Senza questo, non ti connetterai mai tramite MATLAB.

2. Scopri a quale numero è assegnato il tuo roomba in modo da poterti connettere in modo specifico al roomba che hai scelto. Ad esempio, se il numero di roomba è 30, ti connetteresti digitando roomba(30) nella finestra di comando in MATLAB.

3. Roomba può essere controllato tramite strutture in MATLAB. Ad esempio, se imposti il tuo codice per roomba(30) sulla variabile 'r', il robot può essere spostato in avanti con il comando r.moveDistance(0.2, 0.1).

4. Ci sono molti comandi differenti che possono essere comunicati a roomba e questi possono essere visti digitando 'doc roomba' nella finestra dei comandi.

5. I sensori per le letture di luce, rilievo e dislivello possono essere letti utilizzando i comandi visualizzati in 'doc roomba', ma un modo per avere un menu costante e ordinato per visualizzare i dati del sensore può essere visualizzato utilizzando 'r.testSensors '.

6. Dopo aver testato tutto questo, il software di raccolta delle immagini del robot può essere utilizzato per leggere e vedere le immagini scattate. Il codice di base per questo sarebbe img = r.getImage e imshow(img);.

7. I valori RGB dell'immagine possono essere trovati con i codici red_mean = mean(mean(img(:,:, 1)));

green_mean = mean(mean(img(:,:, 2))); e blue_mean=mean(mean(img(:,:, 3)));.

Passaggio 4: esempio di codice MATLAB

Esempio di codice MATLAB
Esempio di codice MATLAB

A questo punto, sei pronto per utilizzare i sensori e il software di acquisizione delle immagini per creare il tuo giro su un prototipo di Mars Rover a supporto dell'uomo. Il nostro esempio è seguire l'astronauta seguendo il colore bianco e muovendosi verso di esso. Il robot emetterà un segnale acustico se i suoi sensori leggono valori elevati in modo che l'astronauta possa ripristinare il robot se è bloccato o andare a prenderlo e ripristinarlo se è bloccato su una scogliera. Tuttavia, legge questi errori solo finché vede il bianco. Senza poter vedere il colore bianco, il robot entrerà in modalità errore. È programmato per inviare due diversi tipi di e-mail alla base di casa a seconda di ciò che vede. Se vede il colore della pelle dell'astronauta, ovviamente non va bene, quindi avviserà la base se l'astronauta ha la pelle che mostra un malfunzionamento della tuta. L'altro messaggio viene preparato se l'astronauta scompare semplicemente dalla vista. Se non viene visualizzato il bianco o il colore della pelle per le telecamere, il robot si girerà e invierà un'altra e-mail diversa. Le immagini in cui roomba non può vedere l'astronauta verranno inviate insieme al messaggio nelle e-mail. Il codice per il nostro progetto è mostrato di seguito:

per i=1:.1:3 img=r.getImage; image(img) red_mean = mean(mean(img(:,:, 1))); green_mean = mean(mean(img(:,:, 2))); blue_mean = mean(mean(img(:,:, 3))); if red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left>0 || bump.front>0 r.beep() r.beep() r.beep() r.stop elseif cliff.left<10 || cliff.leftFront<10 || cliff.rightFront<10 || scogliera.right700 || light.leftFront>700 || light.leftCenter>700 || light.rightCenter>700 || light.rightFront>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop else for i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end if green_mean <35 && blue_mean<35 %colore della pelle mostrato (deve essere regolato in base al colore della pelle dell'astronauta) r.beep(); r.beep(); r.beep(); mail = '[email protected]'; % invia un'e-mail mostrando che la tuta non è attiva psswd = 'sì'; host = 'smtp.gmail.com'; porta = '465'; emailto = '[email protected]'; m_soggetto = 'soggetto'; m_text = 'prova'; setpref('Internet', 'E_mail', posta); setpref('Internet', 'Server_SMTP', host); setpref('Internet', 'Nome utente_SMTP', mail); setpref('Internet', 'Password_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Aiuto!', 'La divisa da astronauta è tolta!', img); end if red_mean 135 || green_mean 135 || blue_mean 135 for j = 1:2 %if white non può essere trovato dal robot r.turnAngle(360) mail = '[email protected]'; psswd = 'sì'; host = 'smtp.gmail.com'; porta = '465'; emailto = '[email protected]'; m_soggetto = 'soggetto'; m_text = 'prova'; setpref('Internet', 'E_mail', posta); setpref('Internet', 'Server_SMTP', host); setpref('Internet', 'Nome utente_SMTP', mail); setpref('Internet', 'Password_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', host); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Aiuto!', 'Impossibile trovare l'astronauta!', img); r.stop fine fine fine

Ovviamente è disordinato qui, ma dovrebbe essere cancellato una volta copiato. Ovviamente le password e le e-mail per questo devono essere fornite da coloro che fanno questo progetto.

Tuttavia, il nostro esempio è solo uno dei tanti modi per scherzare con questo robot per renderlo adatto a tutti. Ci sono molte cose diverse da fare, che puoi adattare a te stesso.

Consigliato: