Innholdsfortegnelse:

RADbot: 7 trinn
RADbot: 7 trinn

Video: RADbot: 7 trinn

Video: RADbot: 7 trinn
Video: BIT.TRIP RUNNER 2-7 Radbot 2024, November
Anonim
RADboten
RADboten

Et prosjekt av Jackson Breakell, Tyler McCubbins og Jakob Thaler for EF 230

På Mars vil astronauter bli utsatt for en rekke farer, alt fra ekstreme temperaturer til støvstormer. En faktor som ofte overses, er imidlertid faren fra kraftige radioisotoper som bor på planetens overflate. RADbot gir bistand til å utforske astronauter på Mars 'overflate ved å identifisere steinprøver med høye aktiviteter mens den reiser, og har også programmerte sikkerhetsfunksjoner som bruker dens klippesensorer, lyssensorer, støtfangersensorer og et kamera, og forhindrer roboten i å skade på det utilgivende marsterrenget. I tillegg til å advare astronauter om mulige radioaktive farer på overflaten, kan robotens radioaktive prøveplasseringsfunksjon implementeres som et verktøy for å identifisere områder som kan inneholde store forekomster av uran og andre aktinider. Astronauter kunne utvinne disse elementene, berike dem tilstrekkelig og bruke dem i atomreaktorer og termoelektriske generatorer, noe som kan hjelpe til med å drive en permanent, selvbærende koloni på planeten.

I motsetning til den typiske Mars-roveren, har designen våre komponenter fra hyllen og en rimelig prislapp. Forutsatt at du har midler og lyst, kan du til og med bygge en selv ved å følge denne guiden. Les videre for å lære hvordan du lager din egen RADbot.

Trinn 1: Skaff nødvendige deler og materialer

Skaff nødvendige deler og materialer
Skaff nødvendige deler og materialer
Skaff nødvendige deler og materialer
Skaff nødvendige deler og materialer
Skaff nødvendige deler og materialer
Skaff nødvendige deler og materialer

Hva du trenger for å komme i gang (bilder plassert slik at de er oppført)

1. Én Roomba (hvilken som helst nyere modell)

2. En Geiger-Mueller-teller

3. En bringebær Pi

4. Ett kort kamera med USB -uttak

5. En mikro -USB til USB -kabel

6. En USB til USB -kabel

7. En radioaktiv prøve med tilstrekkelig aktivitet (~ 5μSv eller høyere)

8. Én datamaskin med Matlab installert

9. Lim (helst gaffatape for enkel fjerning)

Trinn 2: Konfigurering av kamera- og Geiger-Muller-telleren

Konfigurering av kameraet og Geiger-Muller-telleren
Konfigurering av kameraet og Geiger-Muller-telleren

Nå som du har alt nødvendig materiale for å lage RADbot, starter vi med å plassere kameraet slik at det kan lese aktiviteten på disken. Plasser Geiger-Muller-telleren så nær enden av Roomba som mulig, og sørg for at sensoren ikke er blokkert. Fest telleren på plass med limet du valgte, og fortsett å montere kameraet slik at det vender mot det. Plasser kameraet så nært som mulig til tellerens skjerm for å forhindre at innganger utenfra påvirker programmet, og fest det på plass når du føler deg komfortabel. Vi anbefaler at du lagrer sikringen av kameraet til det siste, fordi når koden er ferdig, kan du vise et bilde fra kameraet på datamaskinen, slik at du kan plassere kameraet basert på synsfeltet. Når både kamera og teller er på plass, kobler du kameraet til en av USB -inngangene til Raspberry Pi med USB til USB -kabelen, og kobler Raspberry Pi til Roomba med mikro -USB til USB -kabelen.

Trinn 3: Koble til Roomba og lag lyssensorkode

Koble til Roomba og opprett lyssensorkode
Koble til Roomba og opprett lyssensorkode

Last ned først Roomba -verktøykassen til EF 230 -nettstedet, og sørg for å plassere den i de angitte mappene. For å koble til Roomba, refererer du bare til klistremerket som er festet til Raspberry Pi og skriver "r = roomba (x)" i kommandovinduet, uten anførselstegn, og hvor x står for Roombas nummer. Roomba skal spille en melodi, og ren -knappen skal vise en grønn ring rundt den. Start koden din med en "while" -uttalelse, og referer til lyssensorene slik de vises i sensorlisten. Åpne sensorlisten ved å skrive "r.testSensors" i kommandovinduet.

Basert på fargen på objektet vårt, som bestemmer hvor mye lys som reflekteres, stiller du kravene for mens -setningen skal utføres som en> funksjon. I vårt tilfelle har vi satt lyssensoren foran til å kjøre koden i while -setningen hvis avlesningen på venstre eller høyre senterlys sensor var> 25. For den kjørbare setningen, sett hastigheten til Roomba til å bremse ved å skrive "r.setDriveVelocity (x, y)" der x og y er hastighetene til henholdsvis venstre og høyre hjul. Sett inn en "else" -setning, slik at Roomba ikke bremser for uspesifiserte verdier, og skriv inn den angitte kjørehastighetskommandoen igjen, bortsett fra med en annen hastighet. Avslutt mens -utsagnet med en "slutt". Dette kodesegmentet får Roomba til å nærme seg objektet, og bremse når det når et visst område for å minimere påvirkningen.

Vedlagt er et skjermbilde av koden vår, men du kan redigere den slik at den passer best til dine oppdragsparametere.

Trinn 4: Lag støtfangerkode

Lag støtfangerkode
Lag støtfangerkode

Ettersom Roomba bremser, vil den minimere virkningen den har på objektet, men ikke så mye at den ikke utløser den fysiske støtfangeren. For dette kodesegmentet, begynn med en "while" -sløyfe igjen, og sett uttrykket til å være sant. For utsagnet setter du variabelen T lik utgangen til støtfangeren, enten 0 eller 1, for usann og sann. Du kan bruke "T = r.getBumpers" for dette. T kommer ut som en struktur. Skriv inn en "if" -setning, og sett uttrykket for understrukturen T.front til lik 1, og sett setningen til enten å sette stasjonshastigheten til 0 ved å bruke "r.setDriveVelocity (x, y)" eller "r.stop ". Skriv inn en "pause" slik at Roomba kan bevege seg etter at betingelsen i neste kode er oppfylt. Legg til et "annet", og angi uttalelsen for å sette kjørehastigheten til den normale marsjhastigheten til Roomba.

Vedlagt er et skjermbilde av koden vår, men du kan redigere den slik at den passer best til dine oppdragsparametere.

Trinn 5: Opprett kode for å lese teller -skjermen, tolke den og trekke deg tilbake fra kilden

Lag kode for å lese telleren, tolke den og trekke deg tilbake fra kilden
Lag kode for å lese telleren, tolke den og trekke deg tilbake fra kilden

I hjertet av prosjektet vårt er Geiger-Muller-telleren, og følgende kodesegment brukes til å bestemme hva dataene på skjermen betyr ved bruk av kameraet. Gitt vår teller skjerm endrer farge basert på kildens aktivitet, vil vi sette kameraet til å tolke fargen på skjermen. Start koden din ved å angi en variabel som er lik kommandoen "r.getImage". Variabelen vil inneholde en 3d -serie med fargeverdier for bildet det tok i rødt, grønt og blått. Sett variabler som er lik gjennomsnittene for de respektive fargematrisene ved å bruke kommandoen "mean (mean (img1 (:,:, x)))" "hvor x er et heltall fra 1 til 3. 1, 2 og 3 representerer rødt, grønt og henholdsvis blå. Som med alle kommandoene det refereres til, må du ikke inkludere anførselstegn.

La programmet pause i 20 sekunder ved å bruke "pause (20)" slik at telleren kan få en nøyaktig avlesning av prøven, og deretter begynne en "hvis" -uttalelse. Vi hadde vårt Roomba -pip flere ganger ved å bruke "r.beep" før det ble vist en meny med teksten "Radioisotop funnet! Forsiktig!" dette kan oppnås med kommandoen "waitfor (helpdlg ({'texthere'})". Etter å ha klikket ok, vil Roomba fortsette å følge resten av koden i "if" -setningen. La Roomba kjøre rundt prøven med en kombinasjon av kommandoene "r.moveDistance" og "r.turnAngle". Sørg for å avslutte if -setningen med en "ende".

Vedlagt er et skjermbilde av koden vår, men du kan redigere den slik at den passer best til dine oppdragsparametere.

Trinn 6: Lag en Cliff Sensor Code

Lag en Cliff Sensor Code
Lag en Cliff Sensor Code

For å opprette en kode for å gjøre bruk av Roombas innebygde klippesensorer, begynn med en "while" -sløyfe, og sett uttrykket til å være sant. Sett en variabel til å være lik "r.getCliffSensors", og dette vil resultere i en struktur. Start en "if" -setning, og sett variablene "X.leftFront" og "X.rightFront" fra strukturen til å være større enn noen forhåndsbestemt verdi, der "X" er variabelen du valgte kommandoen "r.getCliffSensors" til være lik. I vårt tilfelle brukte vi 1000, et stykke hvitt papir ble brukt til å representere en klippe, og når sensorene nærmet seg papiret, vokste verdiene til godt over 1000, noe som sikrer at koden bare vil utføres når en klippe blir oppdaget. Legg til kommandoen "break" etter, og sett deretter inn en "else" -setning. For "annet" -utsagnet, som vil bli utført hvis det ikke oppdages noen klippe, sett drivhastigheten til normal marsjhastighet for hvert hjul. Hvis Roomba oppdager en klippe, vil "pause" bli utført, og deretter vil koden utenfor while -løkken bli utført. Etter at du har plassert "slutten" for "hvis" og "mens" -sløyfen, setter du Roomba til å bevege deg bakover ved hjelp av kommandoen for flytting av avstand. For å advare astronauter om at en klippe er i nærheten, angir du drivhastighetene til hvert hjul, x og y i kommandoen for hastighet, til a og -a, hvor a er et reelt tall. Dette vil få Roomba til å snurre, og varsle astronauten om klippen.

Vedlagt er et skjermbilde av koden vår, men du kan redigere den slik at den passer best til dine oppdragsparametere.

Trinn 7: Konklusjon

Konklusjon
Konklusjon

RADbots endelige mål på Mars er å hjelpe astronauter med å utforske og kolonisere den røde planeten. Ved å identifisere radioaktive prøver på overflaten, håper vi at roboten eller roveren i dette tilfellet virkelig kan holde astronauter trygge og hjelpe til med å identifisere strømkilder til basen (e). Etter å ha fulgt alle disse trinnene, og kanskje med litt prøving og feiling, burde RADbot være i gang. Plasser den radioaktive prøven et sted i testområdet, kjør koden din og se roveren gjøre det den var designet for å gjøre. Nyt RADbot!

-EF230 RADbot -teamet

Anbefalt: