Innehållsförteckning:

Roomba Scout Explorer: 8 steg
Roomba Scout Explorer: 8 steg

Video: Roomba Scout Explorer: 8 steg

Video: Roomba Scout Explorer: 8 steg
Video: Цикада 3301: Интернет тайна 2024, Juli
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Som ett av de mest efterlängtade och mycket efterforskade amerikanska projekten har Mars rover-projekten blivit mänskliga prestationer i den ständigt framsteg som producerar högteknologiska autonoma system i det enda syftet att undersöka och tolka landmassorna och ytorna på den röda planeten bakom jorden. Som en del av ett mer personligt projekt för att hylla Mars -uppdragen var vårt mål att skapa en roomba -robot som kunde agera autonomt över en viss tidsram och reagera i enlighet med vissa kriterier inom dess närhet.

När det gäller unikhet fokuserade vi på att skapa ett diagram som visade varje väg som roboten tar från sitt ursprung. Dessutom kommer roboten att kunna räkna antalet objekt i dess närhet i panoramastil.

Steg 1: Utrustning

-Roomba w/ Attachable Camera (med specifikt namn känt)

-Kopplad server

-Windows 10 / Mac med internetanslutning

-Ljus plattform

-Mörkt golv

-Alla lösa föremål av monokromatisk design

Steg 2: MATLAB -inställning

MATLAB -inställning
MATLAB -inställning

För att skapa uppgifter och funktioner för din roomba måste du ha de specifika koder och verktygssatser som innehåller roomba -kommandona.

Med MATLAB 2016a och senare nedladdade, skapa en mapp som innehåller dessa robotfiler och sätt in följande MATLAB -fil nedan i mappen och kör den för att installera de återstående nödvändiga roomba -filerna.

Därefter högerklickar du i fönstret Aktuell mapp, håller musen över "Lägg till en sökväg" och klickar på "Aktuell mapp". Nu bör en väg sättas upp så att var och en av dessa filer kommer att användas för att aktivera roomba.

Använd nu kommandot nedan i kommandofönstret för att konfigurera roomba:

r = roomba (#).

Symbolen # är 'numret' på den rumsanvisning som anges; men om du bara vill ha en simulator av roomba skriver du bara följande kommando:

r = roomba (0).

Simuleringen rekommenderas för att testa rörelsemönster.

Om du är nyfiken på vilka kommandon roomba kan följa skriver du följande i kommandofönstret:

doc roomba.

För mer information, besök följande webbplats:

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

Steg 3: Funktion: Rörelse

Funktion: Rörelse
Funktion: Rörelse
Funktion: Rörelse
Funktion: Rörelse

När det gäller rörelse bör roomba röra sig automatiskt under en viss tidsperiod som anges i ingångarna. Målet med robotens rörelse är att reagera ordentligt när dess sensorer (stötfångare, ljuddämpare och klippsensorer) ändras i närvaro av olika hinder. Denna del skulle fungera som bas för alla roombas kommandon eftersom fler funktioner i koden läggs till senare. Några specifikationer behövdes:

-För att minska skador måste roboten sänka hastigheten till en lägre hastighet.

-När man närmar sig en klippa eller vägg, kommer roboten att röra sig bakåt och ändra sin vinkel beroende på träffpunkten

-Efter en del körning kommer roomba så småningom att stanna och ta bilder av det omgivande området

Observera att värdena som används var i förhållande till simulatorn; värden som svängvinklarna vridhastigheter och förinställningar för robotgivare bör ändras när den faktiska roboten används för att säkerställa stabilitet och redovisning av utrustningsfel.

Steg 4: Funktion: Bildbehandling

Funktion: Bildbehandling
Funktion: Bildbehandling

Enligt förfrågan fick vi i uppgift att modifiera data för en bild (eller flera bilder) som togs emot av robotens kamera, till vilken vi bestämde oss för att få roomba att "räkna" antalet objekt som den ser i bilden.

Vi följde tekniken för att låta MATLAB dra gränser kring svarta föremål som kontrasterar mot en vit bakgrund. Denna funktion är dock benägen att ha svårt i ett öppet område eftersom de olika formerna och färgerna uppfattas av kameran, vilket resulterar i ovanligt höga räkningar.

Observera att denna funktion inte kan fungera i simulatorn eftersom det inte finns någon kamera; om det görs ett försök uppstår ett fel som endast deklarerar en (:,:, 3) matris.

Steg 5: Funktion: Kartläggning

Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning
Funktion: Kartläggning

En ytterligare funktion som vi ville att roboten skulle ha var att kartlägga sina platser eftersom den direkt interagerar med miljön. Således söker koden nedan för att öppna en karta och skapa ett koordinatsystem som beskriver varje plats där robotens stötfångarsensorer trycks in. Detta visade sig vara den längsta delen av de tre delarna att testa individuellt, men det visade sig mycket enklare när det tillämpades på det slutliga manuset.

För att lägga till en gräns för längden på funktionens körtid användes n <20 -gränsen för while -loop för teständamål.

Tänk dock på att på grund av kodens komplexitet uppstår fler fel när kodsegmentet körs under lång tid; från tidigare tester verkar tio stötar vara antalet poäng innan betydande fel uppstår.

Steg 6: Jämförelse

Sammanställning
Sammanställning
Sammanställning
Sammanställning
Sammanställning
Sammanställning
Sammanställning
Sammanställning

Eftersom allt detta kommer att placeras i en enda fil skapade vi en funktion som använde vart och ett av de två föregående stegen som dess underfunktioner. Ett slutligt utkast gjordes med följande ändring av redux -funktionen som kallas "recon". För att undvika förvirring för MATLAB byttes "räknaren" - och "rombplot3" -skripten till inbäddade funktioner "CountR" respektive "plotr".

Flera ändringar måste göras i den slutliga versionen i motsats till de tidigare skripten:

-Orsprunget kommer alltid att markeras med en röd cirkel

-Varje gång roomba stannar från sina stötfångare markeras platsen med en svart cirkel

-Varje gång rummet stannar från sina klippsensorer markeras platsen med en blå cirkel

-Varje gång som rummet stannar från att undersöka området markeras platsen med en grön cirkel

-Bilder är modifierade för att ta bort den övre delen på grund av att tidsstämpeln eventuellt stör resultaten

-Gränser kommer inte att räknas ut som ett objekt på grund av ganska höga antal förvärvade

-Flera variabler har ändrats, så för att undvika förvirring, använd versionerna ovan som referens.

Steg 7: Testning

Testning
Testning

Tester för varje enskild komponent visade sig ibland vara ganska blandade, varför ändringar av vissa förinställda värden var nödvändiga. Den tematiska bakgrunden på vilken vi ville testa robotens kapacitet i ett slutet område bestod helt enkelt av en whiteboardtavla på ett mycket mörkare golv. Du kan sprida föremålen runt området; få dem att fungera som föremål att stöta på eller avlägsna föremål från robotens rörliga område.

Efter att ha ställt in sin reglerade tid och bashastighet visade roomba adekvat rörelsebeteende, stannade och backade bort från varje "klippa" eller föremål som det ramlar in i och saktade ner när det upptäckte något nära. Efter att ha nått önskat tre meters reseavstånd fortsatte roboten att stanna och utvärdera området, ta bilder av varje 45 graders region och fortsätta om tiden tillåter. Dock visade sig dess turer större än begärt, vilket innebär att koordinatdata skulle döljas.

Varje gång den stannade placerades en ny punkt i det ungefärliga området för dess position på koordinatsystemet; det noteras emellertid att den inledande riktningen i vilken roomba startar spelar en avgörande roll i utformningen av kartan. Om en kompassfunktion kunde implementeras hade den använts som en avgörande del av kartdesignen.

Den faktiska tiden som det tar att köra funktionen går alltid över den begärda tiden, vilket är meningsfullt med tanke på att den inte kan stanna mitt i en av sina återhämtningar. Tyvärr har denna version av bildräkning sina problem, särskilt i områden som antingen mestadels är monokromatiska eller varierande i ljusstyrka; eftersom det försöker skilja mellan två nyanser, tenderar det att uppfatta objekt som inte är önskvärda, därför räknas det alltid upp till vansinnigt höga siffror.

Steg 8: Slutsats

Slutsats
Slutsats

Även om denna uppgift var ett mycket äventyrligt och kreativt arbete som väckte lättnad, kunde jag från mina personliga observationer se ett stort antal fel som kan vara problematiska, både i koden och robotens beteende.

Begränsningen av att använda specifikationen av tid i while -slingan gör att den totala tiden blir längre än önskat; processen med panoramateknik och bildbehandling kan faktiskt ta längre tid om den körs av en långsam dator eller inte används i förväg. Dessutom fungerade roomba som användes i vår presentation med ett stort antal fel, särskilt i rörelse, jämfört med simulatorn. Roboten som använts hade tyvärr en tendens att luta sig något åt vänster när den körde rakt och gjorde större svängar än önskat. Av denna anledning och många andra rekommenderas det starkt att för att kompensera för dessa fel måste ändringar göras för dess vinkel.

Ändå är detta ett långt men ändå intellektuellt stimulerande projekt som hade fungerat som en intressant inlärningsupplevelse för att tillämpa koder och kommandon för att direkt påverka beteendet hos en verklig robot.

Rekommenderad: