Innehållsförteckning:

RADbot: 7 steg
RADbot: 7 steg

Video: RADbot: 7 steg

Video: RADbot: 7 steg
Video: BIT.TRIP RUNNER 2-07 Radbot (Perfect) 2024, November
Anonim
RADbot
RADbot

Ett projekt av Jackson Breakell, Tyler McCubbins och Jakob Thaler för EF 230

På Mars kommer astronauterna att utsättas för en mängd olika faror, allt från extrema temperaturer till dammstormar. En faktor som ofta förbises är dock faran från kraftfulla radioisotoper som finns på planetens yta. RADbot hjälper till att utforska astronauter på Mars yta genom att identifiera bergprover med höga aktiviteter när den färdas, och har också inprogrammerade säkerhetsfunktioner som använder dess klippsensorer, ljussensorer, stötfångarsensorer och en kamera, vilket förhindrar att roboten skadas på den oförlåtande Mars -terrängen. Förutom att varna astronauter för eventuella radioaktiva faror på ytan kan robotens radioaktiva provplaceringsfunktion implementeras som ett verktyg för att identifiera områden som kan innehålla stora avlagringar av uran och andra aktinider. Astronauter kan bryta dessa element, berika dem tillräckligt och använda dem i kärnreaktorer och termoelektriska generatorer, vilket kan hjälpa till att driva en permanent, självbärande koloni på planeten.

Till skillnad från den typiska Mars-rovern, har vår design komponenter från hyllan och en rimlig prislapp. Förutsatt att du har medel och lust kan du till och med bygga en själv genom att följa den här guiden. Läs vidare för att lära dig hur du gör din egen RADbot.

Steg 1: Skaffa nödvändiga delar och material

Skaffa nödvändiga delar och material
Skaffa nödvändiga delar och material
Skaffa nödvändiga delar och material
Skaffa nödvändiga delar och material
Skaffa nödvändiga delar och material
Skaffa nödvändiga delar och material

Vad du behöver för att komma igång (Bilder placerade i den ordning de listas)

1. En Roomba (någon nyare modell)

2. En Geiger-Mueller-räknare

3. En Raspberry Pi

4. En kortkamera med ett USB -uttag

5. En mikro -USB till USB -kabel

6. En USB till USB -kabel

7. Ett radioaktivt prov med tillräcklig aktivitet (~ 5μSv eller högre)

8. En dator med Matlab installerat

9. Lim (helst gaffatejp för enkel borttagning)

Steg 2: Konfigurera kameran och Geiger-Muller-räknaren

Konfigurera kameran och Geiger-Muller-räknaren
Konfigurera kameran och Geiger-Muller-räknaren

Nu när du har allt material som krävs för att skapa RADbot börjar vi med att helt enkelt placera kameran så att den kan läsa aktiviteten på disken. Placera Geiger-Muller-räknaren så nära slutet av Roomba som möjligt och se till att dess sensor inte är blockerad. Säkra räknaren ordentligt med det lim du valt och fortsätt att montera kameran så att den vetter mot den. Placera kameran så nära räknarens display som möjligt för att förhindra att externa ingångar påverkar programmet och säkra den på plats när du känner dig bekväm. Vi rekommenderar dock att du sparar kamerans säkring för det sista, eftersom när din kod är klar kan du visa en bild från kameran på din dator, så att du kan placera kameran utifrån dess synfält. När både kameran och räknaren sitter ordentligt på plats ansluter du kameran till en av USB -ingångarna på Raspberry Pi med USB till USB -kabeln och ansluter Raspberry Pi till Roomba med mikro -USB till USB -kabeln.

Steg 3: Anslut till din Roomba och skapa ljussensorkod

Anslut till din Roomba och skapa ljussensorkod
Anslut till din Roomba och skapa ljussensorkod

Ladda först ner Roomba -verktygslådan på webbplatsen EF 230 och placera den i de angivna mapparna. För att ansluta till din Roomba, hänvisar du bara till klistermärket som är fäst på Raspberry Pi och anger "r = roomba (x)" i kommandofönstret, utan citattecken, och där x står för Roombas nummer. Roomba ska spela en melodi och rengöringsknappen ska visa en grön ring runt den. Starta din kod med ett "while" -uttalande och hänvisa till ljussensorerna som de visas i sensorlistan. Öppna sensorlistan genom att skriva "r.testSensors" i kommandofönstret.

Baserat på färgen på vårt objekt, som bestämmer hur mycket ljus som reflekteras, ställer du kraven för medan -satsen ska utföras som en> funktion. I vårt fall ställer vi in den främre ljussensorn för att köra koden i while -uttalandet om avläsningen på vänster eller höger mittljussensor var> 25. För det körbara uttalandet, ställ in Roombas hastighet för att sakta ner genom att skriva "r.setDriveVelocity (x, y)" där x och y är hastigheterna för vänster respektive höger hjul. Infoga ett "annat" -uttalande, så att Roomba inte saktar in för ospecificerade värden, och ange det inställda drivhastighetskommandot igen, utom med en annan hastighet. Avsluta medan -uttalandet med ett "slut". Detta kodsegment kommer att få Roomba att närma sig objektet och sakta ner när det når ett visst intervall för att minimera påverkan.

Bifogad är en skärmdump av vår kod, men du kan redigera den så att den bäst passar dina uppdragsparametrar.

Steg 4: Skapa stötfångarkod

