Turinys:
- 1 žingsnis: reikmenys
- 2 žingsnis: problemos pareiškimas
- 3 žingsnis: „Bluetooth“nuotolinis valdymas
- 4 žingsnis: Poveikio atpažinimas
- 5 žingsnis: gyvenimo atpažinimas
- 6 žingsnis: paleiskite
Video: „Mars Roomba“: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Ši instrukcija padės jums valdyti „Raspberry Pi“valdomą „Roomba“vakuuminį robotą. Operacinė sistema, kurią naudosime, yra per MATLAB.
1 žingsnis: reikmenys
Ką reikės surinkti norint įgyvendinti šį projektą:
- „iRobot“sukurtas dulkių siurblio „Create2 Roomba“robotas
- Raspberry Pi
- „Raspberry Pi“fotoaparatas
- Naujausia MATLAB versija
- „Roomba“diegimo įrankių rinkinys, skirtas MATLAB
- MATLAB programa mobiliesiems įrenginiams
2 žingsnis: problemos pareiškimas
Mums buvo pavesta naudoti MATLAB, kad sukurtume roverį, kuris galėtų būti naudojamas Marse, kad padėtų mokslininkams rinkti planetos duomenis. Funkcijos, kurias aptarėme savo projekte, buvo nuotolinis valdymas, objekto poveikio atpažinimas, vandens atpažinimas, gyvybės atpažinimas ir vaizdo apdorojimas. Norėdami pasiekti šiuos žygdarbius, mes kodavome naudodami „Roomba“įrankių rinkinio komandas, kad galėtume manipuliuoti daugeliu „iRobot“sukurtos „Create2 Roomba“funkcijų.
3 žingsnis: „Bluetooth“nuotolinis valdymas
Šioje skaidrėje bus pateiktas kodas, skirtas valdyti „Roomba“judėjimą, naudojant išmaniojo telefono įrenginio „Bluetooth“galimybes. Norėdami pradėti, atsisiųskite „MATLAB“programą į savo išmanųjį telefoną ir prisijunkite prie „Mathworks“paskyros. Prisijungę eikite į „daugiau“, „nustatymai“ir prisijunkite prie kompiuterio naudodami jo IP adresą. Prisijungę grįžkite į „daugiau“ir pasirinkite „jutikliai“. Bakstelėkite trečiąjį jutiklį viršutinėje ekrano įrankių juostoje ir bakstelėkite pradėti. Dabar jūsų išmanusis telefonas yra nuotolinio valdymo pultas!
Kodas yra toks:
o 0 == 0
pauzė (.5)
Telefono duomenys = M. Orientation;
Azi = Telefono duomenys (1);
Pitch = PhoneData (2);
Šonas = Telefono duomenys (3);
nelygumai = r.getBamperiai;
jei šonas> 80 || Šonas <-80
r.stop
r. pyptelėjimas („C, E, G, C^, G, E, C“)
pertrauka
elseif Pusė> 20 && Šonas <40
r.pasukimo kampas (-5);
Kita pusė> 40
r.pasukimo kampas (-25);
elseif Side-40
r.pasukimo kampas (5);
elseif Pusė <-40
r.pasukimo kampas (25);
galas
jei Pitch> 10 && Pitch <35
r.moveDistance (.03)
elseif Pitch> -35 && Pitch <-10
r.moveDistance (-. 03)
galas
galas
4 žingsnis: Poveikio atpažinimas
Kita funkcija, kurią įgyvendinome, buvo aptikti „Roomba“poveikį objektui ir tada ištaisyti dabartinį jo kelią. Norėdami tai padaryti, turėjome naudoti sąlygines sąlygas su buferio jutiklių rodmenimis, kad nustatytume, ar atsitrenkė į objektą. Jei robotas atsitrenks į objektą, jis atsitrauks.2 metrus atgal ir pasuks kampu, kuriuo nustatomas buferis. Paspaudus elementą, pasirodo meniu, kuriame rodomas žodis „oof“.
Kodas parodytas žemiau:
o 0 == 0
nelygumai = r.getBamperiai;
r.setDriveVelocity (.1)
jei nelygumai.kairė == 1
„msgbox“(„Oi!“);
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.front == 1
„msgbox“(„Oi!“);
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (90)
r.setDriveVelocity (.2)
elseif nelygumai.teisė == 1
„msgbox“(„Oho!“);
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
elseif bumps.leftWheelDrop == 1
„msgbox“(„Oho!“);
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif nelygumai.rightWheelDrop == 1
„msgbox“(„Oi!“);
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
galas
galas
5 žingsnis: gyvenimo atpažinimas
Mes užkodavome gyvybės atpažinimo sistemą, kad nuskaitytume priešais esančių objektų spalvas. Trys gyvenimo rūšys, kurias mes užkodavome, yra augalai, vanduo ir ateiviai. Norėdami tai padaryti, mes kodavome jutiklius, kad apskaičiuotume vidutines raudonos, mėlynos, žalios arba baltos vertės. Šios vertės buvo lyginamos su slenksčiais, kurie buvo nustatyti rankiniu būdu, kad būtų nustatyta spalva, į kurią žiūri fotoaparatas. Kodas taip pat nubrėžtų kelią į objektą ir sukurtų žemėlapį.
Kodas yra toks:
t = 10;
i = 0;
o t == 10
img = r.getImage; parodyti (img)
pauzė (0,167)
i = i + 1;
red_mean = vidurkis (vidurkis (img (:,:, 1)));
blue_mean = vidurkis (vidurkis (img (:,:, 3)));
žalia_reikšmė = vidurkis (vidurkis (img (:,:, 2)));
white_mean = (blue_mean + green_mean + red_mean) / 3; %nori šios vertės maždaug 100
devyni_plius_tenas = 21;
žalia_slenkstis = 125;
mėlyna_slenkstis = 130;
balta_slenkstis = 124;
raudona_slenkstis = 115;
o nine_plus_ten == 21 %žalia - gyvenimas
if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('rastas galimas gyvybės šaltinis, nubrėžta vieta');
pauzė (2)
ištrinti (a)
[y2, Fs2] = garso skaitymas ('z_speak2.wav');
garsas (y2, Fs2)
pauzė (2)
%augalas = r.getImage; %imshow (augalas);
%taupyti ('plant_img.mat', plant ');
%sklypo vieta žalia spalva
i = 5;
pertrauka
Kitas
devyni_pliusai_ten = 19;
galas
galas
devyni_pliusai_tenas = 21;
o nine_plus_ten == 21 %mėlyna - woder
if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('rastas vandens šaltinis, nubrėžta vieta');
pauzė (2)
ištrinti (a)
[y3, Fs3] = garso skaitymas ('z_speak3.wav');
garsas (y3, Fs3);
%woder = r.getImage; %parodymas (woder)
%taupymas ('water_img.mat', woder)
%sklypo vieta mėlyna spalva
i = 5;
pertrauka
Kitas
devyni_pliusai_ten = 19;
galas
galas
devyni_plius_tenas = 21;
tuo tarpu nine_plus_ten == 21 %balta - ateiviai monkaS
if white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold
[y5, Fs5] = garso skaitymas ('z_speak5.wav');
garsas (y5, Fs5);
pauzė (3)
r.setDriveVelocity (0,.5)
[ys, Fss] = garso skaitymas ('z_scream.mp3');
garsas (ys, Fss);
pauzė (3)
r.stop
ateivių % = r.getImage; %imshow (ateivis);
% taupyti ('alien_img.mat', ateivis);
i = 5;
pertrauka
Kitas
devyni_pliusai_ten = 19;
galas
galas
jei i == 5
a = 1; %posūkio kampas
t = 9; %nutraukti didelę kilpą
i = 0;
galas
galas
6 žingsnis: paleiskite
Kai visas kodas bus parašytas, sujunkite jį į vieną failą ir voila! Dabar jūsų „Roomba“robotas veiks visiškai ir veiks taip, kaip skelbiama! Tačiau „Bluetooth“valdiklis turėtų būti atskirame faile arba atskirtas nuo likusio kodo naudojant %%.
Mėgaukitės savo roboto naudojimu !!
Rekomenduojamas:
„Roomba“pavertimas „Mars Rover“: 5 žingsniai
„Roomba“pavertimas „Mars Rover“:
„Mars Rover“naudojant „Raspberry Pi“: 5 žingsniai
„Mars Rover“naudojant „Raspberry Pi“: Mielas, puikus mokinys, man visada įdomu sužinoti apie „Mars rover“, turintį 6 ratus, galinčius nuvažiuoti visą Marso paviršių ir tyrinėti Žemės dalykus. Aš taip pat noriu ištirti dalyką sėdėdamas ant nešiojamojo kompiuterio. Taigi dabar manau, kad pats laikas tai padaryti ir
„Raspberry Pi“- autonominis „Mars Rover“su „OpenCV“objektų stebėjimu: 7 žingsniai (su nuotraukomis)
„Raspberry Pi“- autonominis „Mars Rover“su „OpenCV“objektų sekimu: veikia „Raspberry Pi 3“, „Open CV“objektų atpažinimas, ultragarso jutikliai ir nuolatiniai nuolatinės srovės varikliai. Šis roveris gali sekti bet kokį objektą, kuriam jis yra apmokytas, ir judėti bet kokioje vietovėje
„Mars Roomba“projektas UTK: 4 žingsniai
„Mars Roomba“projektas UTK: ATSISAKYMAS: ŠIS TIKS TIK TAI, KAI ROOMBA NUSTATYTA KONKREČIU BŪDU, ŠI INSTRUKCIJA buvo sukurta ir ją ketino naudoti TENESIO STUDENTŲ UNIVERSITETAS IR FAKULTETAS Šis kodas naudojamas norint nustatyti parašyta ir
„IRobot Create-Mars Expedition Rover Mark I“: 4 žingsniai
„IRobot Create-Mars Expedition Rover Mark I“: ši instrukcija mokys jus, kaip nustatyti „iRobot Create“naudojant „MatLab“kodavimą. Jūsų robotas galės ieškoti mineralų, išskirdamas figūras, manevruodamas nelygią reljefą naudodamas uolų jutiklius, ir turi galimybę