Table des matières:

Roomba Parking Pal : 6 étapes
Roomba Parking Pal : 6 étapes

Vidéo: Roomba Parking Pal : 6 étapes

Vidéo: Roomba Parking Pal : 6 étapes
Vidéo: TOP 5: Best Robot Vacuum Cleaner For 2022 - Self-Charging & WiFi Programmable! 2024, Juillet
Anonim
Roomba Parking Pal
Roomba Parking Pal

Ce projet utilise un roomba programmable iRobot Create, MATLAB r2018a et MATLAB mobile. En utilisant ces trois supports et notre connaissance du codage, nous avons programmé l'iRobot Create pour interpréter les couleurs et utiliser des capteurs embarqués pour effectuer des tâches. Ce projet dépend de la communication Raspberry Pi et MATLAB pour effectuer ces tâches.

Étape 1: Matériaux

Matériaux
Matériaux
Matériaux
Matériaux

1. iRobot Créer un robot

2. MATLAB r2018a

3. Framboise Pi

4. Module caméra

5. Support de stabilisateur de caméra imprimé en 3D

6. Smartphone avec MATLAB mobile installé

7. Ordinateur portable/ordinateur avec MATLAB installé

Étape 2: Connexion

Cette étape consiste à connecter le Raspberry Pi au robot, puis à connecter le robot à votre ordinateur et à connecter le smartphone à l'ordinateur.

La partie la plus simple de ce processus consiste à connecter le Raspberry Pi à votre robot, puisque le Raspberry Pi est monté sur le dessus du robot. Il y a un cordon du robot que tout ce que vous avez à faire est de le brancher sur le côté du Raspberry Pi.

L'étape suivante consiste à connecter le robot à votre ordinateur afin que vous puissiez exécuter des commandes à exécuter par le robot. La première chose que vous devez faire est de connecter votre ordinateur au réseau sans fil que votre roomba est en train de créer. Maintenant, il est recommandé d'utiliser l'icône Définir le chemin dans MATLAB pour définir le chemin afin que vous puissiez utiliser les fonctions de la boîte à outils Roomba de MATLAB. Chaque fois que vous commencez et terminez l'utilisation du robot, vous devez effectuer un « salut à deux doigts » pour réinitialiser le robot, ce qui signifie que vous maintenez enfoncés les boutons Dock et Spot pendant dix secondes jusqu'à ce que la lumière s'éteigne, indiquant de relâcher. Vous avez réussi cette réinitialisation matérielle si vous entendez le robot jouer une échelle courte. Ensuite, vous devez vous connecter au roomba en utilisant une ligne de code comme celle-ci "r=roomba(x)" où 'x' est le numéro désigné pour le robot que vous possédez.

Enfin, vous devez télécharger MATLAB mobile sur n'importe quel appareil mobile que vous utiliserez pour ce projet, et cette application est disponible sur les appareils Android et Apple. Une fois l'application installée, vous devrez vous connecter en utilisant vos identifiants. Ensuite, vous devez connecter cet appareil à votre ordinateur, en utilisant l'onglet intitulé "Plus" -> puis cliquez sur "Paramètres" -> puis cliquez sur "Ajouter un ordinateur" cela devrait faire apparaître l'écran montré dans les images ci-dessus. Après avoir vu cela, le La prochaine étape que vous devez passer est simplement de brancher et d'ajouter les informations qu'il demande. Une fois que vous êtes connecté avec succès, vous pourrez appeler les fonctions que vous définissez sur votre ordinateur sur votre téléphone pour contrôler votre robot.

Étape 3: Création logique d'un code MATLAB pour utiliser des capteurs

Création logique d'un code MATLAB pour utiliser des capteurs
Création logique d'un code MATLAB pour utiliser des capteurs

Le code sera plus facile à créer lorsque la majorité de celui-ci se trouve dans la boucle while, de sorte que le roomba puisse constamment mettre à jour les valeurs valides qu'il examine. S'il y a une erreur, MATLAB affichera une erreur et où elle apparaît dans le code, ce qui rend le dépannage relativement simple.

Conçu dans r2018a MATLAB, ce code utilise les boîtes à outils standard, la boîte à outils iRobot Create, ainsi que la boîte à outils mobile MATLAB. Le roomba utilisé dans cet exemple est désigné par 26, et r=roomba(26) n'a besoin d'être exécuté qu'une seule fois pour communiquer pleinement avec le roomba.

Code:

fonction parkassist(x)si x==1

r=roomba(26) % se connecte à roomba

bien que vrai

r.setDriveVelocity(.05,.05) % règle le roomba sur une vitesse de conduite plus lente

bump=r.getBumpers % obtient les données des capteurs de bump

cliff=r.getCliffSensors % obtient les données des capteurs de falaise

light=r.getLightBumpers % obtient les données des capteurs de choc lumineux

img=r.getImage;% lit la caméra hors du robot

red_mean = Mean(mean(img(:,:, 1))) % lit la quantité moyenne de pixels rouges

green_mean = Mean(mean(img(:,:, 2))) % lit la quantité moyenne de pixels verts

blue_mean = Mean(mean(img(:,:, 3))) % lit la quantité moyenne de pixels bleus

if bump.front == 1 % lit les capteurs de bump avant

r.stop % arrête le roomba

msgbox('Path Obscured!', 'Parking Assistant Message') % affiche un message indiquant que le chemin est obscurci break % termine la boucle

elseif green_mean >150

r.stop % arrête le roomba

cont = questdlg('Continuer ?', 'Chemin terminé') % affiche une boîte de question demandant de continuer

si cont == 'Oui'

parkassist(1) % redémarre le code

autre

finir

break % termine la boucle

elseif red_mean > 140

r.turnAngle(45) % tourne le roomba de 45 degrés

r.timeStart %démarre un compteur de temps

bien que vrai

r.setDriveVelocity(.05,.05) % définit la vitesse du roomba

time=r.timeGet %attribue l'heure à une variable

bump=r.getBumpers % obtient les données des capteurs de bump

cliff=r.getCliffSensors % obtient les données des capteurs de falaise

light=r.getLightBumpers % obtient les données des capteurs de choc lumineux

img=r.getImage;% lit la caméra hors du robot

red_mean = Mean(mean(img(:,:, 1))) % lit la quantité moyenne de pixels rouges

green_mean = Mean(mean(img(:,:, 2))) % lit la quantité moyenne de pixels verts

blue_mean = Mean(mean(img(:,:, 3))) % lit la quantité moyenne de pixels bleus

si blue_mean > 120

r.moveDistance(-0.01) % déplace le roomba vers l'arrière d'une distance définie songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % joue une gamme musicale ascendante

msgbox('Water Found!', 'Parking Assistant Message') % affiche un message indiquant que de l'eau a été trouvée r.turnAngle(-80) % fait pivoter roomba de 80 degrés

% de coupure termine la boucle actuelle

elseif light.rightFront > 25 || light.leftFront > 25 % lit les capteurs de choc lumineux

r.moveDistance(-0.01) % déplace le roomba vers l'arrière d'une distance définie

r.turnAngle(-35) % fait pivoter le roomba de 35 degrés

pause % met fin à la boucle actuelle

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 % lit les deux capteurs de falaise

r.moveDistance(-0.1) % déplace le roomba vers l'arrière d'une distance définie

r.turnAngle (-80) % fait pivoter le roomba de 80 degrés

% de coupure termine la boucle actuelle

sinon heure >= 3

r.stop % arrête le roomba

contin=questdlg('Station libre, continuer ?', 'Message de l'assistant de stationnement') %demande si le roomba doit continuer si contin == 'Oui'

r.turnAngle(-90) % fait pivoter le roomba de 90 degrés

parkassist(1) % redémarre la fonction

autre

r.stop % arrête le roomba

finir

autre

finir

finir

elseif cliff.rightFront < 2500 && cliff.leftFront < 2500 % lit les deux capteurs de falaise

r.moveDistance (-0.1) % déplace le roomba vers l'arrière d'une distance définie

r.turnAngle (-90) % fait pivoter le roomba de 90 degrés

elseif cliff.rightFront < 2500 % lit le capteur de falaise droit

r.turnAngle(-5) % tourne légèrement le roomba dans la direction opposée au capteur d'escarpement

elseif cliff.leftFront < 2500 % lit le capteur de falaise gauche

r.turnAngle(5) % tourne légèrement le roomba dans la direction opposée au capteur d'escarpement

autre

finir

finir

finir

Étape 4: Tester le code et le robot

Tester le code et le robot
Tester le code et le robot
Tester le code et le robot
Tester le code et le robot
Tester le code et le robot
Tester le code et le robot

Une fois le code développé, l'étape suivante consistait à tester le code et le robot. Puisqu'il y a beaucoup de réglages différents qui peuvent être faits dans le code, tels que l'angle de rotation du robot, la vitesse à laquelle il se déplace et les seuils pour chaque couleur, la meilleure façon de déterminer ces valeurs pour votre robot est de tester eux et changez au fur et à mesure. Pour chaque journée de travail que nous avions, nous modifiions constamment ces valeurs car certaines d'entre elles dépendent de l'environnement dans lequel votre robot fonctionne. La meilleure façon que nous avons trouvée était de placer le roomba sur le chemin que vous voulez qu'il suive, et d'avoir une barrière suffisamment haute pour que la caméra ne puisse pas détecter les couleurs que vous ne souhaitez pas. L'étape suivante consiste à le laisser fonctionner et à lui montrer les couleurs que vous voulez, quand vous voulez qu'il termine cette tâche. Au fur et à mesure, si vous voyez un problème, la meilleure chose à faire est d'enfoncer le pare-chocs avant, de l'arrêter, puis de modifier le paramètre avec lequel vous avez eu des problèmes.

Étape 5: Reconnaissance d'erreur

Avec chaque projet terminé, il y a toujours des sources d'erreur. Pour nous, nous avons rencontré une erreur avec le simple fait que le robot n'est pas précis avec l'angle auquel il tourne, donc si vous lui dites de tourner à 45 degrés, ce ne sera pas exact. Une autre source d'erreur pour nous était que parfois le robot fonctionne mal et que vous l'avez réinitialisé avant qu'il ne fonctionne à nouveau. La principale dernière source d'erreur pour nous était que le même code n'aura pas le même effet sur différents robots, vous devrez donc peut-être être patient et ajuster en conséquence.

Étape 6: Conclusion

Maintenant, vous avez tous les outils pour jouer avec votre roomba, ce qui signifie que vous pouvez manipuler le code comme bon vous semble pour atteindre les objectifs que vous souhaitez. Cela devrait être la meilleure partie de votre journée, alors amusez-vous et conduisez prudemment !

Conseillé: