Inhoudsopgave:
- Stap 1: Benodigdheden
- Stap 2: De probleemstelling
- Stap 3: Bluetooth-afstandsbediening
- Stap 4: Impactherkenning
- Stap 5: Erkenning van het leven
- Stap 6: Voer het uit
Video: Mars Roomba: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze Instructable zal je begeleiden in de richting van het bedienen van een Raspberry Pi-gestuurde Roomba-vacuümbot. Het besturingssysteem dat we gaan gebruiken is via MATLAB.
Stap 1: Benodigdheden
Wat je moet verzamelen om dit project uit te voeren:
- iRobot's Create2 Roomba stofzuiger bot
- Raspberry Pi
- Raspberry Pi-camera
- De nieuwste versie van MATLAB
- De Roomba-installatietoolbox voor MATLAB
- MATLAB-applicatie voor een mobiel apparaat
Stap 2: De probleemstelling
We kregen de opdracht om MATLAB te gebruiken om een rover te ontwikkelen die op Mars kan worden gebruikt om wetenschappers te helpen bij het verzamelen van planeetgegevens. De functies die we in ons project behandelden, waren afstandsbediening, objectimpactherkenning, waterherkenning, levensherkenning en beeldverwerking. Om deze prestaties te bereiken, hebben we gecodeerd met behulp van de Roomba-toolbox-opdrachten om de vele functies van Create2 Roomba van iRobot te manipuleren.
Stap 3: Bluetooth-afstandsbediening
Deze dia loopt door de code om de beweging van de Roomba te regelen met behulp van de Bluetooth-mogelijkheden van uw smartphoneapparaat. Download om te beginnen de MATLAB-applicatie naar uw smartphone en log in op uw Mathworks-account. Eenmaal ingelogd, ga naar "meer", "instellingen", en maak verbinding met uw computer via het IP-adres. Eenmaal verbonden, ga terug naar "meer" en selecteer "sensoren". Tik op de derde sensor op de bovenste werkbalk van het scherm en tik op start. Nu is uw smartphone een afstandsbediening!
De code is als volgt:
terwijl 0 == 0
pauze (.5)
PhoneData = M. Oriëntatie;
Azi = Telefoongegevens(1);
Pitch = Telefoongegevens (2);
Zijkant = Telefoongegevens (3);
hobbels = r.getBumpers;
als zijde>80 || Zijkant <-80
r.stop
r.piep('C, E, G, C^, G, E, C')
pauze
elseif Zijde>20 && Zijde<40
r.turnAngle(-5);
elseif Zijde>40
r.turnAngle(-25);
elseif Side-40
r.turnAngle(5);
elseif Side<-40
r.turnAngle(25);
einde
als toonhoogte >10 && toonhoogte <35
r.moveDistance(.03)
elseif Pitch>-35 && Pitch<-10
r.moveDistance(-.03)
einde
einde
Stap 4: Impactherkenning
Een andere functie die we hebben geïmplementeerd, was om de impact van de Roomba op een object te detecteren en vervolgens het huidige pad te corrigeren. Om dit te doen, moesten we conditionals gebruiken met de metingen van de bumpersensoren om te bepalen of een object werd geraakt. Als de robot een object raakt, zal hij 0,2 meter achteruit rijden en draaien onder een hoek die wordt bepaald door welke bumper is geraakt. Zodra een item is geraakt, verschijnt er een menu met het woord 'oof'.
De code wordt hieronder weergegeven:
terwijl 0 == 0
hobbels = r.getBumpers;
r.setDriveVelocity(.1)
if hobbels.links == 1
msgbox('Oef!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.draaihoek(-35)
r.setDriveVelocity(.2)
elseif hobbels.front == 1
msgbox('Oef!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.turnAngle(90)
r.setDriveVelocity(.2)
elseif hobbels.right == 1
msgbox('Oef!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.turnAngle(35)
r.setDriveVelocity(.2)
elseif hobbels.leftWheelDrop ==1
msgbox('Oef!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.draaihoek(-35)
r.setDriveVelocity(.2)
elseif hobbels.rightWheelDrop ==1
msgbox('Oef!');
r.moveDistance(-0.2)
r.setTurnVelocity(.2)
r.turnAngle(35)
r.setDriveVelocity(.2)
einde
einde
Stap 5: Erkenning van het leven
We hebben een levensherkenningssysteem gecodeerd om de kleuren van objecten ervoor te lezen. De drie soorten leven waarvoor we codeerden zijn planten, water en buitenaardse wezens. Om dit te doen, hebben we de sensoren gecodeerd om de gemiddelde waarden van rood, blauw, groen of wit te berekenen. Deze waarden werden vergeleken met de drempels die handmatig werden ingesteld om te bepalen naar welke kleur de camera kijkt. De code zou ook het pad naar het object plotten en een kaart maken.
De code is als volgt:
t = 10;
ik = 0;
terwijl t == 10
img = r.getImage; imshow(img)
pauze(0.167)
ik = ik + 1;
red_mean = gemiddelde(gemiddelde(img(:,:, 1)));
blue_mean = gemiddelde(gemiddelde(img(:,:, 3)));
green_mean = gemiddelde(gemiddelde(img(:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; %wil deze waarde ongeveer 100
negen_plus_ten = 21;
green_threshold = 125;
blue_threshold = 130;
white_threshold = 124;
red_threshold = 115;
terwijl nine_plus_ten == 21% groen - leven
if green_mean > green_threshold && blue_mean < blue_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('mogelijke levensbron gevonden, locatie uitgezet');
pauze (2)
verwijderen(a)
[y2, Fs2] =audioread('z_speak2.wav');
geluid (y2, Fs2)
pauze (2)
%plant = r.getImage; %imshow(plant);
%save('plant_img.mat', plant');
%plotlocatie in het groen
ik = 5;
pauze
anders
negen_plus_ten = 19;
einde
einde
negen_plus_ten = 21;
terwijl nine_plus_ten == 21%blauw - woder
if blue_mean > blue_threshold && green_mean < green_threshold && white_mean < white_threshold && red_mean < red_threshold
r.moveDistance(-.1)
a = msgbox('een waterbron is gevonden, locatie uitgezet');
pauze (2)
verwijderen(a)
[y3, Fs3] =audioread('z_speak3.wav');
geluid (y3, Fs3);
%woder = r.getImage; %imshow(woder)
%save('water_img.mat', woder)
%plotlocatie in blauw
ik = 5;
pauze
anders
negen_plus_ten = 19;
einde
einde
negen_plus_ten = 21;
while nine_plus_ten == 21 %wit - aliens monkaS
if white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold
[y5, Fs5] =audioread('z_speak5.wav');
geluid (y5, Fs5);
pauze (3)
r.setDriveVelocity(0,.5)
[ys, Fss] =audioread('z_scream.mp3');
geluid (ys, Fss);
pauze (3)
r.stop
% alien = r.getImage; %imshow(buitenaards);
% save('alien_img.mat', alien);
ik = 5;
pauze
anders
negen_plus_ten = 19;
einde
einde
als ik == 5
een = 1; % draait hoek
t = 9; %beëindig grote lus
ik = 0;
einde
einde
Stap 6: Voer het uit
Nadat alle code is geschreven, combineert u alles in één bestand en voila! Uw Roomba-bot zal nu volledig functioneel zijn en werken zoals geadverteerd! De Bluetooth-besturing moet echter in een apart bestand staan of met %% van de rest van de code worden gescheiden.
Veel plezier met het gebruik van je robot!!
Aanbevolen:
Uw Roomba in een Mars Rover veranderen: 5 stappen
Uw Roomba in een Mars Rover veranderen:
Mars Rover met Raspberry Pi: 5 stappen
Mars Rover met Raspberry Pi: Beste allemaal geweldige leerling, ik ben altijd nieuwsgierig naar mars rover, met 6 wielen die over het hele oppervlak van mars kunnen gaan en dingen vanaf de aarde kunnen verkennen. Ik wil ook dingen verkennen door op mijn laptop te zitten. Dus nu denk ik dat het de juiste tijd is om het te maken en
Mars Roomba Project UTK - Ajarnpa
Mars Roomba Project UTK: DISCLAIMER: DIT WERKT ALLEEN ALS DE ROOMBA OP ELK SPECIFIEKE MANIER IS OPGESTELD, DIT INSTRUCTABLE IS GEMAAKT VOOR EN BEDOELD OM TE WORDEN GEBRUIKT DOOR UNIVERSITEIT VAN TENNESSEE STUDENTEN EN FACULTY Deze code wordt gebruikt om lokaal een Roomba op te zetten geschreven en s
Gemaakt van Mars: 9 stappen
Gemaakt van Mars: Dit project begon als een ontwerpuitdaging toen mijn vriend, J.R. Skok (een planetaire geoloog aan het SETI Institute), me een stel basaltstoffen gaf om iets modieus te maken. Deze stoffen werden gemaakt van vulkanische lava, die werden gewonnen, gesmolten
Van Roomba naar Rover in slechts 5 stappen!: 5 stappen
Van Roomba naar Rover in slechts 5 stappen!: Roomba-robots zijn een leuke en gemakkelijke manier om je tenen onder te dompelen in de wereld van robotica. In deze Instructable zullen we in detail beschrijven hoe we een eenvoudige Roomba kunnen omzetten in een bestuurbare rover die tegelijkertijd zijn omgeving analyseert. Onderdelenlijst1.) MATLAB2.) Roomb