Table des matières:
- Étape 1: Fournitures
- Étape 2: L'énoncé du problème
- Étape 3: Télécommande Bluetooth
- Étape 4: Reconnaissance d'impact
- Étape 5: Reconnaissance de la vie
- Étape 6: Exécutez-le
Vidéo: Mars Roomba : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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
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
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
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
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é:
Transformer votre Roomba en Mars Rover : 5 étapes
Transformer votre Roomba en Mars Rover :
Mars Rover utilisant Raspberry Pi : 5 étapes
Mars Rover utilisant Raspberry Pi : Cher tous les grands apprenants, je suis toujours curieux de connaître Mars Rover, ayant 6 roues qui peuvent parcourir toute la surface de Mars et explorer des choses depuis la Terre. Je veux aussi explorer la chose en m'asseyant sur mon ordinateur portable. Alors maintenant, je pense que c'est le bon moment pour le faire et
Raspberry Pi - Mars Rover autonome avec suivi d'objets OpenCV : 7 étapes (avec photos)
Raspberry Pi - Mars Rover autonome avec suivi d'objets OpenCV : alimenté par un Raspberry Pi 3, reconnaissance d'objets Open CV, capteurs à ultrasons et moteurs à engrenages à courant continu. Ce rover peut suivre n'importe quel objet pour lequel il est entraîné et se déplacer sur n'importe quel terrain
Mars Roomba Project UTK : 4 étapes
Mars Roomba Project UTK : AVIS DE NON-RESPONSABILITÉ : CELA NE FONCTIONNERA QUE SI LE ROOMBA EST CONFIGURÉ D'UNE FAÇON SPÉCIFIQUE. écrit et s
Robot de reconnaissance de Mars : 4 étapes
Robot de reconnaissance Mars : ce Instructable est un guide étape par étape pour programmer et commander le Robot de reconnaissance Mars