Skapa stötfångarkod
Skapa stötfångarkod

Eftersom Roomba saktar ner, kommer den att minimera den inverkan den har på objektet, men inte så mycket att den inte utlöser den fysiska stötfångaren. För detta segment av kod, börja med en "while" -slinga igen och ställ in dess uttryck för att vara sant. För satsen, ställ in variabeln T lika med stötfångarens utgång, antingen 0 eller 1, för falskt och sant. Du kan använda "T = r.getBumpers" för detta. T kommer att matas ut som en struktur. Ange ett "if" -uttalande och ställ dess uttryck för understrukturen T.front till lika med 1, och ställ in satsen för att antingen ställa in drivhastigheten på 0 med "r.setDriveVelocity (x, y)" eller "r.stop ". Ange en "paus" så att Roomba kan flytta efter att villkoret i nästa kod är uppfyllt. Lägg till ett "annat" och ställ in dess uttalande för att ställa in drivhastigheten till den normala marschhastigheten för Roomba.

Bifogad är en skärmdump av vår kod, men du kan redigera den så att den bäst passar dina uppdragsparametrar.

Steg 5: Skapa kod för att läsa räknaren, tolka den och dra tillbaka från källan

Skapa kod för att läsa räknaren, tolka den och dra sig tillbaka från källan
Skapa kod för att läsa räknaren, tolka den och dra sig tillbaka från källan

Kärnan i vårt projekt är Geiger-Muller-räknaren och följande kodsegment används för att bestämma vad data på skärmen betyder med kameran. Med tanke på att vår räknares skärm ändrar färg baserat på källans aktivitet, kommer vi att ställa in kameran för att tolka skärmens färg. Starta din kod genom att ställa in en variabel som är lika med kommandot "r.getImage". Variabeln kommer att innehålla en 3D -uppsättning färgvärden för bilden den tog i rött, grönt och blått. Ställ in variabler som är lika med medelvärdena för respektive färgmatris med kommandot "medelvärde (medelvärde (img1 (:,:, x)))" där x är ett heltal från 1 till 3. 1, 2 och 3 representerar rött, grönt och blå respektive. Som med alla kommandon som refereras, inkludera inte citattecken.

Låt programmet pausa i 20 sekunder med hjälp av "paus (20)" så att räknaren kan få en korrekt avläsning av provet och sedan börja ett "om" -uttalande. Vi fick vårt Roomba -pip flera gånger genom att använda "r.beep" innan vi visade en meny med texten "Radioisotop hittad! Varning!" detta kan åstadkommas med kommandot "waitfor (helpdlg ({'texthere'})". Efter att ha klickat ok, fortsätter Roomba att följa resten av koden i "if" -uttalandet. Låt Roomba köra runt provet med en kombination av kommandona "r.moveDistance" och "r.turnAngle". Se till att avsluta if -satsen med "end".

Bifogad är en skärmdump av vår kod, men du kan redigera den så att den bäst passar dina uppdragsparametrar.

Steg 6: Skapa en Cliff Sensor Code

Skapa en Cliff Sensor Code
Skapa en Cliff Sensor Code

För att skapa en kod för att använda Roombas inbyggda klippsensorer, börja med en "while" -slinga och ställ in dess uttryck för att vara sant. Ställ in en variabel som är lika med "r.getCliffSensors", så kommer detta att resultera i en struktur. Starta ett "if" -uttalande och ställ in variablerna "X.leftFront" och "X.rightFront" från strukturen till att vara större än något förutbestämt värde, där "X" är variabeln du valde kommandot "r.getCliffSensors" till vara lika med. I vårt fall använde vi 1000, eftersom ett vitt papper användes för att representera en klippa, och när sensorerna närmade sig papperet växte värdena till långt över 1000, vilket säkerställer att koden bara körs när en klippa upptäcks. Lägg till kommandot "break" efter, och infoga sedan ett "else" -uttalande. För "annat" -uttalandet, som kommer att utföras om ingen klippa detekteras, ställ in drivhastigheten till den normala marschhastigheten för varje hjul. Om Roomba detekterar en klippa, kommer "pausen" att köras, och sedan kommer koden utanför while -slingan att exekveras. Efter att ha placerat "slutet" för "om" och "medan" -slingan, ställ in Roomba för att gå bakåt med kommandot flytta avstånd. För att varna astronauter att en klippa är i närheten, ställ in drivhastigheterna för varje hjul, x och y i kommandot för hastighet, till a och -a, där a är ett reellt tal. Detta kommer att få Roomba att snurra, varna astronauten för klippan.

Bifogad är en skärmdump av vår kod, men du kan redigera den så att den bäst passar dina uppdragsparametrar.

Steg 7: Slutsats

Slutsats
Slutsats

RADbotens slutliga mål på Mars är att hjälpa astronauter i deras utforskning och kolonisering av den röda planeten. Genom att identifiera radioaktiva prover på ytan är vår förhoppning att roboten eller rovern i det här fallet verkligen kan hålla astronauterna säkra och hjälpa till att identifiera kraftkällor för deras bas (er). Efter att ha följt alla dessa steg, och kanske med lite försök och fel, bör din RADbot vara igång. Placera det radioaktiva provet någonstans inom ditt testområde, kör koden och se rovern göra vad den var avsedd att göra. Njut av din RADbot!

-EF230 RADbot -teamet

Rekommenderad: