Table des matières:

Roomba avec MATLAB : 4 étapes (avec photos)
Roomba avec MATLAB : 4 étapes (avec photos)

Vidéo: Roomba avec MATLAB : 4 étapes (avec photos)

Vidéo: Roomba avec MATLAB : 4 étapes (avec photos)
Vidéo: How to attach a new Booster and use Ink Cartridge for Newt in The Baby in Yellow Black Cat Update 2024, Novembre
Anonim
Roomba avec MATLAB
Roomba avec MATLAB

Ce projet utilise MATLAB et un robot programmable iRobot Create2. En mettant notre connaissance de MATLAB à l'épreuve, nous sommes en mesure de programmer le Create2 pour interpréter les images et détecter les signaux. La fonctionnalité du robot dépend principalement de l'application mobile MATLAB et d'un module de caméra Raspberry Pi.

Étape 1: Pièces et matériaux

Pièces et matériaux
Pièces et matériaux
Pièces et matériaux
Pièces et matériaux
Pièces et matériaux
Pièces et matériaux
Pièces et matériaux
Pièces et matériaux

1. iRobot Créer, Version 2

- C'est un robot programmable qui ressemble à un Roomba. Sachez que ce produit d'iRobot n'est pas un aspirateur. Il est destiné à une programmation personnalisée par l'utilisateur.

2. MATLAB 2017a

- La plupart des anciennes versions seront compatibles avec le code que nous avons utilisé ci-dessous. MATLAB identifiera une commande qui n'est pas compatible avec la version que vous possédez et vous proposera la commande la mieux adaptée.

3. Raspberry Pi 3 modèle B, version 1.2

- Vérifiez quel Raspberry Pi est compatible avec votre iRobot. Voir ce lien pour plus d'aide: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Cette instructable suppose que vous travaillez avec un Raspberry Pi préprogrammé. Veuillez noter que vous devrez travailler avec un Pi préprogrammé pour que les étapes suivantes fonctionnent. L'utilisation d'un Pi préprogrammé vous permettra d'effectuer tout votre codage dans MATLAB seul.

4. Module caméra V2 (pour Raspberry Pi)

- Vous pourriez être surpris; malgré sa taille, le module caméra Raspberry Pi est de très bonne qualité. C'est l'option la moins chère et la plus compatible pour ce projet.

En option: support imprimé en 3D. Ceci est utilisé pour stabiliser la caméra. Cela n'affecte pas la fonctionnalité du robot, mais cela aidera à faciliter votre codage si vous souhaitez utiliser des données d'imagerie pour la reconnaissance de couleurs et/ou d'objets.

Étape 2: Configuration

Configuration
Configuration
Configuration
Configuration

1. Connexion du Raspberry Pi et du module caméra (Matériel)

- Pour alimenter le Raspberry Pi, vous devrez connecter un micro USB mâle au port d'alimentation femelle du microcontrôleur. Facultatif: un régulateur de tension peut être utilisé pour garantir que la tension ne dépasse pas 5 V. Après avoir alimenté le Raspberry Pi, vous pouvez le connecter à votre robot en exécutant l'extrémité mâle USB a de la carte mère au port USB A du microcontrôleur.

- Après avoir connecté le Pi au Roomba, la caméra est prête à être installée. Le module de caméra sera beaucoup plus petit que prévu. Notez que l'objectif est monté sur un capteur et qu'un ruban blanc s'étend de l'appareil photo. NE PAS retirer ou déchirer le ruban ! C'est le câble dont vous avez besoin pour le connecter au Raspberry Pi. Tout d'abord, tenez l'extrémité du ruban et trouvez les connecteurs argentés et le câble bleu. Ce sont des côtés opposés. Ensuite, trouvez l'emplacement entre les ports Ethernet et HDMI sur votre Raspberry Pi. Remarquez qu'il y a un petit cadenas blanc qui le recouvre. Soulevez lentement le verrou, mais ne le retirez pas de la fente, car il se cassera et sera endommagé de façon permanente. Une fois que vous avez levé le verrou, saisissez le ruban et faites face aux connecteurs argentés vers le port HDMI. Le côté bleu fera face au port Ethernet. Faites glisser lentement le ruban dans la fente alors qu'il est encore déverrouillé. Vous n'avez pas à le forcer dans la fente. Après l'insertion, repoussez le verrou vers le bas. Si votre appareil photo est correctement fixé, vous devriez pouvoir tirer (doucement) sur le ruban et sentir la tension. Le ruban ne doit pas être lâche. Après avoir connecté votre appareil photo au Pi, vous remarquerez peut-être à quel point il est lâche. C'est pourquoi nous avons utilisé un support imprimé en 3D pour le stabiliser. C'est à vous de déterminer les matériaux que vous souhaitez utiliser pour maintenir votre appareil photo immobile pour une imagerie de haute qualité.

2. Installation des fichiers appropriés et connexion de Roomba à votre ordinateur Une fois que tout votre matériel est configuré, vous pouvez maintenant passer à l'installation de MATLAB avec les fichiers m associés qui vous permettent de communiquer avec le robot. Pour ce faire, ouvrez MATLAB et créez un nouveau dossier pour conserver tous les fichiers associés ensemble. Utilisez ce script pour installer/mettre à jour les fichiers requis:

- Tous les fichiers devraient maintenant apparaître dans votre dossier créé. Cliquez avec le bouton droit dans la fenêtre Dossier actuel et sélectionnez « Ajouter au chemin » pour ajouter ce chemin à la liste des répertoires dans lesquels MATLAB recherche les fichiers. Assurez-vous que tous vos fichiers sont dans le bon chemin.

3. Une fois les fichiers installés, vous pouvez maintenant commencer à vous connecter à votre robot. Commencez par allumer votre robot, puis réinitialisez-le directement après le démarrage (n'oubliez pas de réinitialiser votre robot à chaque fois avant et après utilisation). Deuxièmement, connectez votre robot et votre ordinateur portable au même réseau wifi. Après cela, nous parlerons au Raspberry Pi préprogrammé via MATLAB en appelant le Roomba en utilisant son prénom et la fonction roomba. Par exemple, je me connecterais au robot 28 en utilisant la ligne suivante: R = roomba(28).

- Remarquez comment j'ai affecté l'objet à une variable R. Je peux maintenant accéder aux fonctions Roomba associées depuis le fichier d'installation en traitant la variable R comme une structure.

- R.turnAngle(90) Si tout s'est bien passé, une tonalité musicale devrait jouer, confirmant la connexion.

Étape 3: Logique MATLAB

Le document PDF au bas de cette étape est un organigramme logique détaillé de notre processus de codage dans MATLAB. Nous avons activé les capteurs de falaise, de lumière et de bosse lumineuse afin de permettre au robot de communiquer avec nous lorsqu'il détecte un objet à proximité immédiate. Par exemple, lorsque le robot avance, ses capteurs de lumière recherchent les objets sur son chemin en fonction du vecteur auquel il se déplace. Nous avons choisi un seuil de distance pour le robot afin que lorsqu'il s'approche d'un objet, il s'inverse au lieu d'entrer en collision avec lui. Notre robot est également configuré avec Twitter, que nous avons spécifié dans notre processus de codage (cela sera montré ci-dessous).

Pour améliorer l'expérience, nous avons utilisé l'application MATLAB sur nos appareils mobiles afin de pouvoir contrôler les mouvements du robot simplement en inclinant nos téléphones. Il s'agit d'une activité facultative, car vous pouvez certainement faire bouger le robot en utilisant à la place la commande moveDistance dans le segment de code MATLAB. Gardez à l'esprit qu'il est préférable d'utiliser les commandes MATLAB pour contrôler votre robot si votre objectif est d'être précis. Si vous souhaitez viser votre robot pour que la caméra prenne une photo à un endroit précis, il peut être préférable de coder les mouvements du robot dans MATLAB. Tout en vous divertissant, l'utilisation de l'application MATLAB pour contrôler votre robot n'est pas souhaitable pour la précision.

Le code commande au Roomba d'effectuer une configuration de base puis de continuer à travers une boucle continue. Initialement, l'ordinateur portable établira un lien avec le Roomba à l'aide de la commande Roomba(). Il configure également la connexion Twitter à l'aide de la commande webwrite() dans MATLAB. La boucle contient cinq flux logiques principaux en fonction de l'environnement entourant le Roomba. Tout d'abord, le Roomba recherche les obstacles et s'ajuste vers l'arrière s'il constate qu'il est entravé. Intégré dans cette boucle se trouve le deuxième chemin qui alerte les utilisateurs si le Roomba est emporté. Un utilitaire important dans la rude zone de guerre martienne. Une fois que le Roomba a déterminé que sa position est sûre, il se tourne vers l'appareil mobile pour déterminer son prochain mouvement. Si l'appareil mobile est incliné vers l'avant, il calculera une vitesse de base en fonction de la gravité de la mesure de roulis, puis ajustera les vitesses des roues individuelles pour tourner en fonction du degré de tangage. Le téléphone peut également déplacer le Roomba à l'envers. Un état neutre de l'appareil mobile contrôle les deux derniers chemins. Un Roomba au repos recherchera un drapeau Alien et alertera l'utilisateur en conséquence.

Ci-dessous est notre code (complété dans MATLAB 2017a)

%entrées: données d'orientation d'un appareil connecté en wifi, appareil photo

%informations, données du capteur

% sorties: le mouvement est contrôlé par l'appareil connecté au wifi et le mouvement

% est vérifié en matière de sécurité en lisant les données du capteur. Si la caméra détecte

% un drapeau étranger puis le roomba répond en tweetant le drapeau ennemi

% a été repéré.

%objectif: notre appareil n'a d'autre objectif que de protéger ceux qui

% l'a créé, il sert son créateur et

% exactement ce qu'on lui dit.

%Usage: essentiellement, le programme s'exécutera tout seul.

tout effacer, tout fermer, clc

%Initialisation des objets et des variables

r=roomba(28);

m=mobiledev;

%use response = webwrite (nom d'hôte, données)

nom d'hôte = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API='SGZCTNQXCWAHRCT5';

tweet='RoboCop est opérationnel… En attente de commande';

data = strcat('api_key=', API, '&status=', tweet);

réponse=webwrite(nom d'hôte, données);

% boucle en cours d'exécution constante

tandis que 1==1

% Structures contenant des données pertinentes

o=m.orientation; %orientation de l'appareil mobile

light=r.getLightBumpers(); % Valeurs de pare-chocs légers

a = r.getCliffSensors(); Valeurs du capteur %CLiff

bump = r.getBumpers(); %Capteurs de pare-chocs

%vérifier les pare-chocs

si bump.right==1 || bump.left==1 ||bump.front==1

r.moveDistance(-.2,.2);

%vérifier les capteurs de lumière

elseif light.left>60 || light.leftFront>60 || light.leftCenter>60 || lumière.droite>60 || light.rightAvant>60 || light.rightCenter>60

r.moveDistance(-.2,.2);

%check Capteurs de falaise

%Signal et notification antivol

elseif a.left<300 && a.right<300 && a.leftFront<300 && a.rightFront<300

r.stop();

r.bip();

tweet='RoboCop a été levé !'

data = strcat('api_key=', API, '&status=', tweet);

réponse=webwrite(nom d'hôte, données);

%Fonctionnement normal d'évitement des falaises

elseif a.gauche<300 || a.droit<300 || a.leftFront<300 || a.droitAvant<300

r.moveDistance(-.2,.2);

% Roomba a réussi les vérifications et fonctionnera maintenant avec un fonctionnement normal.

% Initialement le rouleau de l'appareil est mesuré et devient une base

% vitesse qui est ensuite utilisé pour calculer la vitesse de la roue

%Mouvement vers l'avant

elseif o(3)>=0 && o(3)<=60

baseVel=(-0,5/60)*(o(3)-60);

si o(2)>=-70 && o(2)<0

r.setDriveVelocity(baseVel+(.3/50)*abs(o(2)), baseVel-(.3/50)*abs(o(2)));

sinon o(2)=0

r.setDriveVelocity(baseVel-(.3/50)*abs(o(2)), baseVel+(.3/50)*abs(o(2)));

sinon r.stop

finir

%Mouvement vers l'arrière

sinon o(3)>100 && o(3)<150

r.setDriveVelocity(-.2, -.2)

r.bip();

r.bip();

%resting roomba recherchera le drapeau extraterrestre marqué comme fluorescent

%vert morceau de papier

autre

r.stop

img=r.getImage(); %prendre l'image

seuil=grayseuil(img(200:383,:, 2))+.1; % calc niveau vert

si seuil>.42

tweet='Ennemi repéré !!'

data = strcat('api_key=', API, '&status=', tweet);

réponse=webwrite(nom d'hôte, données);

autre

r.stop

finir

finir

finir

Étape 4: Conclusion

N'oubliez pas que vous pouvez utiliser le script que nous avons écrit ci-dessus, mais vous pouvez toujours le modifier pour l'adapter à vos besoins. Il n'a pas besoin d'être contrôlé par votre téléphone ! (Cependant, cela le rend plus amusant.) Choisissez la méthode que vous préférez utiliser pour contrôler votre robot. Conduisez avec votre robot et profitez-en!

Conseillé: