Innholdsfortegnelse:

Roomba Scout Explorer: 8 trinn
Roomba Scout Explorer: 8 trinn

Video: Roomba Scout Explorer: 8 trinn

Video: Roomba Scout Explorer: 8 trinn
Video: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Juli
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Som et av de mest etterlengtede og sterkt undersøkte amerikanske prosjektene, har Mars rover-prosjektene blitt menneskelige prestasjoner i den stadig fremskridende produksjonen av høyteknologiske autonome systemer med det ene formål å undersøke og tolke landmasser og overflater på den røde planeten bak jorden. Som en del av et mer personlig prosjekt til hyllest til Mars -oppdragene, var målet vårt å lage en roomba -robot som kunne handle autonomt over en bestemt tidsramme og reagere deretter på visse kriterier i nærheten.

Når det gjelder unikhet, fokuserte vi på å lage et diagram som viste hver vei roboten tar fra sin opprinnelse. I tillegg vil roboten kunne telle antall objekter i nærheten i en panoramisk stil.

Trinn 1: Utstyr

-Roomba m/ festbart kamera (med bestemt navn kjent)

-Tilkoblet server

-Windows 10 / Mac med Internett -tilkobling

-Lyst plattform

-Mørkt gulv

-Alle herreløse objekter av monokromatisk design

Trinn 2: MATLAB -oppsett

MATLAB -oppsett
MATLAB -oppsett

For å opprette oppgaver og funksjoner for din roomba, må du ha de spesifikke kodene og verktøysettene som inneholder roomba -kommandoene.

Når MATLAB 2016a og videre er lastet ned, oppretter du en mappe for å inneholde disse robotfilene og setter inn følgende MATLAB -fil nedenfor i mappen og kjører den for å installere de resterende nødvendige roomba -filene.

Etter det høyreklikker du i vinduet Gjeldende mappe, holder musen over "Legg til en bane" og klikker på "Gjeldende mappe". Nå bør det settes opp en bane slik at hver av disse filene vil bli brukt til å aktivere roomba.

Bruk nå kommandoen nedenfor i kommandovinduet for å sette opp roomba:

r = roomba (#).

Symbolet # er 'nummeret' til den romba som er angitt; Men hvis du bare vil ha en simulator av roomba, skriver du bare inn følgende kommando:

r = roomba (0).

Simuleringen vil bli anbefalt for testing av bevegelsesmønstre.

Hvis du er nysgjerrig på hvilke kommandoer roomba kan følge, skriver du inn følgende i kommandovinduet:

doc roomba.

For mer informasjon, besøk følgende nettsted:

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

Trinn 3: Funksjon: Bevegelse

Funksjon: Bevegelse
Funksjon: Bevegelse
Funksjon: Bevegelse
Funksjon: Bevegelse

Når det gjelder bevegelse, bør roomba bevege seg automatisk i en angitt tidsperiode gitt i inngangene. Målet med robotens bevegelse er å reagere skikkelig når sensorene (støtfangere, lysstøtfangere og klippesensorer) endres i nærvær av forskjellige hindringer. Denne delen vil fungere som base for alle rombas kommandoer etter hvert som flere funksjoner i koden legges til senere. Noen spesifikasjoner var nødvendig:

-For å redusere skader må roboten redusere hastigheten til en lavere hastighet.

-Når du nærmer deg en klippe eller vegg, vil roboten bevege seg bakover og endre vinkelen avhengig av slagpunktet

-Etter en stund kjøring vil roomba til slutt stoppe og ta bilder av området rundt

Vær oppmerksom på at verdiene som ble brukt var i forhold til simulatoren; verdier som svingvinkler svinghastigheter og forhåndsinnstillinger for robotsensor bør endres når du bruker den faktiske roboten for å sikre stabilitet og regnskap for utstyrsfeil.

Trinn 4: Funksjon: Bildebehandling

Funksjon: Bildebehandling
Funksjon: Bildebehandling

I henhold til forespørsel fikk vi i oppgave å endre dataene til et bilde (eller flere bilder) som ble mottatt av robotens kamera, som vi bestemte oss for å få romba til å "telle" antall objekter den ser på bildet.

Vi fulgte teknikken med å la MATLAB tegne grenser rundt svertede objekter som står i kontrast til en hvit bakgrunn. Imidlertid er denne funksjonen tilbøyelig til å ha problemer i et åpent område ettersom de forskjellige formene og fargene som oppfattes av kameraet, resulterer i uvanlig høye tellinger.

Vær oppmerksom på at denne funksjonen ikke kan fungere i simulatoren siden det ikke er et kamera; Hvis du prøver det, vil det oppstå en feil som bare erklærer en (:,:, 3) matrise.

Trinn 5: Funksjon: Kartlegging

Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging
Funksjon: Kartlegging

En ekstra funksjon som vi ønsket at roboten skulle ha, var å kartlegge posisjonene da den samhandler direkte med miljøet. Koden nedenfor søker således å åpne et kart og sette opp et koordinatsystem som beskriver hvert sted hvor robotens støtfangersensorer trykkes. Dette viste seg å være den lengste delen av de tre delene som ble testet individuelt, men det viste seg å være mye enklere når det ble brukt på det endelige manuset.

For å legge til en grense for lengden på funksjonens kjøretid, ble n <20 -grensen på while -løkken brukt til testformål.

Husk på grunn av kompleksiteten i koden, oppstår flere feil når kodesegmentet kjører lenge; fra tidligere tester ser det ut til at ti støt er antall poeng før det oppstår betydelige feil.

Trinn 6: Sammenstilling

Sammenstilling
Sammenstilling
Sammenstilling
Sammenstilling
Sammenstilling
Sammenstilling
Sammenstilling
Sammenstilling

Siden alt dette vil bli plassert i en enkelt fil, har vi opprettet en funksjon som bruker hvert av de to foregående trinnene som dens underfunksjoner. Et siste utkast ble laget med følgende modifikasjon av redux -funksjonen kalt "recon". For å unngå forvirring for MATLAB, ble "teller" og "rombplot3" skript omdøpt til henholdsvis innebygde funksjoner "CountR" og "plotr".

Flere endringer måtte gjøres i den endelige versjonen i motsetning til de forrige skriptene:

-Opprinnelsen vil alltid være merket med en rød sirkel

-Hver gang roomba stopper fra støtfangerne, markeres plasseringen med en svart sirkel

-Hver gang roomba stopper fra klippesensorene, markeres plasseringen med en blå sirkel

-Hver gang roomba stopper fra å undersøke området, markeres stedet med en grønn sirkel

-Bilder er modifisert for å få den øvre delen fjernet på grunn av tidsstempelet som potensielt kan forstyrre resultatene

-Grenser vil ikke bli regnet ut som et objekt på grunn av ganske høye tall som er anskaffet

-Flere variabler er endret, så for å unngå forvirring, bruk versjonene ovenfor som referanse.

Trinn 7: Testing

Testing
Testing

Tester for hver enkelt komponent viste seg til tider å være ganske blandet, og derfor var det nødvendig å endre visse forhåndsinnstilte verdier. Den tematiske bakgrunnen som vi ønsket å teste robotens evner i et lukket område bestod ganske enkelt av en tavle lagt på et mye mørkere gulv. Du kan spre objektene rundt i området; få dem til å fungere som objekter som skal støtes inn i eller fjerne objekter fra robotens bevegelige område.

Etter å ha innstilt sin regulerte tid og grunnhastighet, demonstrerte roomba tilstrekkelig bevegelsesatferd, stoppet og vendte tilbake fra hver "klippe" eller gjenstand den støter inn i, samt bremset ned da den oppdaget noe i nærheten. Etter å ha nådd den ønskede tre meters reiseavstand, fortsatte roboten med å stoppe og evaluere området, ta bilder av hvert område på 45 grader og fortsette videre hvis tiden tillater det. Imidlertid syntes svingene større enn forespurt, noe som betyr at koordinatdataene ville bli skjult.

Hver gang den stopper, ble et nytt punkt plassert i den omtrentlige regionen av posisjonen til koordinatsystemet; Imidlertid er det bemerket at den opprinnelige retningen romba starter ved spiller en sentral rolle i utformingen av kartet. Hvis en kompassfunksjon kunne implementeres, ville den blitt brukt som en avgjørende del av kartdesignet.

Den faktiske tiden funksjonen tar for å kjøre fullt, går alltid over den forespurte tiden, noe som er fornuftig med tanke på at den ikke kan stoppe midt i en av gjenopprettelsene. Dessverre har denne versjonen av bildetelling sine problemer, spesielt i områder som enten for det meste er monokromatiske eller varierer i lysstyrke; fordi den prøver å skille mellom to nyanser, har den en tendens til å oppfatte objekter som ikke er ønsket, derfor teller den alltid opp til vanvittig høye tall.

Trinn 8: Konklusjon

Konklusjon
Konklusjon

Selv om denne oppgaven var et veldig eventyrlig og kreativt stykke arbeid som skapte lettelse, kunne jeg fra mine personlige observasjoner se et stort antall feil som kunne være problematiske, både i koden og oppførselen til roboten.

Begrensningen ved å bruke spesifikasjonen av tid i mens -sløyfen gjør at den totale tidsperioden blir lengre enn ønsket; prosessen med panoramateknikk og bildebehandling kan faktisk ta lengre tid hvis den kjøres av en treg datamaskin eller ikke ble brukt på forhånd. I tillegg handlet roomba som ble brukt i presentasjonen vår med et stort antall feil, spesielt i bevegelse, sammenlignet med simulatoren. Roboten som ble brukt hadde dessverre en tendens til å lene seg litt til venstre da den kjørte rett og gjorde større svinger enn ønsket. Av denne grunn og mange andre, anbefales det sterkt at for å kompensere for disse feilene, må det gjøres endringer for svingvinklene.

Likevel er dette et langt, men intellektuelt stimulerende prosjekt som hadde fungert som en interessant læringsopplevelse for bruk av koder og kommandoer for direkte å påvirke oppførselen til en faktisk robot.

Anbefalt: