Table des matières:

Roomba assistant l'astronaute : 4 étapes
Roomba assistant l'astronaute : 4 étapes

Vidéo: Roomba assistant l'astronaute : 4 étapes

Vidéo: Roomba assistant l'astronaute : 4 étapes
Vidéo: Pourquoi il ne faut pas PLEURER dans l'ESPACE ? 2024, Novembre
Anonim
Roomba assistant l'astronaute
Roomba assistant l'astronaute

Ce projet est réalisé en utilisant le Raspberry Pi 3 à bord de l'iRobot Create Version 2. MATLAB est utilisé pour programmer le robot pour qu'il suive des instructions spécifiques à l'aide de ses capteurs et de sa caméra. Les capteurs et les caméras sont utilisés pour effectuer des tâches spécifiques qui suivraient un astronaute et lui donneraient la possibilité de communiquer avec sa base d'origine en cas de problème.

Étape 1: Pièces nécessaires

Pièces nécessaires
Pièces nécessaires
Pièces nécessaires
Pièces nécessaires
Pièces nécessaires
Pièces nécessaires
Pièces nécessaires
Pièces nécessaires

1. iRobot Créer la version 2

L'iRobot Create est la partie la plus essentielle de ce projet car il est programmable et peut être une excellente représentation pour un rover réel qui suit les astronautes et les assiste à l'avenir

2. Framboise Pi 3

Le Raspberry Pi était le programmable utilisé pour ce projet. Le code est conçu pour le Pi et la version du Pi jointe est la 3 (modèle B). D'autres cartes programmables telles que arduino sont utilisables, cependant, arduino et la plupart des autres cartes nécessiteront un codage différent de celui décrit dans une autre étape

3. Module de caméra Raspberry Pi

La seule connexion étrangère au Raspberry Pi nécessaire pour ce projet est le module de caméra. Le module caméra fait partie intégrante de ce projet, car le roomba n'effectuera des tâches qu'en fonction de ce qu'il voit dans la caméra

4. MATLAB 2018a

La deuxième version la plus récente de MATLAB, 2018a, a été utilisée pour le codage impliqué dans cette configuration. Il est probable que de nombreuses autres versions de MATLAB fonctionneront avec cela puisque la programmation roomba existe depuis un certain temps

Étape 2: Configuration des fichiers et de la caméra

Fichiers et configuration de la caméra
Fichiers et configuration de la caméra

1. Connexions Raspberry Pi et caméra au roomba

  • Le Pi peut se connecter à l'iRobot directement avec un micro USB. C'est tout ce dont il a besoin pour être prêt à l'emploi. Cependant, il est recommandé de le placer solidement sur le roomba, comme le montrent les images tout au long de la présentation jusqu'à présent.
  • La caméra a une connexion directe au Raspberry Pi et il est fortement recommandé d'acheter ou de fabriquer quelque chose afin de maintenir la caméra directement en place. La caméra ne sert à rien si elle ne peut pas être maintenue en place pour montrer ce que voit le roomba.

2. Fichiers

  • Après avoir tout configuré et connecté, assurez-vous que le robot est réinitialisé et prêt à fonctionner en maintenant les boutons "Spot" et "Dock" enfoncés pendant 10 secondes ensemble.
  • C'est là que MATLAB est d'abord nécessaire. Les fichiers du roomba doivent d'abord être installés et tout ce qui est nécessaire pour que ces fichiers soient exécutés est le code fourni sur ce lien:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Étape 3: Tests initiaux de Roomba

De nombreux contrôles initiaux doivent être effectués sur le roomba pour s'assurer qu'il fonctionne.

1. Assurez-vous d'être connecté au même réseau Wi-Fi que le roomba. Sans cela, vous ne vous connecterez jamais via MATLAB.

2. Découvrez à quel numéro votre roomba est attribué afin de pouvoir vous connecter spécifiquement au roomba que vous avez choisi. Par exemple, si le numéro de votre roomba est 30, vous vous y connecterez en tapant roomba(30) dans la fenêtre de commande de MATLAB.

3. Le roomba peut être contrôlé via des structures dans MATLAB. Par exemple, si vous définissez votre code pour roomba(30) sur la variable 'r', le robot peut être avancé avec la commande r.moveDistance(0.2, 0.1).

4. Il existe de nombreuses commandes différentes qui peuvent être communiquées au roomba et celles-ci peuvent être vues en tapant « doc roomba » dans la fenêtre de commande.

5. Les capteurs pour les lectures de lumière, de bosse et de falaise peuvent tous être lus à l'aide des commandes vues dans « doc roomba », mais un moyen d'avoir un menu constant et soigné pour voir les données du capteur peut être vu en utilisant « r.testSensors '.

6. Après avoir testé tout cela, le logiciel de collecte d'images du robot peut être utilisé pour lire et voir les photos prises. Le code de base pour cela serait img = r.getImage et imshow(img);.

7. Les valeurs RVB de l'image peuvent être trouvées avec les codes red_mean = Mean(mean(img(:,:, 1)));

green_mean = moyenne(mean(img(:,:, 2))); et blue_mean=mean(mean(img(:,:, 3)));.

Étape 4: Exemple de code MATLAB

Exemple de code MATLAB
Exemple de code MATLAB

À ce stade, vous êtes maintenant prêt à utiliser les capteurs et le logiciel de prise d'images pour créer votre propre tour sur un prototype de Mars Rover à assistance humaine. Notre exemple est de suivre l'astronaute en suivant la couleur blanche et en se déplaçant vers elle. Le robot émettra un bip si ses capteurs lisent des valeurs élevées afin que l'astronaute puisse réinitialiser le robot s'il est coincé ou aller le ramasser et le réinitialiser s'il est coincé sur une falaise. Cependant, il ne lit ces erreurs que tant qu'il voit du blanc. Sans pouvoir voir la couleur blanche, le robot entrera en mode erreur. Il est programmé pour renvoyer deux types d'e-mails différents à la base d'origine en fonction de ce qu'il voit. S'il voit la couleur de la peau de l'astronaute, ce n'est évidemment pas bon, il alertera donc la base d'origine si l'astronaute a la peau visible avec un dysfonctionnement de la combinaison. L'autre message est préparé si l'astronaute disparaît simplement de la vue. S'il n'y a pas de blanc ou de couleur de peau pour les caméras, le robot se retournera et enverra un autre e-mail, mais différent. Les images où le roomba ne peut pas voir l'astronaute seront envoyées avec le message dans les e-mails. Le code de notre projet est présenté ci-dessous:

pour i=1:1:.1:3 img=r.getImage; image(img) red_mean = moyenne(mean(img(:,:, 1))); green_mean = moyenne(mean(img(:,:, 2))); blue_mean = moyenne(mean(img(:,:, 3))); if red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left>0 || bump.front>0 r.bip() r.bip() r.bip() r.stop elseif cliff.left<10 || cliff.leftFront<10 || cliff.rightFront<10 || cliff.right700 || light.leftFront>700 || light.leftCenter>700 || light.rightCenter>700 || light.rightAvant>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop else pour i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end if green_mean <35 && blue_mean<35 %couleur de la peau (doit être ajustée en fonction de la couleur de la peau de l'astronaute) r.beep(); r.bip(); r.bip(); mail = '[email protected]'; % envoie un e-mail indiquant que la combinaison est désactivée psswd = 'yeah'; hôte = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_sujet = 'sujet'; m_text = 'test'; setpref('Internet', 'E_mail', courrier); setpref('Internet', 'SMTP_Server', hôte); setpref('Internet', 'SMTP_Nom d'utilisateur', courrier); setpref('Internet', 'Mot de passe_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', hôte); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Aide !', 'L'uniforme des astronautes est éteint !', img); fin si red_mean 135 || green_mean 135 || blue_mean 135 pour j = 1:2 % si le blanc ne peut pas être trouvé par le robot r.turnAngle(360) mail = '[email protected]'; psswd = 'oui'; hôte = 'smtp.gmail.com'; port = '465'; emailto = '[email protected]'; m_sujet = 'sujet'; m_text = 'test'; setpref('Internet', 'E_mail', courrier); setpref('Internet', 'SMTP_Server', hôte); setpref('Internet', 'SMTP_Nom d'utilisateur', courrier); setpref('Internet', 'Mot de passe_SMTP', psswd); props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', mail); props.setProperty('mail.smtp.host', hôte); props.setProperty('mail.smtp.port', port); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.port', port); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.fallback', 'false'); sendmail(emailto, 'Aide !', 'L'astronaute est introuvable !', img); r.stop fin fin fin

De toute évidence, c'est compliqué ici, mais il devrait s'améliorer une fois copié. Les mots de passe et les e-mails pour cela doivent être fournis par ceux qui font ce projet évidemment.

Cependant, notre exemple n'est qu'une des nombreuses façons de s'amuser avec ce robot pour qu'il convienne à tout le monde. Il y a beaucoup de choses différentes à faire, que vous pouvez adapter à vous-même.

Conseillé: