Inhoudsopgave:

Roomba Scout Explorer: 8 stappen
Roomba Scout Explorer: 8 stappen

Video: Roomba Scout Explorer: 8 stappen

Video: Roomba Scout Explorer: 8 stappen
Video: SAUGROBOTER TEST 2021 - Die BESTEN Staubsauger Roboter mit Wischfunktion & Preis/Leistungs-Sieger! 2024, Juli-
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Als een van de meest langverwachte en veel onderzochte Amerikaanse projecten, zijn de Marsrover-projecten menselijke prestaties geworden in de steeds voortschrijdende productie van hightech autonome systemen met als enig doel het onderzoeken en interpreteren van de landmassa's en oppervlakken van de rode planeet achter de aarde. Als onderdeel van een meer persoonlijk project ter ere van de Mars-missies, was ons doel om een roomba-robot te creëren die autonoom kan handelen gedurende een bepaald tijdsbestek en dienovereenkomstig kan reageren op bepaalde criteria in zijn omgeving.

Wat uniciteit betreft, hebben we ons gericht op het maken van een diagram dat elk pad laat zien dat de robot vanaf zijn oorsprong volgt. Bovendien zal de robot in panoramische stijl het aantal objecten in zijn omgeving kunnen tellen.

Stap 1: Apparatuur

-Roomba met bevestigbare camera (met specifieke naam bekend)

-Verbonden server

-Windows 10 / Mac met internetverbinding

-Helder platform

-Donkere vloer

-Alle verdwaalde objecten met een monochromatisch ontwerp

Stap 2: MATLAB-configuratie

MATLAB-configuratie
MATLAB-configuratie

Om taken en functies voor uw roomba te creëren, moet u over de specifieke codes en toolkits beschikken die de roomba-opdrachten bevatten.

Nadat MATLAB 2016a en hoger is gedownload, maakt u een map om deze robotbestanden te bevatten en plaatst u het volgende MATLAB-bestand hieronder in de map en voert u het uit om de resterende benodigde roomba-bestanden te installeren.

Klik daarna met de rechtermuisknop in het venster Huidige map, beweeg uw muis over "Een pad toevoegen" en klik op "Huidige map". Nu moet er een pad worden ingesteld zodat elk van deze bestanden zal worden gebruikt om de roomba te activeren.

Gebruik nu de onderstaande opdracht in het opdrachtvenster om de roomba in te stellen:

r=roomba(#).

Het symbool # is het 'nummer' van de opgegeven roomba; als u echter alleen een simulator van de roomba wilt, typt u gewoon de volgende opdracht:

r=roomba(0).

De simulatie zou worden aanbevolen voor het testen van bewegingspatronen.

Als je benieuwd bent welke commando's de roomba kan volgen, typ dan het volgende in het commandovenster:

doc roomba.

Ga voor meer informatie naar de volgende website:

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

Stap 3: Functie: Beweging

Functie: Beweging
Functie: Beweging
Functie: Beweging
Functie: Beweging

Wat beweging betreft, zou de roomba automatisch moeten bewegen gedurende een ingestelde tijdsperiode die is opgegeven in de ingangen. Het doel van de beweging van de robot is om goed te reageren wanneer zijn sensoren (bumpers, lichtbumpers en klifsensoren) veranderen in de aanwezigheid van verschillende obstakels. Dit deel zou als basis dienen voor alle commando's van de roomba, aangezien er later meer functies aan de code worden toegevoegd. Er waren wat specificaties nodig:

-Om schade te verminderen, moet de robot de snelheid verlagen naar een lagere snelheid.

-Bij het naderen van een klif of muur, beweegt de robot achteruit en verandert de hoek afhankelijk van het impactpunt

-Na enige tijd rijden zal de roomba uiteindelijk stoppen en foto's maken van de omgeving

Merk op dat de gebruikte waarden betrekking hadden op de simulator; waarden zoals de draaihoeken, draaisnelheden en de voorinstellingen van de robotsensor moeten worden gewijzigd bij gebruik van de eigenlijke robot om stabiliteit en rekenschap van apparatuurfouten te garanderen.

Stap 4: Functie: beeldverwerking

Functie: Beeldverwerking
Functie: Beeldverwerking

Op verzoek kregen we de taak om de gegevens van een afbeelding (of meerdere afbeeldingen) die door de camera van de robot waren ontvangen, aan te passen, waarop we besloten de roomba het aantal objecten dat hij in de afbeelding ziet, te laten 'tellen'.

We volgden de techniek om MATLAB grenzen te laten trekken rond zwartgeblakerde objecten die contrasteren met een witte achtergrond. Deze functie heeft echter de neiging om problemen te hebben in een open gebied, aangezien de verschillende vormen en kleuren door de camera worden waargenomen, wat resulteert in ongewoon hoge aantallen.

Merk op dat deze functie niet kan werken in de simulator omdat er geen camera is voorzien; indien geprobeerd, zal er een fout optreden die verklaart dat alleen een (:,:, 3) matrix kan worden gebruikt.

Stap 5: Functie: Mapping

Functie: Mapping
Functie: Mapping
Functie: Mapping
Functie: Mapping
Functie: Mapping
Functie: Mapping
Functie: Mapping
Functie: Mapping

Een extra functie die we wilden dat de robot had, was het in kaart brengen van zijn locaties, aangezien deze rechtstreeks in wisselwerking staat met de omgeving. De onderstaande code probeert dus een kaart te openen en een coördinatensysteem op te zetten met details over elke locatie waar de bumpersensoren van de robot worden ingedrukt. Dit bleek het langste deel van de drie delen om afzonderlijk te testen, maar het bleek veel eenvoudiger wanneer het werd toegepast op het uiteindelijke script.

Om een limiet toe te voegen aan de lengte van de runtime van de functie, werd de n<20-limiet op de while-lus gebruikt voor testdoeleinden.

Houd er echter rekening mee dat vanwege de complexiteit van de code, er meer fouten optreden naarmate het codesegment lang wordt uitgevoerd; uit eerdere tests blijkt dat tien hobbels het aantal punten zijn voordat er significante fouten optreden.

Stap 6: nevenschikking

nevenschikking
nevenschikking
nevenschikking
nevenschikking
nevenschikking
nevenschikking
nevenschikking
nevenschikking

Omdat dit allemaal in één bestand wordt geplaatst, hebben we een functie gemaakt met elk van de vorige twee stappen als subfuncties. Er is een definitief ontwerp gemaakt met de volgende wijziging aan de redux-functie genaamd "recon". Om verwarring voor MATLAB te voorkomen, werden de "counter"- en "rombplot3"-scripts hernoemd als respectievelijk ingesloten functies "CountR" en "plotr".

In de definitieve versie moesten verschillende wijzigingen worden aangebracht in tegenstelling tot de vorige scripts:

-De oorsprong wordt altijd gemarkeerd met een rode cirkel

-Elke keer dat de roomba stopt van zijn bumpers, wordt de locatie gemarkeerd met een zwarte cirkel

-Elke keer dat de roomba stopt met zijn klifsensoren, wordt de locatie gemarkeerd met een blauwe cirkel

-Elke keer dat de roomba stopt met het onderzoeken van het gebied, wordt de locatie gemarkeerd met een groene cirkel

-Afbeeldingen zijn aangepast om het bovenste gedeelte te verwijderen vanwege de tijdstempel die de resultaten mogelijk verstoort

- Grenzen worden niet meegeteld als een object vanwege de vrij hoge aantallen die zijn verkregen

-Verscheidene variabelen zijn gewijzigd, dus gebruik de bovenstaande versies ter referentie om verwarring te voorkomen.

Stap 7: Testen

Testen
Testen

De tests voor elk afzonderlijk onderdeel bleken soms nogal gemengd te zijn, daarom waren aanpassingen aan bepaalde vooraf ingestelde waarden noodzakelijk. De thematische achtergrond waarop we de mogelijkheden van de robot in een afgesloten ruimte wilden testen, bestond simpelweg uit een whiteboard dat op een veel donkere vloer was gelegd. U kunt de objecten over het gebied verspreiden; laat ze fungeren als objecten om tegenaan te stoten of objecten op afstand te houden van het bewegende gebied van de robot.

Na het instellen van de gereguleerde tijd en basissnelheid, vertoonde de roomba adequaat bewegingsgedrag, stoppend en achteruitgaand van elke "klif" of object waar het tegenaan ramt, evenals vertragend als het iets in de buurt detecteerde. Bij het bereiken van de gewenste reisafstand van drie meter, zou de robot doorgaan met stoppen en het gebied evalueren, foto's maken van elk 45 graden-gebied en verder gaan als de tijd het toelaat. De bochten leken echter groter dan gevraagd, wat betekent dat de coördinaatgegevens zouden worden verduisterd.

Elke keer dat het stopt, werd een nieuw punt geplaatst in het geschatte gebied van zijn positie op het coördinatensysteem; er wordt echter opgemerkt dat de initiële richting waarin de roomba begint een cruciale rol speelt in het ontwerp van de kaart. Als een kompasfunctie zou kunnen worden geïmplementeerd, zou deze zijn gebruikt als een cruciaal onderdeel van het kaartontwerp.

De werkelijke tijd die de functie nodig heeft om volledig uit te voeren, is altijd hoger dan de gevraagde tijd, wat logisch is aangezien deze niet kan stoppen tijdens een van zijn herstelbewerkingen. Helaas heeft deze versie van het tellen van afbeeldingen zijn problemen, vooral in gebieden die meestal monochromatisch zijn of in helderheid variëren; omdat het probeert onderscheid te maken tussen twee tinten, heeft het de neiging om objecten waar te nemen die niet gewenst zijn, daarom telt het altijd tot waanzinnig hoge aantallen.

Stap 8: Conclusie

Conclusie
Conclusie

Hoewel deze taak een zeer avontuurlijk en creatief stuk werk was dat verlichtingsvreugde teweegbracht, kon ik, uit mijn persoonlijke observaties, een groot aantal fouten zien die problematisch zouden kunnen zijn, zowel in de code als in het gedrag van de robot.

De beperking van het gebruik van de specificatie van tijd in de while-lus zorgt er wel voor dat de totale hoeveelheid tijd langer is dan gewenst; het proces van de panoramatechniek en beeldverwerking zou namelijk langer kunnen duren als het door een trage computer wordt uitgevoerd of niet vooraf is gebruikt. Bovendien handelde de roomba die in onze presentatie werd gebruikt met een groot aantal fouten, vooral in beweging, in vergelijking met de simulator. De gebruikte robot had helaas de neiging om iets naar links te leunen als hij rechtdoor reed en grotere bochten maakte dan gewenst. Om deze reden en vele andere, wordt het ten zeerste aanbevolen dat om deze fouten te compenseren, wijzigingen moeten worden aangebracht in de draaihoeken.

Desalniettemin is dit een lang maar intellectueel stimulerend project dat had gefunctioneerd als een interessante leerervaring voor het toepassen van codes en commando's om het gedrag van een echte robot direct te beïnvloeden.

Aanbevolen: