Table des matières:

Roomba Scout Explorer : 8 étapes
Roomba Scout Explorer : 8 étapes

Vidéo: Roomba Scout Explorer : 8 étapes

Vidéo: Roomba Scout Explorer : 8 étapes
Vidéo: "Inspecting" a Soviet Satellite // For All Kerbalkind 2024, Juillet
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

En tant que l'un des projets américains les plus attendus et les plus recherchés, les projets de rover sur Mars sont devenus des réalisations humaines dans la production toujours plus avancée de systèmes autonomes de haute technologie dans le seul but d'étudier et d'interpréter les masses continentales et les surfaces de la planète rouge derrière La terre. Dans le cadre d'un projet plus personnel en hommage aux missions martiennes, notre objectif était de créer un robot roomba capable d'agir de manière autonome sur un certain laps de temps et de réagir en fonction de certains critères dans son voisinage.

En ce qui concerne l'unicité, nous nous sommes concentrés sur la création d'un diagramme qui montrait chaque chemin emprunté par le robot depuis ses origines. De plus, le robot pourra compter le nombre d'objets dans son voisinage dans un style panoramique.

Étape 1: Équipement

-Roomba avec caméra amovible (avec un nom spécifique connu)

-Serveur connecté

-Windows 10/Mac avec connectivité Internet

-Plateforme lumineuse

-Sol foncé

-Tous les objets errants de conception monochromatique

Étape 2: configuration de MATLAB

Configuration de MATLAB
Configuration de MATLAB

Afin de créer des tâches et des fonctions pour votre roomba, vous devez disposer des codes et des kits d'outils spécifiques contenant les commandes du roomba.

Avec MATLAB 2016a et les versions ultérieures téléchargées, créez un dossier pour contenir ces fichiers de robot et insérez le fichier MATLAB suivant ci-dessous dans le dossier et exécutez-le pour installer les fichiers roomba nécessaires restants.

Après cela, faites un clic droit dans la fenêtre Dossier actuel, passez votre souris sur "Ajouter un chemin" et cliquez sur "Dossier actuel". Maintenant, un chemin doit être mis en place de telle sorte que chacun de ces fichiers soit utilisé pour activer le roomba.

Maintenant, utilisez la commande ci-dessous dans la fenêtre de commande pour configurer le roomba:

r=roomba(#).

Le symbole # est le 'numéro' du roomba spécifié; cependant, si vous voulez simplement un simulateur du roomba, tapez simplement la commande suivante:

r=roomba(0).

La simulation serait recommandée pour tester les modèles de mouvement.

Si vous êtes curieux de savoir quelles commandes le roomba peut suivre, tapez ce qui suit dans la fenêtre de commande:

doc roomba.

Pour plus de détails, visitez le site Web suivant:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Étape 3: Fonction: Mouvement

Fonction: Mouvement
Fonction: Mouvement
Fonction: Mouvement
Fonction: Mouvement

En ce qui concerne le mouvement, le roomba doit se déplacer automatiquement pendant une période de temps définie dans les entrées. Le but du mouvement du robot est de réagir correctement lorsque ses capteurs (pare-chocs, pare-chocs légers et capteurs de falaise) changent en présence d'obstacles divers. Cette partie servirait de base à toutes les commandes du roomba, car davantage de fonctionnalités au code seraient ajoutées ultérieurement. Quelques précisions étaient nécessaires:

-Pour réduire les dommages, le robot doit réduire la vitesse à une vitesse inférieure.

-À l'approche d'une falaise ou d'un mur, le robot se déplacera en sens inverse et modifiera son angle en fonction du point d'impact

-Après un certain temps de conduite, le roomba finira par s'arrêter et prendre des images de la zone environnante

A noter que les valeurs utilisées étaient en relation avec le simulateur; des valeurs telles que les angles de virage, les vitesses de virage et les préréglages du capteur du robot doivent être modifiées lors de l'utilisation du robot réel pour assurer la stabilité et la prise en compte des erreurs d'équipement.

Étape 4: Fonction: Traitement d'image

Fonction: Traitement d'image
Fonction: Traitement d'image

Selon la demande, nous avons été chargés de modifier les données d'une image (ou de plusieurs images) reçue par la caméra du robot, à laquelle nous avons décidé de faire en sorte que le roomba "compte" le nombre d'objets qu'il voit dans l'image.

Nous avons suivi la technique consistant à demander à MATLAB de tracer des limites autour d'objets noircis qui contrastent avec un fond blanc. Cependant, cette fonction est susceptible d'avoir des difficultés dans une zone ouverte en raison des différentes formes et couleurs perçues par la caméra, ce qui entraîne des comptes inhabituellement élevés.

Notez que cette fonction ne peut pas fonctionner dans le simulateur puisqu'une caméra n'est pas fournie; en cas de tentative, une erreur se produira en déclarant qu'une seule matrice (:,:, 3) peut être utilisée.

Étape 5: Fonction: Mappage

Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie
Fonction: Cartographie

Une fonctionnalité supplémentaire que nous voulions que le robot ait était de cartographier ses emplacements car il interagit directement avec l'environnement. Ainsi, le code ci-dessous cherche à ouvrir une carte et à mettre en place un système de coordonnées qui détaille chaque emplacement dans lequel les capteurs de pare-chocs du robot sont enfoncés. Cela s'est avéré être la partie la plus longue des trois parties à tester individuellement, mais elle s'est avérée beaucoup plus simple lorsqu'elle est appliquée au script final.

Afin d'ajouter une limite à la durée d'exécution de la fonction, la limite n<20 sur la boucle while a été utilisée à des fins de test.

Gardez à l'esprit qu'en raison de la complexité du code, davantage d'erreurs se produisent lorsque le segment de code s'exécute pendant longtemps; d'après les tests précédents, dix bosses semblent être le nombre de points avant que des erreurs significatives ne se produisent.

Étape 6: juxtaposition

Juxtaposition
Juxtaposition
Juxtaposition
Juxtaposition
Juxtaposition
Juxtaposition
Juxtaposition
Juxtaposition

Comme tout cela sera placé dans un seul fichier, nous avons créé une fonction en utilisant chacune des deux étapes précédentes comme sous-fonctions. Un projet final a été fait avec la modification suivante de la fonction redux appelée "recon". Pour éviter toute confusion pour MATLAB, les scripts "counter" et "rombplot3" ont été renommés en fonctions intégrées "CountR" et "plotr", respectivement.

Plusieurs modifications ont dû être apportées dans la version finale par rapport aux scripts précédents:

-L'origine sera toujours marquée d'un cercle rouge

-Chaque fois que le roomba s'arrête de ses pare-chocs, l'emplacement est marqué d'un cercle noir

-Chaque fois que le roomba s'arrête de ses capteurs de falaise, l'emplacement est marqué d'un cercle bleu

-Chaque fois que le roomba arrête d'explorer la zone, l'emplacement est marqué d'un cercle vert

-Les images sont modifiées pour que la partie supérieure soit supprimée en raison de l'horodatage susceptible d'interférer avec les résultats

-Les frontières ne seront pas comptées comme un objet en raison des nombres assez élevés acquis

-Plusieurs variables ont été modifiées, donc pour éviter toute confusion, utilisez les versions ci-dessus pour référence.

Étape 7: Tester

Essai
Essai

Les tests pour chaque composant individuel se sont avérés parfois plutôt mitigés, c'est pourquoi des modifications de certaines valeurs prédéfinies ont été nécessaires. Le fond thématique sur lequel nous voulions tester les capacités du robot dans une zone fermée consistait simplement en un tableau blanc posé sur un sol beaucoup plus sombre. Vous pouvez disperser les objets autour de la zone; les faire agir comme des objets à heurter ou des objets éloignés de la zone de déplacement du robot.

Après avoir réglé son temps et sa vitesse de base régulés, le roomba a démontré un comportement de mouvement adéquat, s'arrêtant et s'éloignant de chaque "falaise" ou objet dans lequel il s'enfonce ainsi que ralentissant lorsqu'il détectait quelque chose à proximité. Une fois la distance de déplacement souhaitée de trois mètres atteinte, le robot s'arrêterait et évaluerait la zone, prenant des images de chaque région à 45 degrés, et continuerait si le temps le permet. Cependant, ses tours semblaient plus grands que demandés, ce qui signifie que les données de coordonnées seraient obscurcies.

Chaque fois qu'il s'arrête, un nouveau point a été placé dans la région approximative de sa position sur le système de coordonnées; cependant, il est à noter que la direction initiale dans laquelle le roomba commence joue un rôle central dans la conception de la carte. Si une fonction de boussole pouvait être implémentée, elle aurait été utilisée comme une partie cruciale de la conception de la carte.

Le temps réel nécessaire à la fonction pour s'exécuter complètement dépasse toujours le temps demandé, ce qui est logique étant donné qu'il ne peut pas s'arrêter au milieu de l'une de ses récupérations. Malheureusement, cette version du comptage d'images a ses problèmes, en particulier dans les zones qui sont principalement monochromes ou dont la luminosité varie; parce qu'il essaie de faire la distinction entre deux nuances, il a tendance à percevoir les objets qui ne sont pas désirés, c'est pourquoi il compte toujours jusqu'à des nombres incroyablement élevés.

Étape 8: Conclusion

Conclusion
Conclusion

Bien que cette tâche soit un travail très aventureux et créatif qui a apporté un soulagement, j'ai pu, d'après mes observations personnelles, voir un grand nombre d'erreurs qui pourraient être problématiques, à la fois dans le code et le comportement du robot.

La limitation de l'utilisation de la spécification du temps dans la boucle while fait que le temps total est plus long que souhaité; le processus de la technique du panorama et du traitement de l'image pouvait en effet prendre plus de temps s'il était exécuté par un ordinateur lent ou n'était pas utilisé au préalable. De plus, le roomba qui a été utilisé dans notre présentation a agi avec un grand nombre d'erreurs, notamment en mouvement, par rapport au simulateur. Le robot utilisé avait malheureusement tendance à se pencher légèrement vers la gauche car il roulait tout droit et effectuait des virages plus larges que souhaité. Pour cette raison et bien d'autres, il est fortement recommandé qu'afin de compenser ces erreurs, des modifications doivent être apportées à ses angles de virage.

Néanmoins, il s'agit d'un projet long mais intellectuellement stimulant qui a constitué une expérience d'apprentissage intéressante pour appliquer des codes et des commandes afin d'affecter directement le comportement d'un robot réel.

Conseillé: