Sommario:
- Passaggio 1: parti necessarie
- Passaggio 2: file e configurazione della fotocamera
- Passaggio 3: test iniziale di Roomba
- Passaggio 4: esempio di codice MATLAB
Video: Roomba per l'assistenza degli astronauti: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
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
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
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
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:
Assistenza al parcheggio Facile riparazione / diagnosi: 4 passaggi
Assistenza al parcheggio Facile riparazione / diagnosi: Ok, iniziamo, ho una Chevrolet Avalanche del 2010 e ha 4 sensori di assistenza al parcheggio nel paraurti posteriore. Questo intrattabile può essere utilizzato su e veicolo al meglio delle mie conoscenze, se hai davanti o Rea o entrambi. Così sono andato al mio preferito
ESP8266 - Sensori per porte e finestre - ESP8266. Assistenza Anziani (dimenticanza): 5 Passi
ESP8266 - Sensori per porte e finestre - ESP8266. Assistenza anziani (dimenticanza): ESP8266 - Sensori porta/finestra utilizzando GPIO 0 e GPIO 2 (IOT). Può essere visualizzato sul web o in rete locale con browser. Visibile anche attraverso la "HelpIdoso Vxapp" applicazione. Utilizza un'alimentazione 110/220 VAC per 5Vdc, 1 relè / tensione
Assistenza per scooter Walker: 9 passaggi
Walker Scooter Aid: Martin soffre di SM, soprattutto alle gambe. Per questo motivo Martin ha problemi a camminare. Ha le gambe instabili e per le brevi distanze usa il deambulatore, per le lunghe distanze usa il monopattino elettrico. Tuttavia, quando fa
Arduino per una rete di assistenza domestica cablata: 5 passaggi
Arduino per una rete Wired Home Assistant: i componenti Wi-Fi come i vari Sonoff, Tasmota ed ESP8266 sono molto facili da configurare e utilizzare, ma spesso le cose non sono facili come sembrano. Negli ambienti industriali/aziendali l'automazione wireless non è così comune. I componenti wireless sono meno affidabili
D4E1 - Fai da te - Tecnologia di assistenza: vassoio per sedia a rotelle regolabile: 7 passaggi (con immagini)
D4E1 - Fai da te - Tecnologia assistiva: Vassoio per sedia a rotelle regolabile: Kjell ha una disabilità congenita: quadriparesi discinetica e non è in grado di mangiare da solo. Ha bisogno dell'aiuto di un monitor, un terapista occupazionale, che lo nutre. Questo comporta due problemi: 1) Il terapista occupazionale sta al volante