INHOUDSOPGAWE:
- Stap 1: Onderdele en materiaal
- Stap 2: Roomba -databasislêer
- Stap 3: Koppel aan Roomba
- Stap 4: Die kode
- Stap 5: Gevolgtrekking
Video: MATLAB -beheerde Roomba: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
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
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
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
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:
Verander jou Roomba in 'n Mars Rover: 5 stappe
Omskep jou Roomba in 'n Mars Rover:
Roomba Bot the Bulider: 5 stappe (met foto's)
Roomba Bot die Bulider: Bot die Bouwer is 'n roomba, wat met " grabbers " aan die voorkant geheg, kan voorwerpe rondbeweeg. Die kode daarmee is ingestel om die eerste beweging op te neem met 'n GUI -boks wat u met slegs 'n klik van u muis kan beheer. Na
Roomba MATLAB -projek: 5 stappe
Roomba MATLAB -projek: Die huidige plan wat NASA vir die Mars -rover het, is dat dit 'n data -insamelaar moet wees en om Mars kan rondbeweeg en monsters van die grond kan versamel om na die aarde terug te bring, sodat wetenskaplikes kan sien of daar vorige lewensvorme bestaan die planeet. Bykomende
Van Roomba tot Rover in net 5 stappe !: 5 stappe
Van Roomba tot Rover in net 5 stappe !: Roomba -robotte is 'n prettige en maklike manier om u tone in die wêreld van robotika te dompel. In hierdie instruksies sal ons verduidelik hoe u 'n eenvoudige Roomba kan omskep in 'n beheerbare rover wat sy omgewing gelyktydig ontleed
Roomba With MATLAB: 4 stappe (met foto's)
Roomba With 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