Table des matières:

Mars Roomba : 6 étapes
Mars Roomba : 6 étapes

Vidéo: Mars Roomba : 6 étapes

Vidéo: Mars Roomba : 6 étapes
Vidéo: iRobot Roomba 671 WiFi Robot Vacuum Set Up Manual Guide 2024, Juillet
Anonim
Mars Roomba
Mars Roomba

Ce Instructable vous guidera dans les directions d'utilisation d'un robot aspirateur Roomba contrôlé par Raspberry Pi. Le système d'exploitation que nous utiliserons passe par MATLAB.

Étape 1: Fournitures

Ce que vous devrez rassembler pour mener à bien ce projet:

  • Robot aspirateur iRobot Create2 Roomba
  • Tarte aux framboises
  • Caméra Raspberry Pi
  • La dernière version de MATLAB
  • La boîte à outils d'installation de Roomba pour MATLAB
  • Application MATLAB pour un appareil cellulaire

Étape 2: L'énoncé du problème

L'énoncé du problème
L'énoncé du problème

Nous avons été chargés d'utiliser MATLAB pour développer un rover qui pourrait être utilisé sur Mars afin d'aider les scientifiques à collecter des données sur la planète. Les fonctions que nous avons abordées dans notre projet étaient la télécommande, la reconnaissance d'impact d'objet, la reconnaissance de l'eau, la reconnaissance de la vie et le traitement d'images. Pour réaliser ces exploits, nous avons codé à l'aide des commandes de la boîte à outils Roomba pour manipuler les nombreuses fonctions de Create2 Roomba d'iRobot.

Étape 3: Télécommande Bluetooth

Télécommande Bluetooth
Télécommande Bluetooth

Cette diapositive parcourra le code pour contrôler le mouvement du Roomba à l'aide des capacités Bluetooth de votre smartphone. Pour commencer, téléchargez l'application MATLAB sur votre smartphone et connectez-vous à votre compte Mathworks. Une fois connecté, allez dans "plus", "paramètres", et connectez-vous à votre ordinateur en utilisant son adresse IP. Une fois connecté, revenez à "plus" et sélectionnez "capteurs". Appuyez sur le troisième capteur dans la barre d'outils supérieure de l'écran, puis appuyez sur Démarrer. Désormais, votre smartphone est une télécommande !

Le code est comme suit:

tandis que 0 == 0

pause(.5)

PhoneData = M. Orientation;

Azi = PhoneData(1);

Pas = PhoneData(2);

Côté = PhoneData(3);

bumps = r.getBumpers;

si Côté>80 || Côté<-80

r.stop

r.bip('C, E, G, C^, G, E, C')

Pause

elseif Côté>20 && Côté<40

r.turnAngle(-5);

sinon Côté>40

r.turnAngle(-25);

elseif Côté-40

r.turnAngle(5);

elseif Côté<-40

r.turnAngle(25);

finir

si Pas >10 && Pas<35

r.moveDistance(.03)

elseif Pas>-35 && Pas<-10

r.moveDistance(-.03)

finir

finir

Étape 4: Reconnaissance d'impact

Reconnaissance d'impact
Reconnaissance d'impact

Une autre fonction que nous avons implémentée était de détecter l'impact du Roomba dans un objet puis de corriger son chemin actuel. Pour ce faire, nous avons dû utiliser des conditions avec les lectures des capteurs de pare-chocs pour déterminer si un objet a été heurté. Si le robot heurte un objet, il reculera de 0,2 mètre et pivotera à un angle déterminé par le pare-chocs qui a été heurté. Une fois qu'un élément a été touché, un menu apparaît affichant le mot « oof ».

Le code est indiqué ci-dessous:

tandis 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)

finir

finir

Étape 5: Reconnaissance de la vie

Reconnaissance de la vie
Reconnaissance de la vie

Nous avons codé un système de reconnaissance de vie pour lire les couleurs des objets qui se trouvent devant lui. Les trois types de vie pour lesquels nous avons codé sont les plantes, l'eau et les extraterrestres. Pour ce faire, nous avons codé les capteurs pour calculer les valeurs moyennes de rouge, bleu, vert ou blanc. Ces valeurs ont été comparées aux seuils définis manuellement pour déterminer la couleur que la caméra regarde. Le code tracerait également le chemin vers l'objet et créerait une carte.

Le code est comme suit:

t = 10;

je = 0;

tandis que t == 10

img = r.getImage; imshow (img)

pause(0.167)

je = je + 1;

red_mean = moyenne(mean(img(:,:, 1)));

blue_mean = moyenne(mean(img(:,:, 3)));

green_mean = moyenne(mean(img(:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %voulez ce val environ 100

neuf_plus_ten = 21;

seuil_vert = 125;

seuil_bleu = 130;

seuil_blanc = 124;

seuil_rouge = 115;

tandis que nine_plus_ten == 21 %vert - vie

if green_mean > green_threshold && blue_mean < blue_threshold && red_mean < red_threshold

r.moveDistance(-.1)

a = msgbox('source de vie possible trouvée, emplacement tracé');

pause(2)

supprimer(a)

[y2, Fs2] =audioread('z_speak2.wav');

son(y2, Fs2)

pause(2)

%plant = r.getImage; %imshow(plante);

%save('plant_img.mat', plante');

%emplacement de la parcelle en vert

je = 5;

Pause

autre

neuf_plus_ten = 19;

finir

finir

neuf_plus_ten = 21;

tandis que nine_plus_ten == 21 %blue - woder

if blue_mean > blue_threshold && green_mean < green_threshold && white_mean < white_threshold && red_mean < red_threshold

r.moveDistance(-.1)

a = msgbox('une source d'eau a été trouvée, emplacement tracé');

pause(2)

supprimer(a)

[y3, Fs3] =audioread('z_speak3.wav');

son(y3, Fs3);

%woder = r.getImage; %imshow(woder)

%save('water_img.mat', woder)

Emplacement %plot en bleu

je = 5;

Pause

autre

neuf_plus_ten = 19;

finir

finir

neuf_plus_ten = 21;

tandis que nine_plus_ten == 21 %blanc - extraterrestres monkaS

if white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold

[y5, Fs5] =audioread('z_speak5.wav');

son(y5, Fs5);

pause(3)

r.setDriveVelocity(0,.5)

[ys, Fss] =audioread('z_scream.mp3');

son(oui, Fss);

pause(3)

r.stop

% étranger = r.getImage; %imshow(extraterrestre);

% save('alien_img.mat', extraterrestre);

je = 5;

Pause

autre

neuf_plus_ten = 19;

finir

finir

si je == 5

a = 1; % angle de virage

t = 9; %terminer la grande boucle

je = 0;

finir

finir

Étape 6: Exécutez-le

Une fois que tout le code a été écrit, combinez-le dans un seul fichier et le tour est joué ! Votre robot Roomba sera désormais entièrement fonctionnel et fonctionnera comme annoncé ! Cependant, le contrôle Bluetooth doit être soit dans un fichier séparé, soit séparé du reste du code avec %%.

Profitez de l'utilisation de votre robot !!

Conseillé: