Inhoudsopgave:

De RADbot: 7 stappen
De RADbot: 7 stappen

Video: De RADbot: 7 stappen

Video: De RADbot: 7 stappen
Video: Bit.Trip Runner - 2-7 Radbot 2024, Oktober
Anonim
De RADbot
De RADbot

Een project van Jackson Breakell, Tyler McCubbins en Jakob Thaler voor EF 230

Op Mars zullen astronauten worden blootgesteld aan verschillende gevaren, variërend van extreme temperaturen tot stofstormen. Een factor die echter vaak over het hoofd wordt gezien, is het gevaar van krachtige radio-isotopen die zich op het aardoppervlak bevinden. De RADbot helpt bij het verkennen van astronauten op het oppervlak van Mars door het identificeren van gesteentemonsters met hoge activiteiten tijdens het reizen, en heeft ook geprogrammeerde veiligheidsfuncties die gebruikmaken van de klifsensoren, lichtsensoren, bumpersensoren en een camera, waardoor de robot wordt beschermd tegen schade op het meedogenloze Mars-terrein. Naast het waarschuwen van astronauten voor mogelijke radioactieve gevaren op het oppervlak, kan de radioactieve monsterlocatiefunctie van de robot worden geïmplementeerd als een hulpmiddel om gebieden te identificeren die grote afzettingen van uranium en andere actiniden kunnen bevatten. Astronauten zouden deze elementen kunnen ontginnen, voldoende verrijken en gebruiken in kernreactoren en thermo-elektrische generatoren, die zouden kunnen helpen een permanente, zichzelf in stand houdende kolonie op de planeet van stroom te voorzien.

In tegenstelling tot de typische Mars-rover, heeft ons ontwerp kant-en-klare componenten en een redelijk prijskaartje. Als je het geld en de wens hebt, kun je er zelfs zelf een bouwen door deze gids te volgen. Lees verder om te leren hoe u uw eigen RADbot maakt.

Stap 1: Benodigde onderdelen en materialen aanschaffen

Benodigde onderdelen en materialen aanschaffen
Benodigde onderdelen en materialen aanschaffen
Benodigde onderdelen en materialen aanschaffen
Benodigde onderdelen en materialen aanschaffen
Benodigde onderdelen en materialen aanschaffen
Benodigde onderdelen en materialen aanschaffen

Wat je nodig hebt om aan de slag te gaan (afbeeldingen geplaatst in de volgorde waarin ze worden vermeld)

1. Eén Roomba (elk nieuwer model)

2. Eén Geiger-Mueller-teller

3. Eén Raspberry Pi

4. Eén boardcamera met een USB-uitgang

5. Eén micro-USB-naar-USB-kabel

6. Eén USB-naar-USB-kabel

7. Eén radioactief monster met voldoende activiteit (~5μSv of hoger)

8. Eén computer waarop Matlab is geïnstalleerd

9. Lijm (bij voorkeur ducttape voor gemakkelijke verwijdering)

Stap 2: De camera en de Geiger-Muller-teller configureren

De camera en Geiger-Muller-teller configureren
De camera en Geiger-Muller-teller configureren

Nu u over alle benodigde materialen beschikt om de RADbot te maken, beginnen we met het plaatsen van de camera zodat deze de activiteit op het aanrecht kan aflezen. Plaats de Geiger-Muller-teller zo dicht mogelijk bij het uiteinde van de Roomba en zorg ervoor dat de sensor niet wordt geblokkeerd. Zet het aanrecht stevig op zijn plaats met de lijm die u hebt gekozen, en ga verder met het monteren van de camera om het te zien. Plaats de camera zo dicht mogelijk bij het display van de toonbank om te voorkomen dat input van buitenaf het programma beïnvloedt, en zet hem op zijn plaats zodra u zich op uw gemak voelt. We raden u echter aan om de beveiliging van de camera voor het laatst te bewaren, omdat u, wanneer uw code is voltooid, een afbeelding van de camera op uw computer kunt weergeven, zodat u de camera kunt positioneren op basis van zijn gezichtsveld. Zodra zowel de camera als de teller stevig op hun plaats zitten, sluit u de camera aan op een van de USB-ingangen van de Raspberry Pi met de USB-naar-USB-kabel en sluit u de Raspberry Pi aan op de Roomba met de micro-USB-naar-USB-kabel.

Stap 3: Maak verbinding met uw Roomba en maak een lichtsensorcode aan

Maak verbinding met uw Roomba en maak een lichtsensorcode aan
Maak verbinding met uw Roomba en maak een lichtsensorcode aan

Download eerst de Roomba-toolbox van de EF 230-website en zorg ervoor dat u deze in de opgegeven mappen plaatst. Om verbinding te maken met uw Roomba, hoeft u alleen maar naar de sticker op de Raspberry Pi te verwijzen en "r=roomba(x)" in het opdrachtvenster in te voeren, zonder de aanhalingstekens, en waarbij x staat voor het Roomba-nummer. De Roomba moet een deuntje spelen en om de clean-knop moet een groene ring worden weergegeven. Begin uw code met een "while"-instructie en verwijs naar de lichtsensoren zoals ze in de sensorlijst verschijnen. Open de sensorlijst door "r.testSensors" in het opdrachtvenster te typen.

Op basis van de kleur van ons object, dat bepaalt hoeveel licht er wordt gereflecteerd, stelt u de eisen aan het while-statement dat als >-functie moet worden uitgevoerd. In ons geval hebben we de voorlichtsensor ingesteld om de code in de while-instructie uit te voeren als de waarde op de linker- of rechterlichtsensoren in het midden> 25 was. Voor de uitvoerbare instructie stelt u de snelheid van de Roomba in om te vertragen door "r.setDriveVelocity(x, y)" te typen, waarbij x en y respectievelijk de snelheden van het linker- en rechterwiel zijn. Voeg een "else"-statement in, zodat de Roomba niet vertraagt voor niet-gespecificeerde waarden, en voer het ingestelde rijsnelheidscommando opnieuw in, behalve met een andere snelheid. Beëindig het while-statement met een "end". Dit codesegment zorgt ervoor dat de Roomba het object nadert en vertraagt zodra het een bepaald bereik bereikt om de impact te minimaliseren.

Bijgevoegd is een screenshot van onze code, maar voel je vrij om deze aan te passen aan je missieparameters.

Stap 4: Maak een bumpercode

Bumpercode maken
Bumpercode maken

Terwijl de Roomba vertraagt, minimaliseert hij de impact die hij op het object heeft, hoewel niet zozeer dat hij de fysieke bumper niet activeert. Begin voor dit codesegment opnieuw met een "while"-lus en stel de expressie in op waar. Stel voor de instructie de variabele T in op de output van de bumper, ofwel 0 of 1, voor false en true. U kunt hiervoor de "T=r.getBumpers" gebruiken. T wordt uitgevoerd als een structuur. Voer een "if" -instructie in en stel de uitdrukking voor de substructuur T.front in op gelijk aan 1, en stel de instructie in om ofwel de aandrijfsnelheid in te stellen op 0, met behulp van "r.setDriveVelocity(x, y)" of "r.stop ". Voer een "pauze" in zodat de Roomba kan bewegen nadat aan de voorwaarde in de volgende code is voldaan. Voeg een "anders" toe en stel de instructie in om de rijsnelheid in te stellen op de normale kruissnelheid van de Roomba.

Bijgevoegd is een screenshot van onze code, maar voel je vrij om deze aan te passen aan je missieparameters.

Stap 5: Maak code om het tellerscherm te lezen, interpreteer het en ga terug van de bron

Maak code om het tellerscherm te lezen, het te interpreteren en terug te trekken uit de bron
Maak code om het tellerscherm te lezen, het te interpreteren en terug te trekken uit de bron

Het hart van ons project is de Geiger-Muller-teller en het volgende codesegment wordt gebruikt om te bepalen wat de gegevens op het scherm betekenen met behulp van de camera. Aangezien het scherm van onze teller van kleur verandert op basis van de activiteit van de bron, zullen we de camera instellen om de kleur van het scherm te interpreteren. Start uw code door een variabele in te stellen die gelijk is aan het commando "r.getImage". De variabele bevat een 3D-array van kleurwaarden van de gemaakte foto in rood, groen en blauw. Stel variabelen in die gelijk zijn aan de gemiddelden van deze respectieve kleurenmatrices met behulp van het commando "mean(mean(img1(:,:, x)))" waarbij x een geheel getal is van 1 tot 3. 1, 2 en 3 vertegenwoordigen rood, groen en respectievelijk blauw. Zoals bij alle opdrachten waarnaar wordt verwezen, mag u geen aanhalingstekens gebruiken.

Laat het programma 20 seconden pauzeren met "pause(20)" zodat de teller een nauwkeurige meting van het monster kan verkrijgen, en begin dan met een "if"-statement. We hebben onze Roomba verschillende keren laten piepen door "r.beep" te gebruiken voordat hij een menu liet zien met de tekst "Radio-isotoop gevonden! Let op!" dit kan worden bereikt met het commando "waitfor(helpdlg({'texthere'})". Nadat u op ok heeft geklikt, blijft de Roomba de rest van de code volgen in het "if"-statement. Laat de Roomba rond het voorbeeld rijden met een combinatie van de commando's "r.moveDistance" en "r.turnAngle" Zorg ervoor dat u uw if-statement afsluit met een "end".

Bijgevoegd is een screenshot van onze code, maar voel je vrij om deze aan te passen aan je missieparameters.

Stap 6: maak een klifsensorcode aan

Maak een klifsensorcode aan
Maak een klifsensorcode aan

Om een code te maken om gebruik te maken van de ingebouwde cliff-sensoren van Roomba, begint u met een "while"-lus en stelt u de uitdrukking in op waar. Stel een variabele in die gelijk is aan "r.getCliffSensors", en dit zal resulteren in een structuur. Start een "if" -instructie en stel de variabelen "X.leftFront" en "X.rightFront" van de structuur in om groter te zijn dan een vooraf bepaalde waarde, waarbij "X" de variabele is waarvoor u de opdracht "r.getCliffSensors" hebt gekozen gelijk zijn aan. In ons geval gebruikten we 1000, omdat een stuk wit papier werd gebruikt om een klif weer te geven, en toen de sensoren het papier naderden, groeiden de waarden tot ruim boven de 1000, zodat de code alleen wordt uitgevoerd wanneer een klif wordt gedetecteerd. Voeg daarna het commando "break" toe en voeg vervolgens een "else"-statement in. Voor de "else"-opdracht, die wordt uitgevoerd als er geen klif wordt gedetecteerd, stelt u de rijsnelheid in op de normale kruissnelheid voor elk wiel. Als de Roomba een klif detecteert, wordt de "break" uitgevoerd en wordt de code buiten de while-lus uitgevoerd. Nadat u het "end" voor de "if" en "while"-lus hebt geplaatst, stelt u de Roomba in om achteruit te gaan met behulp van de opdracht verplaatsafstand. Om astronauten te waarschuwen dat er een klif in de buurt is, stelt u de aandrijfsnelheden van elk wiel, x en y in het aandrijfsnelheidscommando, in op a en -a, waarbij a een reëel getal is. Hierdoor gaat de Roomba draaien en wordt de astronaut gewaarschuwd voor de klif.

Bijgevoegd is een screenshot van onze code, maar voel je vrij om deze aan te passen aan je missieparameters.

Stap 7: Conclusie

Conclusie
Conclusie

Het uiteindelijke doel van de RADbot op Mars is om astronauten te helpen bij hun verkenning en kolonisatie van de rode planeet. Door radioactieve monsters op het oppervlak te identificeren, hopen we dat de robot, of rover, in dit geval astronauten echt kan beschermen en kan helpen bij het identificeren van stroombronnen voor hun basis(en). Na het volgen van al deze stappen, en misschien met wat vallen en opstaan, zou uw RADbot operationeel moeten zijn. Plaats het radioactieve monster ergens in uw testgebied, voer uw code uit en kijk hoe de rover doet waarvoor hij is ontworpen. Veel plezier met je RADbot!

-Het EF230 RADbot-team

Aanbevolen: