Taula de continguts:
- Pas 1: subministraments
- Pas 2: la declaració del problema
- Pas 3: control remot Bluetooth
- Pas 4: reconeixement d’impacte
- Pas 5: reconeixement de la vida
- Pas 6: executeu-lo
Vídeo: Mars Roomba: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Aquest instructiu us guiarà en les instruccions d’operar un robot aspirador Roomba controlat per Raspberry Pi. El sistema operatiu que utilitzarem és a través de MATLAB.
Pas 1: subministraments
Què haureu de reunir per dur a terme aquest projecte:
- Bot d'aspirador Create2 Roomba d'iRobot
- Raspberry Pi
- Càmera Raspberry Pi
- La darrera versió de MATLAB
- La caixa d’eines d’instal·lació de Roomba per a MATLAB
- Aplicació MATLAB per a dispositius mòbils
Pas 2: la declaració del problema
Se'ns va encarregar utilitzar MATLAB per desenvolupar un rover que es pogués utilitzar a Mart per ajudar els científics a recopilar dades del planeta. Les funcions que vam abordar en el nostre projecte eren de control remot, reconeixement d’impacte d’objectes, reconeixement d’aigua, reconeixement de vida i processament d’imatges. Per aconseguir aquestes gestes, hem codificat amb les ordres de la caixa d’eines Roomba per manipular les moltes funcions de Create2 Roomba d’iRobot.
Pas 3: control remot Bluetooth
Aquesta diapositiva recorrerà el codi per controlar el moviment de Roomba mitjançant les funcions Bluetooth del dispositiu del vostre telèfon intel·ligent. Per començar, descarregueu l'aplicació MATLAB al vostre telèfon intel·ligent i inicieu sessió al vostre compte de Mathworks. Un cop hàgiu iniciat la sessió, aneu a "més", "configuració" i connecteu-vos a l'ordinador mitjançant la seva adreça IP. Un cop connectat, torneu a "més" i seleccioneu "sensors". Toqueu el tercer sensor de la barra d'eines superior de la pantalla i toqueu Inici. Ara, el vostre telèfon intel·ligent és un control remot.
El codi és el següent:
mentre que 0 == 0
pausa (.5)
PhoneData = M. Orientation;
Azi = PhoneData (1);
Pitch = PhoneData (2);
Side = PhoneData (3);
bumps = r.getBumpers;
si Side> 80 || Costat <-80
r. aturar-se
r.beep ('C, E, G, C ^, G, E, C')
trencar
elseif Side> 20 && Side <40
r.turnAngle (-5);
elseif Side> 40
r.turnAngle (-25);
elseif Side-40
r.turnAngle (5);
elseif Side <-40
r.turnAngle (25);
final
si Pitch> 10 && Pitch <35
r.moveDistance (.03)
elseif Pitch> -35 && Pitch <-10
r.moveDistance (-. 03)
final
final
Pas 4: reconeixement d’impacte
Una altra funció que vam implementar va ser detectar l'impacte del Roomba en un objecte i després corregir el seu camí actual. Per fer-ho, vam haver d’utilitzar els condicionants amb les lectures dels sensors de para-xocs per determinar si es va colpejar un objecte. Si el robot colpeja un objecte, tornarà a fer una còpia de seguretat de 2 metres i girarà en un angle determinat pel cop de para-xocs. Un cop s'ha premut un element, apareix un menú que mostra la paraula "oof".
El codi es mostra a continuació:
mentre que 0 == 0
bumps = r.getBumpers;
r.setDriveVelocity (.1)
si bumps.left == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.front == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (90)
r.setDriveVelocity (.2)
elseif bumps.right == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
elseif bumps.leftWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (-35)
r.setDriveVelocity (.2)
elseif bumps.rightWheelDrop == 1
msgbox ('Oof!');
r.moveDistance (-0,2)
r.setTurnVelocity (.2)
r.turnAngle (35)
r.setDriveVelocity (.2)
final
final
Pas 5: reconeixement de la vida
Hem codificat un sistema de reconeixement de la vida per llegir els colors dels objectes que hi ha al davant. Els tres tipus de vida que codifiquem són les plantes, l’aigua i els extraterrestres. Per fer-ho, hem codificat els sensors per calcular els valors mitjans de vermell, blau, verd o blanc. Aquests valors es van comparar amb els llindars establerts manualment per determinar el color que mira la càmera. El codi també traçaria el camí cap a l'objecte i creava un mapa.
El codi és el següent:
t = 10;
i = 0;
mentre que t == 10
img = r.getImage; imshow (img)
pausa (0,167)
i = i + 1;
red_mean = mean (mitjana (img (:,:, 1))));
blue_mean = mitjana (mitjana (img (:,:, 3))));
green_mean = mitjana (mitjana (img (:,:, 2))));
blanc_mig = (blau_mig + verd_mig + vermell_mig) / 3; % vol que aquest valor sigui aproximadament 100
nou_plus_ten = 21;
llindar_verd = 125;
llindar_blau = 130;
llindar_ blanc = 124;
llindar_red = 115;
mentre que nine_plus_ten == 21% verd - vida
if green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('possible font de vida trobada, ubicació representada');
pausa (2)
esborrar (a)
[y2, Fs2] = audioread ('z_speak2.wav');
so (y2, Fs2)
pausa (2)
% plant = r.getImage; % imshow (planta);
% save ('plant_img.mat', planta ');
% ubicació de la parcel·la en verd
i = 5;
trencar
en cas contrari
nou_plus_ten = 19;
final
final
nou_plus_ten = 21;
mentre que nine_plus_ten == 21% blau - woder
if blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold
r.moveDistance (-. 1)
a = msgbox ('s'ha trobat una font d'aigua, la ubicació es va traçar');
pausa (2)
esborrar (a)
[y3, Fs3] = audioread ('z_speak3.wav');
so (y3, Fs3);
% woder = r.getImage; % imshow (woder)
% save ('water_img.mat', woder)
% ubicació de la parcel·la en blau
i = 5;
trencar
en cas contrari
nou_plus_ten = 19;
final
final
nou_plus_ten = 21;
mentre que nine_plus_ten == 21% blancs - aliens monkaS
if white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold
[y5, Fs5] = audioread ('z_speak5.wav');
so (y5, Fs5);
pausa (3)
r.setDriveVelocity (0,.5)
[ys, Fss] = audioread ('z_scream.mp3');
so (ys, Fss);
pausa (3)
r. aturar-se
% alien = r.getImage; % imshow (alien);
% save ('alien_img.mat', alien);
i = 5;
trencar
en cas contrari
nou_plus_ten = 19;
final
final
si i == 5
a = 1; % de girs
t = 9; % finalitza el bucle gran
i = 0;
final
final
Pas 6: executeu-lo
Després d’haver escrit tot el codi, combineu-ho tot en un sol fitxer i voilà! El vostre bot Roomba ara serà completament funcional i funcionarà tal i com s’anuncia. Tanmateix, el control Bluetooth hauria d'estar en un fitxer separat o separat de la resta del codi amb %%.
Gaudeix d'utilitzar el teu robot !!
Recomanat:
Convertint Roomba en un Mars Rover: 5 passos
Convertint Roomba en un Mars Rover:
Mars Rover amb Raspberry Pi: 5 passos
Mars Rover amb Raspberry Pi: Benvolguts grans aprenents, sempre tinc curiositat per saber sobre Mars Rover, que té 6 rodes que poden recórrer tota la superfície de Mart i explorar coses des de la Terra. També vull explorar coses assegut al meu ordinador portàtil. Així que ara em sembla el moment adequat per fer-ho i
Raspberry Pi: autònom Mars Rover amb seguiment d'objectes OpenCV: 7 passos (amb imatges)
Raspberry Pi: rover autònom de Mars amb seguiment d'objectes OpenCV: alimentat per un Raspberry Pi 3, reconeixement d'objectes CV obert, sensors d'ultrasons i motors de corrent continu. Aquest rover pot rastrejar qualsevol objecte per al qual està entrenat i moure’s en qualsevol terreny
Projecte Mars Roomba UTK: 4 passos
Projecte Mars Roomba UTK: EXCLUSIÓ DE RESPONSABILITATS: AQUEST FUNCIONAMENT NO SERÀ SI LA ROOMBA ESTÀ CONFIGURADA DE MANERA ESPECÍFICA AVERY, AQUEST INSTRUCTABLE VA SER CREAT I INTENCIONAT PER A L’ÚS I LA FACULTAT DE LA UNIVERSITAT DE TENNESSEE Aquest codi s’utilitza per configurar un Roomba per funcionar localment. escrit i s
IRobot Create-Mars Expedition Rover Mark I: 4 passos
IRobot Create-Mars Expedition Rover Mark I: aquest instructiu us ensenyarà a configurar el iRobot Create mitjançant la codificació MatLab. El vostre robot tindrà la capacitat de buscar minerals distingint formes, maniobrant terreny accidentat mitjançant l'ús de sensors de penya-segats i té la capacitat