Sommario:
- Passaggio 1: parti e materiali
- Passaggio 2: file di database Roomba
- Passaggio 3: connessione a Roomba
- Passaggio 4: il codice
- Passaggio 5: conclusione
Video: Roomba controllato da MATLAB: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
L'obiettivo di questo progetto è utilizzare MATLAB e un robot programmabile iRobot modificato. Il nostro gruppo ha unito le nostre capacità di codifica per creare uno script MATLAB che utilizza molte funzioni di iRobot, inclusi i sensori di dislivello, i sensori di paraurti, i sensori di luce e la fotocamera. Abbiamo utilizzato queste letture del sensore e della fotocamera come input, consentendoci di creare determinati output che desideriamo utilizzando le funzioni e i loop del codice MATLAB. Usiamo anche il dispositivo mobile MATLAB e il giroscopio come un modo per connetterci all'iRobot e controllarlo.
Passaggio 1: parti e materiali
MATLAB 2018a
-La versione 2018 di MATLAB è la versione più preferita, soprattutto perché funziona al meglio con il codice che si connette al dispositivo mobile. Tuttavia, la maggior parte del nostro codice può essere interpretata nella maggior parte delle versioni di MATLAB.
iRobot Crea dispositivo
-Questo dispositivo è un dispositivo speciale il cui unico scopo è la programmazione e la codifica. (Non è un vero e proprio vuoto)
Raspberry Pi (con fotocamera)
- Questa è una scheda per computer non costosa che funziona come il cervello di iRobot. Può essere piccolo, ma è capace di molte cose. La fotocamera è un'aggiunta aggiuntiva. Utilizza anche il Raspberry Pi per ottenere tutte le sue funzioni e comandi. La fotocamera nella foto sopra è montata su un supporto stampato in 3D, creato dai dipartimenti di Engineering Fundamentals dell'Università del Tennessee
Passaggio 2: file di database Roomba
C'è un file principale di cui avrai bisogno per utilizzare le funzioni e i comandi corretti per il tuo roomba. Questo file è il punto in cui il codice scritto trae le funzioni per rendere più gestibile il funzionamento di roomba.
Puoi scaricare il file a questo link o il file scaricabile qui sotto
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Passaggio 3: connessione a Roomba
Innanzitutto, devi assicurarti che il tuo robot sia collegato alla scheda Raspberry Pi utilizzando una presa micro USB. Quindi devi connettere correttamente il tuo computer e robot allo stesso WiFi. Una volta fatto questo, puoi accendere il tuo robot e connetterti ad esso usando il comando dato nel file del database del robot. (Reimposta sempre il tuo robot prima e dopo averlo usato). Ad esempio, utilizziamo il comando "r.roomba(19)" per connetterci al nostro robot, assegnando la variabile r al nostro dispositivo. Questo si riferisce al file del database, che imposta la nostra variabile come una struttura a cui possiamo fare riferimento in un dato momento.
Passaggio 4: il codice
Abbiamo allegato il codice completo di seguito, ma ecco una breve panoramica che evidenzia gli elementi importanti nel nostro script. Abbiamo utilizzato tutti i sensori, nonché la telecamera per massimizzare al massimo il potenziale del nostro robot. Abbiamo anche incluso un codice che ci ha permesso di connettere un dispositivo mobile al nostro robot e utilizzare il suo crioscopio per controllarlo manualmente.
Abbiamo iniziato con il semplice comando "r.setDriveVelocity(.06)" che imposta la velocità di avanzamento del robot a 0,06 m/s. Questo è solo per far muovere il robot in anticipo
Quindi, il nostro script principale viene avviato con un ciclo while che recupera i dati del dato robot creando strutture a cui possiamo fare riferimento e utilizzare nelle istruzioni condizionali di seguito, consentendoci così di dire al robot di eseguire un determinato comando in base ai dati della struttura il robot legge con i suoi sensori. Lo abbiamo impostato in modo che il robot legga i suoi sensori di dislivello e segua un percorso nero
while true % Il ciclo while continua finché non si verifica qualcosa di "falso" (in questo caso continua all'infinito) data = r.getCliffSensors; data2 = r.getBumpers;% recupera continuamente i dati sui valori del sensore di dislivello e li assegna a una variabile % img = r.getImage; % Scatta una foto dalla fotocamera montata % image(img); % Mostra l'immagine che è stata scattata % red_mean = mean(mean(img(:,:, 1)));% Prende il valore medio per il colore verde se data.rightFront < 2000 r.turnAngle(-2); % ruota il Roomba di circa 0,2 gradi in senso orario una volta che il valore per i sensori di dislivello anteriore destro scende al di sotto di 2000 r.setDriveVelocity(.05); elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % indica a Roomba di andare avanti a circa 0,2 m/s se entrambi i valori dei sensori anteriore destro e sinistro scendono al di sotto del 2000 % r.turnAngle(0); % dice a Roomba di non girare se le condizioni sopra menzionate sono vere
elseif data2.right == 1 r.moveDistance(-.12); r.angolo di svolta(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r.angolo di rotazione(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r.angolo di svolta(160); r.setDriveVelocity(.05);
Dopo questo ciclo while, entriamo in un altro ciclo while che attiva i dati ottenuti tramite la fotocamera. E usiamo un'istruzione if all'interno di questo ciclo while che riconosce un'immagine utilizzando un programma specifico (alexnet) e una volta identificata l'immagine attiva immediatamente il controllo remoto del dispositivo mobile
anet = alexnet; % Assegna alexnet deep learning a una variabilewhile true % Infinite while loop img = r.getImage; img = imresize(img, [227, 227]); label = classify(anet, img); if label == "tovagliolo di carta" || label == "frigorifero" label = "acqua"; fine immagine (img); titolo(carattere(etichetta)); disegnato;
Il ciclo while che ci consente di controllare il dispositivo con il nostro telefono recupera quei dati dal giroscopio del telefono e li inseriamo in una matrice che invia continuamente i dati a MATLAB sul computer. Usiamo un'istruzione if che legge i dati della matrice e fornisce un output che sposta il dispositivo in base a determinati valori del giroscopio del telefono. È importante sapere che abbiamo utilizzato i sensori di orientamento del dispositivo mobile. La matrice uno per tre sopra menzionata è classificata in base a ciascun elemento dei sensori di orientamento del telefono, che è azimut, passo e lato. Le istruzioni if hanno creato condizioni che dichiaravano quando il lato supera i valori 50 o scende al di sotto di -50, quindi il robot si sposta di una certa distanza in avanti (50 positivo) o indietro (50 negativo). E lo stesso vale per il valore del passo. Se il valore del passo supera il valore di 25 o scende al di sotto di -25, il robot ruota con un angolo di 1 grado (25 positivo) o negativo di 1 grado (25 negativo)
while true pause(.1) % Pausa di 0,5 secondi prima che venga preso ogni valore Controller=iphone. Orientation; % Assegna la matrice per i valori dell'orientamento dell'iPhone ad una variabile Azimuthal=Controller(1); % Assegna il primo valore della matrice ad una variabile Pitch=Controller(2); % Assegna il secondo valore della matrice a una variabile (inclina in avanti e indietro quando iPhone viene tenuto di lato) Side=Controller(3); % Assegna il terzo valore della matrice a una variabile (inclina a sinistra ea destra quando l'iPhone è tenuto di lato) % Provoca un output basato sull'orientamento del telefono se Side > 130 || Side 25 r.moveDistance(-.1) % Sposta Roomba all'indietro di circa 0,1 metri se l'iPhone è inclinato all'indietro di almeno 25 gradi altrimenti se Side 25 r.turnAngle(-1) % Ruota Roomba di circa 1 grado in senso antiorario se l'iPhone è inclinato a sinistra di almeno 25 gradi altrimenti se Pitch < -25 r.turnAngle(1) % Ruota Roomba di circa 1 grado in senso orario se l'iPhone è inclinato di almeno 25 gradi end
Questi sono solo i punti salienti delle parti principali del nostro codice, che abbiamo incluso se hai bisogno di copiare e incollare rapidamente una sezione a tuo vantaggio. Tuttavia, il nostro intero codice è allegato di seguito, se necessario
Passaggio 5: conclusione
Questo codice che abbiamo scritto è progettato specificamente per il nostro robot e per la nostra visione complessiva del progetto. Il nostro obiettivo era utilizzare tutte le nostre abilità di codifica MATLAB per creare uno script ben progettato che utilizzasse la maggior parte delle funzionalità del robot. L'utilizzo del controller del telefono non è così difficile come potresti pensare e speriamo che il nostro codice possa aiutarti a comprendere meglio il concetto alla base della codifica di un iRobot.
Consigliato:
Albero di Natale controllato dal sito web (chiunque può controllarlo): 19 passaggi (con immagini)
Albero di Natale controllato da un sito web (chiunque può controllarlo): vuoi sapere che aspetto ha un albero di Natale controllato da un sito web? Ecco il video che mostra il mio progetto del mio albero di Natale. Il live streaming è terminato ormai, ma ho fatto un video, catturando quello che stava succedendo: Quest'anno, a metà dicembre
Microcontrollore controllato MATLAB (Arduino MKR1000): 4 passaggi
Microcontrollore controllato MATLAB (Arduino MKR1000): l'obiettivo del nostro progetto era utilizzare MATLAB e Arduino MKR1000 al meglio delle nostre capacità. Il nostro obiettivo era creare uno script che consentisse a determinate funzionalità di arduino di eseguire un determinato output in base a un input specifico. Ne abbiamo usati tanti
Robot Roomba controllato dal browser con il modello Raspberry Pi 3 A+: 6 passaggi (con immagini)
Robot Roomba controllato dal browser con Raspberry Pi Model 3 A+: PanoramicaQuesto Instructable si concentrerà su come dare a un Roomba morto un nuovo cervello (Raspberry Pi), occhi (Webcam) e un modo per controllare tutto da un browser web. Esistono molti hack di Roomba che consentono il controllo tramite l'interfaccia seriale. Non ho
Roomba Progetto MATLAB: 5 passaggi
Roomba MATLAB Project: L'attuale piano della NASA per il rover su Marte è che sia un raccoglitore di dati e si aggiri intorno a Marte, raccogliendo campioni del suolo da riportare sulla Terra in modo che gli scienziati possano vedere se c'erano forme di vita precedenti su il pianeta. Ulteriori
Roomba con MATLAB: 4 passaggi (con immagini)
Roomba con MATLAB: questo progetto utilizza MATLAB e un robot programmabile iRobot Create2. Mettendo alla prova la nostra conoscenza di MATLAB, siamo in grado di programmare Create2 per interpretare le immagini e rilevare i segnali. La funzionalità del robot dipende principalmente dal