Inhoudsopgave:

Roomba Explorer: 4 stappen
Roomba Explorer: 4 stappen

Video: Roomba Explorer: 4 stappen

Video: Roomba Explorer: 4 stappen
Video: ¿Como solucionar el problema cuando la Roomba no carga? Solución en menos de 2 minutos 2023 2024, November
Anonim
Roomba Explorer
Roomba Explorer

Door gebruik te maken van MATLAB en de Create2 Robot van iRobot, zal dit project verschillende gebieden van een onbekende locatie verkennen. We hebben de sensoren op de robot gebruikt om te helpen bij het manoeuvreren op gevaarlijk terrein. Door foto's en videobeelden te krijgen van een aangesloten Raspberry Pi, konden we de obstakels bepalen waarmee de robot te maken zal krijgen, en deze zullen worden geclassificeerd.

Onderdelen en materialen

Voor dit project heb je nodig:

-een computer

-nieuwste versie van MATLAB (MATLAB R2018b werd gebruikt voor dit project)

- roombaInstalleer toolbox

-iRobot's Create2-robot

-Raspberry Pi met camera

Stap 1: Initialisatie en sensoren

Initialisatie en sensoren
Initialisatie en sensoren

Voordat we met programmeren begonnen, hebben we de roombaInstall-toolbox gedownload, die toegang gaf tot verschillende componenten van de robot.

In eerste instantie hebben we een GUI gemaakt om elke robot te initialiseren. Om dit te doen, moet u het nummer van de Robot als invoer invoeren. Dit geeft toegang tot ons programma om de robot uit te voeren. We hebben eraan gewerkt om de robot door de vele terreinen te laten manoeuvreren die hij zou tegenkomen. We hebben de Cliff Sensors, Light Bump Sensors en Physical Bump Sensors geïmplementeerd door hun output te gebruiken om de robot te laten trippen om zijn snelheid en/of richting te veranderen. Wanneer een van de zes Light Bump Sensors een object detecteert, zal de waarde die ze produceren afnemen, waardoor de snelheid van de robot afneemt om een botsing op volle snelheid te voorkomen. Wanneer de robot uiteindelijk tegen een obstakel botst, rapporteren de fysieke stootsensoren een waarde groter dan nul; hierdoor zal de Robot stoppen, zodat er geen botsingen meer zijn en meer functies in werking kunnen worden gesteld. Voor de Cliff Sensors lezen ze de helderheid van het gebied om hen heen. Als de waarde groter is dan 2800, hebben we vastgesteld dat de robot zich op een stabiele en veilige ondergrond zou bevinden. Maar als de waarde lager is dan 800, detecteren de klifsensoren een klif en stoppen ze onmiddellijk om er niet af te vallen. Elke waarde daartussen werd bepaald om water te vertegenwoordigen en zal ervoor zorgen dat de robot zijn actie stopt. Door gebruik te maken van bovenstaande sensoren wordt de snelheid van de Robot gewijzigd waardoor we beter kunnen bepalen of er gevaar dreigt.

Hieronder staat de code (van MATLAB R2018b)

%% initialisatie

dlgPrompts = {'Roomba-nummer'};

dlgTitle = 'Selecteer uw Roomba';

dlgDefaults = {''};

opts. Resize = 'aan';

dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Creëer een venster waarin de gebruiker wordt gevraagd zijn roomba-nummer in te voeren

n=str2double(dlgout{1});

r=roomba(n); % Initialiseert door de gebruiker gespecificeerde Roomba %% Snelheidsbepaling van Light Bump Sensors terwijl true s=r.getLightBumpers; % ontvang lichtstootsensoren

lbumpout_1=extractveld(en, 'links'); % neemt de numerieke waarden van de sensoren en maakt ze bruikbaarder lbumpout_2=extractfield(s, 'leftFront');

lbumpout_3=extractfield(s, 'leftCenter');

lbumpout_4=extractfield(s, 'rightCenter');

lbumpout_5=extractfield(s, 'rightFront');

lbumpout_6=extractfield(s, 'rechts');

lbout=[lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % zet waarden om in matrix

sLbump=sort(lbout); %sorteert matrix naar laagste waarde kan worden geëxtraheerd

lowLbump=sLbump(1); snelheid=.05+(lowLbump)*.005 %gebruikt de laagste waarde, die obstakels in de buurt voorstelt, om de snelheid te bepalen, hogere snelheid als er niets wordt gedetecteerd

r.setDriveVelocity(snelheid, snelheid)

einde

% fysieke bumpers

b=r.getBumpers; %Uitvoer waar, onwaar

bsen_1=extractveld(b, 'links')

bsen_2=extractveld(b, 'rechts')

bsen_3=extractfield(b, 'voorkant')

bsen_4=extractfield(b, 'leftWheelDrop')

bsen_5=extractfield(b, 'rightWheelDrop')

hobbels=[bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump=som(bums)

als tbump>0 r.setDriveVelocity(0, 0)

einde

% Afgrondsensoren

c=r.getCliffSensors %% 2800 veilig, anders water

csen_1=extractveld(c, 'links')

csen_2=extractfield(c, 'rechts')

csen_3=extractfield(c, 'leftFront')

csen_4=extractfield(c, 'rightFront')

kliffen=[csen_1, csen_2, csen_3, csen_4]

ordcliff=sorteer(kliffen)

als ordcliff(1) < 2750

r.setDriveVelocity(0, 0)

als klif<800

disp 'klip'

anders

disp 'water'

einde

r. Draaihoek(45)

einde

Stap 2: Gegevens ophalen

Nadat de fysieke stootsensoren zijn geactiveerd, zal de robot zijn ingebouwde Raspberry Pi implementeren om een foto van het obstakel te maken. Na het maken van een foto, met behulp van tekstherkenning als er tekst in de afbeelding staat, zal de Robot bepalen wat het obstakel is en wat het obstakel zegt.

img = r.getImage; imshow(img);

imwrite(img, 'imgfromcamera.jpg')

foto = imread('imgfromcamera.jpg')

ocrResultaten = ocr(foto)

herkendeText = ocrResultaten. Tekst;

figuur;

imshow (foto) tekst (220, 0, herkende tekst, 'BackgroundColor', [1 1 1]);

Stap 3: Missie voltooien

Wanneer de robot bepaalt dat het obstakel THUIS is, voltooit hij zijn missie en blijft hij thuis. Na voltooiing van de missie stuurt de robot een e-mailwaarschuwing dat hij naar huis is teruggekeerd en stuurt hij de foto's die hij tijdens zijn reis heeft gemaakt.

% Email verzenden

setpref('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref('Internet', 'E_mail', '[email protected]'); % e-mailaccount om te verzenden vanaf setpref('Internet', 'SMTP_Username', 'voer de e-mail van de afzender in'); % afzender gebruikersnaam setpref('Internet', 'SMTP_Password', 'voer het wachtwoord van de afzender in'); % Afzenders wachtwoord

props = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');

sendmail('Voer ontvangende e-mail in', 'Roomba', 'Roomba is thuisgekomen!!', 'imgfromcamera.jpg') % e-mailaccount om naar te verzenden

De Robot is dan klaar.

Stap 4: Conclusie

Conclusie
Conclusie

Het meegeleverde MATLAB-programma is gescheiden van het hele script dat met de Robot werd gebruikt. Zorg ervoor dat u in het definitieve ontwerp alle code, behalve de initialisatiestap, in een while-lus plaatst om ervoor te zorgen dat de bumpers constant actief zijn. Dit programma kan worden aangepast aan de behoeften van de gebruiker. De configuratie van onze Robot wordt getoond.

*Herinnering: vergeet niet dat de roombaInstall-toolbox nodig is om MATLAB te laten communiceren met de robot en de ingebouwde Raspberry Pi.

Aanbevolen: