Sommario:
- Passaggio 1: parti e materiali
- Passaggio 2: configurazione
- Passaggio 3: logica MATLAB
- Passaggio 4: conclusione
Video: Roomba con MATLAB: 4 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
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
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
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:
Roomba controllato da MATLAB: 5 passaggi
MATLAB Controlled Roomba: 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
Come smontare un computer con semplici passaggi e immagini: 13 passaggi (con immagini)
Come smontare un computer con semplici passaggi e immagini: questa è un'istruzione su come smontare un PC. La maggior parte dei componenti di base sono modulari e facilmente smontabili. Tuttavia è importante che tu sia organizzato al riguardo. Questo ti aiuterà a non perdere parti e anche a rendere più facile il rimontaggio
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
Roomblock: una piattaforma per l'apprendimento della navigazione ROS con Roomba, Raspberry Pi e RPLIDAR: 9 passaggi (con immagini)
Roomblock: una piattaforma per l'apprendimento della navigazione ROS con Roomba, Raspberry Pi e RPLIDAR: cos'è questo?"Roomblock" è una piattaforma robotica composta da un Roomba, un Raspberry Pi 2, un sensore laser (RPLIDAR) e una batteria mobile. Il telaio di montaggio può essere realizzato con stampanti 3D. Il sistema di navigazione ROS consente di creare una mappa delle stanze e utilizzare i