Sommario:

Roomba con MATLAB: 4 passaggi (con immagini)
Roomba con MATLAB: 4 passaggi (con immagini)

Video: Roomba con MATLAB: 4 passaggi (con immagini)

Video: Roomba con MATLAB: 4 passaggi (con immagini)
Video: Scherzo a SOFY! Papy fa un TIKTOK al parco con la sua amica GIULIA e lei ci rimane male😂 #shorts 2024, Novembre
Anonim
Roomba con MATLAB
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 dall'app mobile MATLAB e da un modulo fotocamera Raspberry Pi.

Passaggio 1: parti e materiali

Parti e materiali
Parti e materiali
Parti e materiali
Parti e materiali
Parti e materiali
Parti e materiali
Parti e materiali
Parti e materiali

1. iRobot Create, versione 2

- Questo è un robot programmabile che sembra un Roomba. Tieni presente che questo prodotto di iRobot non è un aspirapolvere. È destinato alla programmazione personalizzata da parte dell'utente.

2. MATLAB 2017a

- La maggior parte delle versioni precedenti sarà compatibile con il codice utilizzato di seguito. MATLAB identificherà un comando che non è compatibile con la versione che hai e ti suggerirà un comando più adatto.

3. Raspberry Pi 3 Modello B, versione 1.2

- Verifica quale Raspberry Pi è compatibile con il tuo iRobot. Vedi questo link per ulteriore assistenza: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Questo istruibile presuppone che tu stia lavorando con un Raspberry Pi preprogrammato. Tieni presente che dovrai lavorare con un Pi preprogrammato affinché i seguenti passaggi funzionino. L'utilizzo di un Pi preprogrammato ti consentirà di eseguire tutta la tua codifica in MATLAB da solo.

4. Modulo fotocamera V2 (per Raspberry Pi)

- Potresti essere sorpreso; nonostante le sue dimensioni, il modulo fotocamera Raspberry Pi è di ottima qualità. È l'opzione più economica e compatibile per questo progetto.

Opzionale: supporto stampato in 3D. Questo viene utilizzato per stabilizzare la fotocamera. Non influisce sulla funzionalità del robot, ma aiuterà la tua codifica se desideri utilizzare i dati di imaging per il riconoscimento del colore e/o degli oggetti.

Passaggio 2: configurazione

Configurazione
Configurazione
Configurazione
Configurazione

1. Collegamento di Raspberry Pi e modulo fotocamera (hardware)

- Per alimentare il Raspberry Pi, dovrai eseguire un'estremità micro USB maschio alla porta di alimentazione femmina sul microcontrollore. Opzionale: è possibile utilizzare un regolatore di tensione per garantire che la tensione non superi i 5V. Dopo aver alimentato il Raspberry Pi, puoi collegarlo al tuo robot eseguendo l'estremità maschio USB a dalla scheda madre alla porta USB A sul microcontrollore.

- Dopo aver collegato il Pi a Roomba, la telecamera è pronta per essere installata. Il modulo fotocamera sarà molto più piccolo di quanto ti aspetti. Si noti che l'obiettivo è montato su un sensore e un nastro bianco si estende dalla fotocamera. NON rimuovere o strappare il nastro! Questo è il cavo che ti serve per collegarlo al Raspberry Pi. Per prima cosa, tieni l'estremità del nastro e trova i connettori argentati e il cavo blu. Questi sono su lati opposti. Quindi, trova lo slot tra le porte Ethernet e HDMI sul tuo Raspberry Pi. Notare che c'è un piccolo lucchetto bianco che lo copre. Sollevare lentamente il lucchetto, ma non rimuoverlo dallo slot, poiché scatterebbe e si danneggerebbe in modo permanente. Dopo aver sollevato il lucchetto, prendi il nastro e affronta i connettori argentati alla porta HDMI. Il lato blu sarà rivolto verso la porta Ethernet. Far scorrere lentamente il nastro nello slot mentre è ancora sbloccato. Non è necessario forzarlo nello slot. Dopo l'inserimento, spingere nuovamente il blocco verso il basso. Se la tua fotocamera è fissata correttamente, dovresti essere in grado di tirare (delicatamente) il nastro e sentire la tensione. Il nastro non dovrebbe essere allentato. Dopo aver collegato la fotocamera al Pi, potresti notare quanto sia allentato. Questo è il motivo per cui abbiamo utilizzato un supporto stampato in 3D per stabilizzarlo. È una tua scelta determinare quali materiali desideri utilizzare per mantenere ferma la tua fotocamera per immagini di alta qualità.

2. Installazione dei file corretti e collegamento di Roomba al computer Dopo aver configurato tutto l'hardware, è possibile passare all'installazione di MATLAB insieme agli m-file associati che consentono di comunicare con il robot. Per fare ciò, apri MATLAB e crea una nuova cartella per tenere insieme tutti i file correlati. Usa questo script per installare/aggiornare i file richiesti:

- Tutti i file dovrebbero ora essere visualizzati nella cartella creata. Fare clic con il pulsante destro del mouse nella finestra Cartella corrente e selezionare "Aggiungi al percorso" per aggiungere quel percorso all'elenco delle directory in cui MATLAB cerca i file. Assicurati che tutti i tuoi file siano nel percorso corretto.

3. Una volta installati i file, puoi iniziare a connetterti al tuo robot. Inizia accendendo il tuo robot e poi resettandolo a fondo subito dopo l'avvio (non dimenticare di resettare a fondo il tuo robot ogni volta prima e dopo l'uso). In secondo luogo, collega il robot e il laptop alla stessa rete Wi-Fi. Successivamente, parleremo con il Raspberry Pi preprogrammato tramite MATLAB chiamando Roomba utilizzando il suo nome e la funzione roomba. Ad esempio, mi collegherei al robot 28 utilizzando la seguente riga: R = roomba(28).

- Notare come ho assegnato l'oggetto a una variabile R. Ora posso accedere alle funzioni Roomba associate dal file di installazione trattando la variabile R come una struttura.

- R.turnAngle(90) Se tutto è andato bene, dovrebbe suonare un tono musicale, a conferma della connessione.

Passaggio 3: logica MATLAB

Il documento PDF in fondo a questo passaggio è un diagramma di flusso logico dettagliato per il nostro processo di codifica in MATLAB. Abbiamo attivato i sensori cliff, light e light bump per consentire al robot di comunicare con noi quando rileva un oggetto nelle sue immediate vicinanze. Ad esempio, quando il robot si sposta in avanti, i suoi sensori di luce scansionano gli oggetti sul suo percorso in base al vettore in corrispondenza del quale sta viaggiando. Abbiamo scelto una soglia di distanza per il robot in modo che quando si avvicina a un oggetto, si invertirà invece di scontrarsi con esso. Il nostro robot è anche configurato con Twitter, che abbiamo specificato nel nostro processo di codifica (questo verrà mostrato di seguito).

Per migliorare l'esperienza, abbiamo utilizzato l'applicazione MATLAB sui nostri dispositivi mobili in modo da poter controllare i movimenti del robot semplicemente inclinando i nostri telefoni. Questa è un'attività facoltativa, poiché puoi certamente far muovere il robot utilizzando invece il comando moveDistance nel segmento di codice MATLAB. Tieni presente che l'utilizzo dei comandi MATLAB per controllare il tuo robot è preferibile se il tuo obiettivo è essere precisi. Se desideri puntare il tuo robot in modo che la fotocamera scatti una foto in una posizione specifica, potrebbe essere meglio codificare i movimenti del robot in MATLAB. Durante l'intrattenimento, l'utilizzo dell'applicazione MATLAB per controllare il tuo robot non è auspicabile per la precisione.

Il codice comanda a Roomba di eseguire una configurazione di base, quindi di continuare attraverso un ciclo continuo. Inizialmente il laptop creerà un collegamento con Roomba utilizzando il comando Roomba(). Imposta anche la connessione a Twitter utilizzando il comando webwrite() in MATLAB. Il ciclo contiene cinque flussi logici principali a seconda dell'ambiente che circonda Roomba. Innanzitutto Roomba controlla la presenza di ostacoli e si regola all'indietro se rileva che è ostacolato. Incorporato in quel ciclo è il secondo percorso che avvisa gli utenti se Roomba viene portato via. Un'importante utility nella dura Warzone marziana. Dopo che Roomba ha stabilito che la sua posizione è sicura, guarda al dispositivo mobile per determinare il suo prossimo movimento. Se il dispositivo mobile è inclinato in avanti, calcolerà una velocità di base a seconda della gravità della misurazione del rollio, quindi regolerà le singole velocità delle ruote per girare in base al grado di beccheggio. Il telefono può anche spostare Roomba al contrario. Uno stato neutro del dispositivo mobile apre i due percorsi finali. Un Roomba a riposo cercherà una bandiera aliena e avviserà l'utente di conseguenza.

Di seguito è riportato il nostro codice (completato in MATLAB 2017a)

% input: dati di orientamento da un dispositivo connesso wifi, fotocamera

%informazioni, dati del sensore

% outputs: il movimento è controllato dal dispositivo connesso al wifi e dal movimento

La % viene controllata dalla sicurezza leggendo i dati del sensore. Se la fotocamera rileva

% una bandiera aliena, quindi il roomba risponde twittando la bandiera nemica

% è stato individuato.

%scopo: il nostro dispositivo vive senza alcuno scopo se non quello di proteggere coloro che

% l'ha creato, serve il suo creatore e lo fa

% esattamente quello che viene detto.

%Uso: essenzialmente il programma verrà eseguito da solo.

cancella tutto, chiudi tutto, clc

%Inizializzazione di oggetti e variabili

r=roomba(28);

m=dev mobile;

%use response = webwrite(hostname, data)

hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API='SGZCTNQXCWAHRCT5';

tweet='RoboCop è operativo… in attesa di comando';

data = strcat('api_key=', API, '&status=', tweet);

risposta=webwrite(nome host, dati);

% loop in esecuzione costante

mentre 1==1

% strutture contenenti dati rilevanti

o=m.orientamento; % orientamento del dispositivo mobile

light=r.getLightBumpers(); %Valori paraurti luce

a = r.getCliffSensors(); %Valori sensore CLiff

bump = r.getBumpers(); % Sensori paraurti

%controlla i paraurti

se bump.right==1 || bump.left==1 ||bump.front==1

r.moveDistance(-.2,.2);

%check sensori di luce

elseif light.left>60 || light.leftFront>60 || light.leftCenter>60 || luce.destra>60 || light.rightFront>60 || light.rightCenter>60

r.moveDistance(-.2,.2);

%check Sensori di dislivello

%Segnale e notifica antifurto

elseif a.left<300 && a.right<300 && a.leftFront<300 && a.rightFront<300

r.stop();

r.beep();

tweet='RoboCop è stato rimosso!'

data = strcat('api_key=', API, '&status=', tweet);

risposta=webwrite(nome host, dati);

%Operazione di prevenzione della scogliera normale

altrimenti se a.left<300 || a.giusto<300 || a.anteriore sinistro<300 || a.anteriore destro<300

r.moveDistance(-.2,.2);

%Roomba ha superato i controlli e ora funzionerà con il normale funzionamento.

%Inizialmente il rollio del dispositivo viene misurato e diventa una base

%velocity che viene poi utilizzata per calcolare la velocità della ruota

%Movimento in avanti

elseif o(3)>=0 && o(3)<=60

baseVel=(-.5/60)*(o(3)-60);

se o(2)>=-70 && o(2)<0

r.setDriveVelocity(baseVel+(.3/50)*abs(o(2)), baseVel-(.3/50)*abs(o(2)));

altrimenti se o(2)=0

r.setDriveVelocity(baseVel-(.3/50)*abs(o(2)), baseVel+(.3/50)*abs(o(2)));

altrimenti r.stop

fine

%Movimento all'indietro

altrimenti se o(3)>100 && o(3)<150

r.setDriveVelocity(-.2, -.2)

r.beep();

r.beep();

%resting roomba cercherà la bandiera aliena contrassegnata come fluorescente

%verde pezzo di carta

altro

r.stop

img=r.getImage(); %scatta immagine

soglia=grigiosoglia(img(200:383,:, 2))+.1; %calc livello verde

se soglia>.42

tweet='Nemico avvistato!!'

data = strcat('api_key=', API, '&status=', tweet);

risposta=webwrite(nome host, dati);

altro

r.stop

fine

fine

fine

Passaggio 4: conclusione

Ricorda, puoi usare lo script che abbiamo scritto sopra, ma puoi sempre modificarlo per adattarlo alle tue esigenze. Non deve essere controllato dal tuo telefono! (Tuttavia, lo rende più divertente.) Scegli quale metodo preferisci utilizzare per controllare il tuo robot. Guida in giro con il tuo robot e divertiti!

Consigliato: