INHOUDSOPGAWE:

Roomba With MATLAB: 4 stappe (met foto's)
Roomba With MATLAB: 4 stappe (met foto's)

Video: Roomba With MATLAB: 4 stappe (met foto's)

Video: Roomba With MATLAB: 4 stappe (met foto's)
Video: Mr. Roombato - A MATLAB-Driven Roomba Project 2024, November
Anonim
Roomba Met MATLAB
Roomba Met MATLAB

Hierdie projek maak gebruik van MATLAB en 'n programmeerbare robot van iRobot Create2. Deur ons kennis van MATLAB op die proef te stel, kan ons die Create2 programmeer om beelde te interpreteer en seine op te spoor. Die funksionaliteit van die robot hang hoofsaaklik af van die MATLAB -mobiele app en 'n Raspberry Pi -kameramodule.

Stap 1: Onderdele en materiaal

Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal
Onderdele en materiaal

1. iRobot Create, Weergawe 2

- Dit is 'n programmeerbare robot wat soos 'n Roomba lyk. Hou in gedagte dat hierdie produk van iRobot nie 'n vakuum is nie. Dit is bedoel vir persoonlike programmering deur die gebruiker.

2. MATLAB 2017a

- Die meeste ouer weergawes sal versoenbaar wees met die kode wat ons hieronder gebruik het. MATLAB sal 'n opdrag identifiseer wat nie versoenbaar is met die weergawe wat u het nie en 'n opdrag wat die beste pas, voorstel.

3. Framboos Pi 3 Model B, weergawe 1.2

- Kyk of die Raspberry Pi versoenbaar is met u iRobot. Sien hierdie skakel vir verdere hulp: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Hierdie instruksie neem aan dat u met 'n vooraf geprogrammeerde Raspberry Pi werk. Hou in gedagte dat u met 'n vooraf geprogrammeerde Pi moet werk om die volgende stappe te laat werk. As u 'n vooraf geprogrammeerde Pi gebruik, kan u al u kodering alleen in MATLAB uitvoeren.

4. Kameramodule V2 (vir Raspberry Pi)

- U sal miskien verbaas wees; ten spyte van die grootte, is die Raspberry Pi -kameramodule van baie goeie gehalte. Dit is die goedkoopste en mees versoenbare opsie vir hierdie projek.

Opsioneel: 3D-gedrukte staander. Dit word gebruik om die kamera te stabiliseer. Dit beïnvloed nie die funksionaliteit van die robot nie, maar dit sal u kodering help as u beelddata vir kleur- en/of voorwerpherkenning wil gebruik.

Stap 2: Konfigurasie

Konfigurasie
Konfigurasie
Konfigurasie
Konfigurasie

1. Koppel Raspberry Pi en kameramodule (hardeware)

- Om die Raspberry Pi aan te dryf, moet u 'n manlike uiteinde -mikro -USB na die vroulike kragpoort van die mikrobeheerder stuur. Opsioneel: 'n Spanningsreguleerder kan gebruik word om te verseker dat die spanning nie 5V oorskry nie. Nadat u die Raspberry Pi aangeskakel het, kan u dit aan u robot koppel deur 'n USB -poort van die moederbord na die USB -poort A op die mikrobeheerder te stuur.

- Nadat die Pi aan die Roomba gekoppel is, is die kamera gereed om geïnstalleer te word. Die kameramodule sal baie kleiner wees as wat u verwag. Let daarop dat die lens op 'n sensor gemonteer is en dat 'n wit lint van die kamera af strek. Moenie die lint verwyder of skeur nie! Dit is die kabel wat u nodig het om dit aan die Raspberry Pi te koppel. Hou eers die einde van die lint vas en vind die silwer verbindings en die blou kabel. Dit is aan weerskante. Soek vervolgens die gleuf tussen die ethernet- en HDMI -poorte op u Raspberry Pi. Let op dat daar 'n klein, wit slot is wat dit bedek. Lig die slot stadig op, maar moenie dit uit die gleuf haal nie, want dit sal klap en permanent beskadig word. Sodra u die slot opgetel het, gryp u die lint en kyk na die silwer verbindings na die HDMI -poort. Die blou kant wys na die Ethernet -poort. Skuif die lint stadig in die gleuf terwyl dit nog oopgesluit is. U hoef dit nie in die gleuf te dwing nie. Na die insetting, druk die slot terug. As u kamera behoorlik vasgemaak is, moet u die lint (saggies) kan trek en spanning kan voel. Die lint moet nie los wees nie. Nadat u u kamera aan die Pi gekoppel het, kan u agterkom hoe los dit is. Daarom het ons 'n 3D-gedrukte houer gebruik om dit te stabiliseer. Dit is u keuse om te bepaal watter materiaal u wil gebruik om u kamera stil te hou vir hoë kwaliteit beeldvorming.

2. Behoorlike lêers installeer en Roomba aan u rekenaar koppel Nadat al u hardeware gekonfigureer is, kan u nou voortgaan met die installering van MATLAB saam met die gepaardgaande m-lêers waarmee u met die robot kan kommunikeer. Om dit te doen, maak MATLAB oop en skep 'n nuwe gids om alle verwante lêers bymekaar te hou. Gebruik hierdie script om die vereiste lêers te installeer/op te dateer:

- Alle lêers moet nou in u geskepte gids verskyn. Klik met die rechtermuisknop in die venster Huidige gids en kies 'Voeg by pad' om die pad by te voeg tot die lys gidse waar MATLAB lêers soek. Maak seker dat al u lêers op die regte pad is.

3. Sodra die lêers geïnstalleer is, kan u nou aan u robot koppel. Begin deur u robot aan te skakel en herstel dit dan onmiddellik na die aanvang (moenie vergeet om u robot elke keer voor en na gebruik te herstel nie). Koppel tweedens u robot en skootrekenaar aan dieselfde wifi -netwerk. Hierna praat ons met die vooraf geprogrammeerde Raspberry Pi via MATLAB deur die Roomba te bel met die voornaam en die funksie roomba. Ek sou byvoorbeeld met robot 28 konnekteer deur die volgende reël te gebruik: R = roomba (28).

- Let op hoe ek die voorwerp aan 'n veranderlike R. toegewys het. Ek het nou toegang tot die gepaardgaande Roomba -funksies vanaf die installeringslêer deur die veranderlike R soos 'n struktuur te behandel.

- R.turnAngle (90) As alles goed verloop, moet 'n musikale toon speel wat die verband bevestig.

Stap 3: MATLAB Logic

Die PDF -dokument onderaan hierdie stap is 'n gedetailleerde logika -vloeidiagram vir ons koderingsproses in MATLAB. Ons het die krans-, lig- en ligstampsensors geaktiveer om die robot in staat te stel om met ons te kommunikeer wanneer hy 'n voorwerp in sy onmiddellike omgewing opspoor. As die robot byvoorbeeld vorentoe beweeg, soek sy ligsensors na voorwerpe in sy pad volgens die vektor waarteen hy beweeg. Ons het 'n afstanddrempel vir die robot gekies, sodat wanneer dit 'n voorwerp nader, dit omdraai in plaas daarvan om daarmee te bots. Ons robot is ook gekonfigureer met Twitter, wat ons in ons koderingsproses gespesifiseer het (dit sal hieronder getoon word).

Om die ervaring te verbeter, het ons die MATLAB -toepassing op ons mobiele toestelle gebruik, sodat ons die bewegings van die robot kan beheer deur net ons telefone te kantel. Dit is 'n opsionele aktiwiteit, aangesien u die robot beslis kan laat beweeg deur die opdrag moveDistance in die MATLAB -kodesegment te gebruik. Hou in gedagte dat die gebruik van MATLAB -opdragte om u robot te beheer die voorkeur geniet as u doel presies wil wees. As u u robot wil rig sodat die kamera op 'n spesifieke plek 'n foto neem, is dit beter om die bewegings van die robot in MATLAB te kodeer. Terwyl dit vermaaklik is, is die gebruik van die MATLAB -toepassing om u robot te beheer nie wenslik vir akkuraatheid nie.

Die kode beveel die Roomba om 'n basiese opstelling uit te voer en dan deur 'n deurlopende lus te gaan. Aanvanklik sal die skootrekenaar 'n skakel met die Roomba opstel met behulp van die opdrag Roomba (). Dit stel ook die twitter -verbinding op met die opdrag webwrite () in MATLAB. Die lus bevat vyf hoof logiese vloei, afhangende van die omgewing rondom die Roomba. Eerstens kyk die Roomba na hindernisse en pas agteruit as hy agterkom dat dit belemmer word. In die lus is die tweede pad wat gebruikers in kennis stel as die Roomba weggevoer word. 'N Belangrike hulpmiddel in die harde Mars -oorlogsone. Nadat die Roomba vasgestel het dat sy posisie veilig is, kyk hy na die mobiele toestel om die volgende beweging daarvan te bepaal. As die mobiele toestel vorentoe gekantel word, sal dit 'n basissnelheid bereken, afhangende van die erns van die rolmeting, as om die individuele wielsnelhede aan te pas op grond van die toonhoogte. Die telefoon kan die Roomba ook agteruit skuif. 'N Neutrale toestand vir mobiele toestelle maak die laaste twee paaie oop. 'N Rustende Roomba sal na 'n vreemde vlag soek en die gebruiker dienooreenkomstig waarsku.

Hieronder is ons kode (voltooi in MATLAB 2017a)

%insette: oriëntasiedata van 'n wifi -gekoppelde toestel, kamera

%inligting, sensordata

%uitsette: beweging word beheer deur die wifi -gekoppelde toestel en die beweging

% word veiligheid nagegaan deur sensordata te lees. As die kamera opspoor

'n uitheemse vlag, dan reageer die roomba deur die vyandelike vlag te tweet

% is opgemerk.

doel: ons toestel het geen doel nie, behalwe om diegene te beskerm wat

% dit geskep het, dit dien sy skepper en doen dit

% presies wat dit gesê is.

%Gebruik: in wese loop die program op sy eie.

maak alles skoon, sluit almal, clc

%Initialiseer voorwerpe en veranderlikes

r = roomba (28);

m = mobiledev;

%gebruik reaksie = webskryf (gasheernaam, data)

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

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop is operasioneel … wag op bevel';

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

antwoord = webskryf (gasheernaam, data);

%loop voortdurend lus

terwyl 1 == 1

%Strukture wat herhalende data bevat

o = m.oriëntasie; %oriëntasie van mobiele toestel

lig = r.getLightBumpers (); %Ligte bufferwaardes

a = r.getCliffSensors (); %CLiff Sensor Waardes

stamp = r.getBumpers (); %Bumpersensors

kontroleer buffers

as bump.right == 1 || stamp.links == 1 || stamp.front == 1

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

%kontroleer ligsensors

andersif lig.links> 60 || lig.linksVoor> 60 || lig.sentrum> 60 || lig.reg> 60 || light.rightFront> 60 || light.rightCenter> 60

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

kyk na Cliff Sensors

%Anti-diefstal sein en kennisgewing

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

r.stop ();

r.biep ();

tweet = 'RoboCop is opgehef!'

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

antwoord = webskryf (gasheernaam, data);

%Normale kransvermyding

anders as a.links <300 || a.reg <300 || a.linksVoor <300 || a.rightFront <300

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

%Roomba het die tjeks geslaag en sal nou met normale werking werk.

%Die rol van die toestel word aanvanklik gemeet en word 'n basis

%snelheid wat dan gebruik word om die wiel spoed te bereken

%Beweging vorentoe

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

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

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

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

anders as o (2) = 0

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

anders r.stop

einde

Terugwaartse beweging

anders as o (3)> 100 && o (3) <150

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

r.biep ();

r.biep ();

%rustende roomba sal soek na die uitheemse vlag wat as 'n bloeisel gemerk is

%groen stuk papier

anders

r.stop

img = r.getImage (); %neem beeld

drumpel = grys (img (200: 383,:, 2))+. 1; %calc groen vlak

as drempel>.42

tweet = 'Vyand raakgesien !!'

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

antwoord = webskryf (gasheernaam, data);

anders

r.stop

einde

einde

einde

Stap 4: Gevolgtrekking

Onthou, u kan die skrif wat ons hierbo geskryf het, gebruik, maar u kan dit altyd aanpas volgens u behoeftes. Dit hoef nie deur u telefoon beheer te word nie! (Dit maak dit egter lekkerder.) Kies watter metode u verkies om u robot te beheer. Ry rond met jou robot en geniet!

Aanbeveel: