INHOUDSOPGAWE:

MATLAB -beheerde Roomba: 5 stappe
MATLAB -beheerde Roomba: 5 stappe

Video: MATLAB -beheerde Roomba: 5 stappe

Video: MATLAB -beheerde Roomba: 5 stappe
Video: Getting Started with MATLAB 2024, Julie
Anonim
MATLAB -beheerde Roomba
MATLAB -beheerde Roomba
MATLAB -beheerde Roomba
MATLAB -beheerde Roomba

Die doel van hierdie projek is om MATLAB sowel as 'n aangepaste iRobot -programmeerbare robot te gebruik. Ons groep het ons koderingsvaardighede gekombineer om 'n MATLAB -script te skep wat baie funksies van die iRobot gebruik, insluitend die kransensors, bumper sensors, lig sensors en die kamera. Ons het hierdie sensor- en kamerametings as insette gebruik, waardeur ons sekere uitsette kon skep wat ons wil hê met behulp van MATLAB -kodefunksies en lusse. Ons gebruik ook die MATLAB -mobiele toestel en die gyroscoop as 'n manier om aan te sluit op die iRobot en dit te beheer.

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

MATLAB 2018a

-Die 2018 -weergawe van MATLAB is die mees gewilde weergawe, meestal omdat dit die beste werk met die kode wat met die mobiele toestel verbind word. Die meeste van ons kode kan egter in die meeste MATLAB -weergawes geïnterpreteer word.

iRobot Skep toestel

-Hierdie toestel is 'n spesiaal vervaardigde toestel wat uitsluitlik bedoel is vir programmering en kodering. (Dit is nie 'n werklike vakuum nie)

Framboos Pi (met kamera)

- Dit is 'n nie-duur rekenaarbord wat werk as die brein van die iRobot. Dit is miskien klein, maar kan baie dinge. Die kamera is 'n ekstra toevoeging. Dit gebruik ook die framboos pi om al sy funksies en opdragte te verkry. Die kamera hierbo is gemonteer op 'n 3D -gedrukte standaard, gemaak deur die Engineering Fundamentals -afdelings aan die Universiteit van Tennessee

Stap 2: Roomba -databasislêer

Roomba -databasislêer
Roomba -databasislêer

Daar is 'n hooflêer wat u benodig om die regte funksies en opdragte vir u roomba te gebruik. Hierdie lêer is waarvandaan u kode geskryf het, trek funksies af om die werking van u roomba beter hanteerbaar te maak.

U kan die lêer aflaai by hierdie skakel of die aflaaibare lêer hieronder

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Stap 3: Koppel aan Roomba

Eerstens moet u seker maak dat u robot met 'n mikro -USB -aansluiting op u framboos -pi -bord gekoppel is. Dan moet u u rekenaar en robot behoorlik met dieselfde WiFi koppel. Sodra dit gedoen is, kan u u robot aanskakel en daaraan koppel via die gegewe opdrag in die robotdatabasislêer. (Stel u robot altyd hard voor en nadat u dit gebruik het). Ons gebruik byvoorbeeld die opdrag "r.roomba (19)" om aan ons robot te koppel en die veranderlike r aan ons toestel toe te ken. Dit verwys terug na die databasislêer, wat ons veranderlike opstel as 'n struktuur waarna ons op enige gegewe oomblik kan verwys.

Stap 4: Die kode

Die kode
Die kode
Die kode
Die kode

Ons het die volledige kode hieronder aangeheg, maar hier is 'n kort oorsig wat die belangrike elemente in ons skrif beklemtoon. Ons het al die sensors sowel as die kamera gebruik om ons robot se potensiaal ten volle te benut. Ons het ook kode ingesluit waarmee ons 'n mobiele toestel aan ons robot kon koppel en die gryoskoop daarvan kon gebruik om dit met die hand te beheer.

Ons het begin met die eenvoudige opdrag "r.setDriveVelocity (.06)" wat die snelheid van die robot na 0,06 m/s stel. Dit is net om die robot vooraf aan die gang te kry

Ons hoofskrip begin dan met 'n tyd -lus wat die data van die gegewe robot ophaal deur strukture te skep wat ons hieronder in voorwaardelike stellings kan verwys en gebruik, sodat ons die robot kan vertel om 'n sekere opdrag uit te voer op grond van die struktuurdata die robot lees met sy sensors. Ons stel dit so op dat die robot sy kransensors lees en 'n swart pad volg

terwyl ware % terwyl lus gaan totdat iets "vals" voorkom (in hierdie geval gaan dit oneindig aan) data = r.getCliffSensors; data2 = r.getBumpers; % haal data deurlopend oor die waardes van die kransensor op en ken dit toe aan 'n veranderlike % img = r.getImage; % Neem 'n foto van die gemonteerde kamera % beeld (img); % Toon die prentjie wat geneem is % red_mean = gemiddelde (gemiddelde (img (:,:, 1)))); % Neem die gemiddelde waarde vir die groen kleur as data.rightFront <2000 r.turnAngle (-2); % draai die Roomba ongeveer.2 grade CW sodra die waarde vir die regterkantse kransensors onder 2000 r.setDriveVelocity (.05) val; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % sê vir die Roomba om vorentoe te bly met ongeveer.2 m/s as beide waardes van die regter- en linkervoorsensors onder 2000 % r.turnAngle (0) val; % sê die Roomba moet nie draai as die bogenoemde voorwaardes waar is nie

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.links == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Na hierdie terwyl -lus, voer ons nog 'n terwyl -lus in wat die data wat deur die kamera verkry is, aktiveer. En ons gebruik 'n if -verklaring in hierdie terwyl -lus wat 'n beeld herken met behulp van 'n spesifieke program (alexnet), en sodra dit die prentjie geïdentifiseer het, veroorsaak dit onmiddellik die afstandsbediening van die mobiele toestel

anet = alexnet; % Ken alexnet diep leer toe aan 'n veranderlike terwyl ware % Oneindig terwyl lus img = r.getImage; img = imresize (img, [227, 227]); label = classify (anet, img); as etiket == "papierhanddoek" || label == "yskas" label = "water"; eindbeeld (afb); titel (char (etiket)); getrek;

Die while -lus waarmee ons die toestel met ons telefoon kan beheer, haal die data uit die gyroscoop van die telefoon en steek dit in 'n matriks wat data voortdurend na MATLAB op die rekenaar terugstroom. Ons gebruik 'n if -stelling wat die data van die matriks lees en 'n uitset lewer wat die toestel beweeg op grond van sekere waardes van die telefoon se gyroscoop. Dit is belangrik om te weet dat ons die oriëntasie -sensors van die mobiele toestel gebruik het. Die een vir drie matriks wat hierbo genoem word, word gekategoriseer deur elke element van die oriëntasie -sensors van die telefoon, wat asimut, toonhoogte en sy is. Die as -verklarings het toestande geskep wat sê wanneer die sy die waardes 50 oorskry of onder -50 val, dan beweeg die robot 'n sekere afstand vorentoe (positief 50) of agteruit (negatief 50). En dieselfde geld vir die toonhoogtewaarde. As die toonhoogte die waarde van 25 oorskry, val onder -25, draai die robot teen 'n hoek van 1 grade (positief 25) of negatief 1 grade (negatief 25)

terwyl ware pouse (.1) % Pouse van.5 sekondes voordat elke waarde geneem word Controller = iphone. Orientation; Ken die matriks vir die waardes van die oriëntasie van die iPhone toe aan 'n veranderlike Azimuthal = Controller (1); % Ken die eerste waarde van die matriks toe aan 'n veranderlike Pitch = Controller (2); Ken die tweede waarde van die matriks toe aan 'n veranderlike (kantel vorentoe en agtertoe as die iPhone sywaarts gehou word) Sy = Beheerder (3); % Ken die derde waarde van die matriks toe aan 'n veranderlike (kantel links en regs as die iPhone sywaarts gehou word) % Veroorsak 'n uitset gebaseer op die oriëntasie van die telefoon as Sy> 130 || Sy 25 r.moveDistance (-. 1) % Beweeg die Roomba ongeveer 0,1 meter agteruit as die iPhone ten minste 25 grade agteruit gekant is anders as Kant 25 r.turnAngle (-1) % Draai die Roomba ongeveer 1 graad CCW as die iPhone is ten minste 25 grade linksoor gekant anders as Pitch <-25 r.turnAngle (1) % Draai die Roomba ongeveer 1 graad CW as die iPhone ten minste 25 grade kantel

Dit is slegs die hoogtepunte van die belangrikste stukke van ons kode, wat ons bygevoeg het as u vinnig 'n gedeelte vir u voordeel moet kopieer en plak. Ons volledige kode is egter hieronder aangeheg indien nodig

Stap 5: Gevolgtrekking

Hierdie kode wat ons geskryf het, is spesifiek ontwerp vir ons robot sowel as ons algemene visie van die projek. Ons doel was om al ons MATLAB -koderingvaardighede te gebruik om 'n goed ontwerpte script te ontwerp wat die meeste van die robot se funksies gebruik. Die telefoonkontroleerder is nie so moeilik as wat u dink nie, en ons hoop dat ons kode u kan help om die konsep agter die kodering van 'n iRobot beter te verstaan.

Aanbeveel: