Table des matières:
- Étape 1: Pièces et matériaux
- Étape 2: Fichier de base de données Roomba
- Étape 3: Connexion à Roomba
- Étape 4: le code
- Étape 5: Conclusion
Vidéo: Roomba contrôlé par MATLAB : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
L'objectif de ce projet est d'utiliser MATLAB ainsi qu'un robot programmable iRobot modifié. Notre groupe a combiné nos compétences en codage afin de créer un script MATLAB qui utilise de nombreuses fonctions de l'iRobot, notamment les capteurs de falaise, les capteurs de pare-chocs, les capteurs de lumière et la caméra. Nous avons utilisé ces lectures de capteurs et de caméras comme entrées, nous permettant de créer certaines sorties que nous souhaitons à l'aide de fonctions et de boucles de code MATLAB. Nous utilisons également l'appareil mobile et le gyroscope MATLAB comme moyen de se connecter à l'iRobot et de le contrôler.
Étape 1: Pièces et matériaux
MATLAB 2018a
-La version 2018 de MATLAB est la version la plus préférée, principalement parce qu'elle fonctionne le mieux avec le code qui se connecte à l'appareil mobile. Cependant, la plupart de notre code peut être interprété dans la majorité des versions de MATLAB.
iRobot Créer un appareil
-Cet appareil est un appareil spécialement conçu dont le seul but est la programmation et le codage. (Ce n'est pas un vide réel)
Raspberry Pi (avec caméra)
- Il s'agit d'une carte informatique bon marché qui fonctionne comme le cerveau de l'iRobot. Il est peut-être petit, mais il est capable de beaucoup de choses. La caméra est un complément supplémentaire. Il utilise également le raspberry pi pour obtenir toutes ses fonctions et commandes. La caméra illustrée ci-dessus est montée sur un support imprimé en 3D, créé par les départements Engineering Fundamentals de l'Université du Tennessee
Étape 2: Fichier de base de données Roomba
Il existe un fichier principal dont vous aurez besoin pour utiliser les fonctions et commandes appropriées pour votre roomba. Ce fichier est l'endroit où vous avez écrit le code qui extrait les fonctions afin de rendre le fonctionnement de votre roomba plus facile à gérer.
Vous pouvez télécharger le fichier sur ce lien ou le fichier téléchargeable ci-dessous
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
Étape 3: Connexion à Roomba
Tout d'abord, vous devez vous assurer que votre robot est connecté à votre carte raspberry pi en utilisant une prise micro USB. Ensuite, vous devez connecter correctement votre ordinateur et votre robot au même WiFi. Une fois cela fait, vous pouvez allumer votre robot et vous y connecter en utilisant la commande donnée dans le fichier de base de données du robot. (Réinitialisez toujours votre robot avant et après l'avoir utilisé). Par exemple, nous utilisons la commande "r.roomba(19)" pour nous connecter à notre robot, en attribuant la variable r à notre appareil. Cela renvoie au fichier de base de données, qui configure notre variable comme une structure que nous pouvons référencer à tout moment.
Étape 4: le code
Nous avons joint le code complet ci-dessous, mais voici un bref aperçu qui met en évidence les éléments importants de notre script. Nous avons utilisé tous les capteurs, ainsi que la caméra pour maximiser pleinement le potentiel de notre robot. Nous avons également inclus un code qui nous a permis de connecter un appareil mobile à notre robot et d'utiliser son gryoscope pour le contrôler manuellement.
Nous avons commencé avec la simple commande "r.setDriveVelocity(.06)" qui définit la vitesse d'avancement du robot à 0,06 m/s. C'est juste pour faire bouger le robot au préalable
Ensuite, notre script principal est démarré avec une boucle while qui récupère les données du robot donné en créant des structures que nous pouvons référencer et utiliser dans les instructions conditionnelles ci-dessous, nous permettant ainsi de dire au robot d'exécuter une certaine commande basée sur les données de structure le robot lit avec ses capteurs. Nous l'avons configuré pour que le robot lise ses capteurs de falaise et suive un chemin noir
while true % while loop va jusqu'à ce que quelque chose de "faux" se produise (dans ce cas, cela continue indéfiniment) data = r.getCliffSensors; data2 = r.getBumpers;% récupère les données en continu sur les valeurs du capteur de falaise et les affecte à une variable % img = r.getImage; % Prend une photo de la caméra montée % image(img); % Affiche l'image qui a été prise % red_mean = Mean(mean(img(:,:, 1)));% Prend la valeur moyenne pour la couleur verte si data.rightFront < 2000 r.turnAngle(-2); % fait tourner le Roomba d'environ 0,2 degré CW une fois que la valeur des capteurs d'escarpement avant droit tombe en dessous de 2000 r.setDriveVelocity (0,05); elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % indique au Roomba de continuer à avancer à environ 0,2 m/s si les deux valeurs des capteurs avant droit et avant gauche tombent en dessous de 2000 % r.turnAngle(0); % indique au Roomba de ne pas tourner si les conditions mentionnées ci-dessus sont vraies
elseif data2.right == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r.turnAngle(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05);
Après cette boucle while, nous entrons dans une autre boucle while qui déclenche les données obtenues via la caméra. Et nous utilisons une instruction if à l'intérieur de cette boucle while qui reconnaît une image à l'aide d'un programme spécifique (alexnet), et une fois qu'elle identifie l'image, elle déclenche immédiatement la télécommande de l'appareil mobile
anet = alexnet; % Attribue l'apprentissage en profondeur alexnet à une variable while true % Infinite while loop img = r.getImage; img = imresize(img, [227, 227]); label = classifier(anet, img); if label == "serviette en papier" || label == "réfrigérateur" label = "eau"; image de fin (img); titre(car(étiquette)); tirage au sort;
La boucle while qui nous permet de contrôler l'appareil avec notre téléphone récupère ces données du gyroscope du téléphone et nous les connectons à une matrice qui retransmet en continu les données dans MATLAB sur l'ordinateur. Nous utilisons une instruction if qui lit les données de la matrice et donne une sortie qui déplace l'appareil en fonction de certaines valeurs du gyroscope du téléphone. Il est important de savoir que nous avons utilisé les capteurs d'orientation de l'appareil mobile. La matrice un par trois mentionnée ci-dessus est classée par chaque élément des capteurs d'orientation du téléphone, qui est l'azimut, le tangage et le côté. Les instructions if ont créé des conditions indiquant que lorsque le côté dépasse les valeurs 50 ou tombe en dessous de -50, le robot se déplace d'une certaine distance vers l'avant (positif 50) ou vers l'arrière (négatif 50). Et il en va de même pour la valeur de pitch. Si la valeur du pas dépasse la valeur de 25 ou tombe en dessous de -25, le robot tourne à un angle de 1 degré (positif 25) ou de moins 1 degré (négatif 25)
while true pause(.1) % Pause de.5 secondes avant que chaque valeur ne soit prise Controller=iphone. Orientation; % Affecte la matrice des valeurs de l'orientation de l'iPhone à une variable Azimutal=Controller(1); % Affecte la première valeur de la matrice à une variable Pitch=Controller(2); % Affecte la deuxième valeur de la matrice à une variable (inclinaison vers l'avant et vers l'arrière lorsque l'iPhone est tenu latéralement) Side=Controller(3); % Attribue la troisième valeur de la matrice à une variable (inclinaison à gauche et à droite lorsque l'iPhone est tenu latéralement) % Provoque une sortie basée sur l'orientation du téléphone si Côté > 130 || Côté 25 r.moveDistance (-.1) % Déplace le Roomba vers l'arrière d'environ 0,1 mètre si l'iPhone est incliné vers l'arrière d'au moins 25 degrés sinon Côté 25 r.turnAngle (-1) % Tourne le Roomba d'environ 1 degré dans le sens antihoraire si l'iPhone est incliné vers la gauche d'au moins 25 degrés sinon si Pitch < -25 r.turnAngle(1) % Tourne le Roomba d'environ 1 degré CW si l'iPhone est incliné d'au moins 25 degrés fin
Ce ne sont que les points saillants des principaux éléments de notre code, que nous avons inclus si vous devez rapidement copier et coller une section à votre avantage. Cependant, notre code complet est joint ci-dessous si nécessaire
Étape 5: Conclusion
Ce code que nous avons écrit est spécifiquement conçu pour notre robot ainsi que notre vision globale du projet. Notre objectif était d'utiliser toutes nos compétences en codage MATLAB afin de créer un script de conception efficace qui utilise la plupart des fonctionnalités du robot. L'utilisation du contrôleur téléphonique n'est pas aussi difficile que vous ne le pensez, et nous espérons que notre code pourra vous aider à mieux comprendre le concept derrière le codage d'un iRobot.
Conseillé:
Microcontrôleur contrôlé par MATLAB (Arduino MKR1000): 4 étapes
Microcontrôleur contrôlé par MATLAB (Arduino MKR1000) : l'objectif de notre projet était d'utiliser MATLAB ainsi que l'Arduino MKR1000 au mieux de nos capacités. Notre objectif était de créer un script permettant à certaines fonctionnalités de l'arduino d'effectuer une certaine sortie en fonction d'une entrée spécifique. Nous en avons utilisé plusieurs
Robot Roomba contrôlé par navigateur avec le Raspberry Pi modèle 3 A+ : 6 étapes (avec photos)
Robot Roomba contrôlé par navigateur avec le Raspberry Pi Model 3 A+ : Aperçu Il existe de nombreux hacks Roomba qui permettent le contrôle via l'interface série. Je n'ai pas
Projet Roomba MATLAB : 5 étapes
Projet Roomba MATLAB : Le plan actuel de la NASA pour le rover de Mars est qu'il soit un collecteur de données et qu'il se déplace autour de Mars, collectant des échantillons de sol à ramener sur Terre afin que les scientifiques puissent voir s'il y avait des formes de vie antérieures sur la planète. Supplémentaire
Fauteuil roulant contrôlé par vision par ordinateur avec mannequin : 6 étapes (avec photos)
Fauteuil roulant contrôlé par vision par ordinateur avec mannequin : projet de AJ Sapala, Fanyun Peng, Kuldeep Gohel, Ray LC.Instructable par AJ Sapala, Fanyun Peng, Ray LC.Nous avons créé un fauteuil roulant avec des roues contrôlées par une carte Arduino, qui est à son tour contrôlée par un raspberry pi exécutant openCV via Processing
Roomba avec MATLAB : 4 étapes (avec photos)
Roomba With 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 la