Table des matières:
- Étape 1: Matériaux
- Étape 2: Connexion
- Étape 3: Création logique d'un code MATLAB pour utiliser des capteurs
- Étape 4: Tester le code et le robot
- Étape 5: Reconnaissance d'erreur
- Étape 6: Conclusion
Vidéo: Roomba Parking Pal : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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
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
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
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é:
Parking intelligent basé sur l'IOT : 7 étapes
Parking intelligent basé sur l'IOT : par Tanmay Pathak et Utkarsh Mishra. Étudiants @ Institut international des technologies de l'information, Hyderabad (IIITH) RÉSUMÉNous avons mis en œuvre avec succès un système de stationnement intelligent basé sur l'IOT. Avec l'aide de nœuds individuels (capteurs de proximité) à tout moment
Parking intelligent avec Raspberry Pi : 5 étapes
Parking intelligent à l'aide de Raspberry Pi : dans ces instructions, nous allons créer un système de stationnement entièrement automatique connecté à une interface Web. Vous pourrez voir quel endroit est pris, décider qui entre et qui sort et il est équipé d'un système d'éclairage automatique
Parking intelligent Arduino : 4 étapes
Arduino Smart Parking : Bill Blankenship, Willam Bailey, Hannah HargroveAvec l'utilisation d'une carte Arduino, notre groupe a réussi à créer un système qui permettrait aux capteurs de lumière de détecter quand une voiture occupait un espace ou si l'espace est vacant. Après soixante-huit lignes, nous e
Pod-Pal MIDI : 4 étapes
Pod-Pal MIDI : *** MISE À JOUR 4/22/'21****** J'ai ajouté un schéma complet montrant tout le câblage pour aider à la construction. *** Je n'entrerai pas dans une quantité ridicule de profondeur ici sur la partie de construction, mon intention était de montrer un autre exemple de construction d'un MI basé sur Arduino
Système de parking rotatif : 18 étapes
Système de parking rotatif : il est simple à utiliser avec le parking du conducteur et en laissant le véhicule dans le système au niveau du sol. Une fois que le conducteur quitte la zone de sécurité intégrée, le véhicule est automatiquement garé par le système tournant pour soulever la voiture garée loin de