Table des matières:
- Étape 1: Initialisation et capteurs
- Étape 2: Obtenir des données
- Étape 3: Terminer la mission
- Étape 4: Conclusion
Vidéo: Roomba Explorer : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
En utilisant MATLAB et le robot Create2 d'iRobot, ce projet explorera différentes zones d'un emplacement inconnu. Nous avons utilisé les capteurs du robot pour aider à manœuvrer un terrain dangereux. En obtenant des photos et un flux vidéo d'un Raspberry Pi qui est connecté, nous avons pu déterminer les obstacles auxquels le robot sera confronté, et ils seront classés.
Pièces et matériaux
Pour ce projet, vous aurez besoin
-un ordinateur
-la dernière version de MATLAB (MATLAB R2018b a été utilisé pour ce projet)
- boîte à outils roombaInstall
-Robot Create2 d'iRobot
-Framboise Pi avec appareil photo
Étape 1: Initialisation et capteurs
Avant de commencer toute programmation, nous avons téléchargé la boîte à outils roombaInstall, qui permettait d'accéder aux différents composants du Robot.
Initialement, nous avons créé une interface graphique pour initialiser n'importe quel Robot. Pour ce faire, vous devez saisir le numéro du Robot en entrée. Cela permettra d'accéder au robot pour exécuter notre programme. Nous avons travaillé pour que le robot puisse manœuvrer sur les nombreux terrains qu'il rencontrerait. Nous avons implémenté les capteurs Cliff, les capteurs de choc lumineux et les capteurs de choc physique, en utilisant leurs sorties pour déclencher le robot afin de changer sa vitesse et/ou sa direction. Lorsque l'un des six capteurs de choc lumineux détecte un objet, la valeur qu'ils génèrent diminue, entraînant une diminution de la vitesse du robot pour éviter une collision à pleine vitesse. Lorsque le robot entre finalement en collision avec un obstacle, les capteurs de bosse physique signaleront une valeur supérieure à zéro; à cause de cela, le robot s'arrêtera, il n'y aura donc plus de collisions et plus de fonctions pourront être mises en action. Pour les Cliff Sensors, ils liront la luminosité de la zone qui les entoure. Si la valeur est supérieure à 2800, nous avons déterminé que le Robot serait sur un sol stable et sûr. Mais, si la valeur est inférieure à 800, les capteurs de falaise détecteront une falaise, s'arrêtant immédiatement pour ne pas tomber. Toute valeur intermédiaire a été déterminée pour représenter l'eau et entraînera l'arrêt de l'action du robot. En utilisant les capteurs ci-dessus, la vitesse du robot est modifiée, ce qui nous permet de mieux déterminer s'il y a un danger.
Ci-dessous le code (de MATLAB R2018b)
%% Initialisation
dlgPrompts = {'Numéro de Roomba'};
dlgTitle = 'Sélectionnez votre Roomba';
dlgDefaults = {''};
opts. Resize = 'on';
dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Créer une fenêtre qui invite l'utilisateur à saisir son numéro de roomba
n=str2double(dlgout{1});
r=roomba(n); % Initialise la détermination de la vitesse du Roomba %% spécifiée par l'utilisateur à partir des capteurs de choc lumineux tandis que true s=r.getLightBumpers; % obtiennent des capteurs de choc léger
lbumpout_1=extractfield(s, 'gauche'); % prend les valeurs numériques des capteurs et les rend plus utilisables lbumpout_2=extractfield(s, 'leftFront');
lbumpout_3=extractfield(s, 'leftCenter');
lbumpout_4=extractfield(s, 'rightCenter');
lbumpout_5=extractfield(s, 'rightFront');
lbumpout_6=extractfield(s, 'right');
lbout=[lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % convertit les valeurs en matrice
sLbump=sort(lbout); La matrice %sorts à la valeur la plus basse peut être extraite
lowLbump=sLbump(1); speed=.05+(lowLbump)*.005 % en utilisant la valeur la plus basse, qui représente les obstacles proches, pour déterminer la vitesse, une vitesse plus élevée lorsque rien n'est détecté
r.setDriveVelocity(vitesse, vitesse)
finir
% de pare-chocs physiques
b=r.getBumpers; %Sortie vrai, faux
bsen_1=extractfield(b, 'gauche')
bsen_2=extractfield(b, 'droit')
bsen_3=extractfield(b, 'front')
bsen_4=extractfield(b, 'leftWheelDrop')
bsen_5=extractfield(b, 'rightWheelDrop')
bumps=[bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump=sum(bums)
si tbump>0 r.setDriveVelocity(0, 0)
finir
% de capteurs de falaise
c=r.getCliffSensors %% 2800 safe, sinon eau
csen_1=extractfield(c, 'gauche')
csen_2=extractfield(c, 'droit')
csen_3=extractfield(c, 'leftFront')
csen_4=extractfield(c, 'rightFront')
falaises=[csen_1, csen_2, csen_3, csen_4]
ordcliff=sort(falaises)
si ordcliff(1) < 2750
r.setDriveVelocity(0, 0)
si falaise<800
disp 'falaise'
autre
faire couler de l'eau
finir
r. TurnAngle(45)
finir
Étape 2: Obtenir des données
Une fois les capteurs de choc physiques déclenchés, le robot implémentera son Raspberry Pi embarqué pour prendre une photo de l'obstacle. Après avoir pris une photo, en utilisant la reconnaissance de texte s'il y a du texte dans l'image, le Robot déterminera quel est l'obstacle et ce que dit l'obstacle.
img = r.getImage; imshow(img);
imwrite(img, 'imgfromcamera.jpg')
photo = imread('imgfromcamera.jpg')
ocrRésultats = ocr(photo)
reconnuText = ocrResults. Text;
chiffre;
imshow(photo) text(220, 0, RecognizedText, 'BackgroundColor', [1 1 1]);
Étape 3: Terminer la mission
Lorsque le robot détermine que l'obstacle est à la maison, il terminera sa mission et restera à la maison. Une fois la mission terminée, le robot enverra un e-mail d'alerte indiquant qu'il est rentré chez lui et il enverra les images qu'il a prises tout au long de son voyage.
% d'envoi d'e-mails
setpref('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref('Internet', 'E_mail', '[email protected]'); % compte de messagerie à envoyer depuis setpref('Internet', 'SMTP_Username', 'enter sender email'); % nom d'utilisateur de l'expéditeur setpref('Internet', 'SMTP_Password', 'entrez le mot de passe de l'expéditeur'); % mot de passe des expéditeurs
props = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');
sendmail('Entrez l'e-mail de réception', 'Roomba', 'Roomba est de retour à la maison !!', 'imgfromcamera.jpg') % compte de messagerie à envoyer à
Le Robot est alors terminé.
Étape 4: Conclusion
Le programme MATLAB inclus est séparé de l'ensemble du script utilisé avec le Robot. Dans le brouillon final, assurez-vous de mettre tout le code, à l'exception de l'étape d'initialisation, dans une boucle while pour vous assurer que les pare-chocs fonctionnent en permanence. Ce programme peut être modifié en fonction des besoins de l'utilisateur. La configuration de notre Robot est affichée.
*Rappel: N'oubliez pas que la boîte à outils roombaInstall est nécessaire pour que MATLAB interagisse avec le Robot et le Raspberry Pi embarqué.
Conseillé:
Raccourcis clavier pour Internet Explorer !! : 4 étapes
Raccourcis clavier pour Internet Explorer !! : Ce Instructable vous montrera quelques raccourcis clavier utiles pour Internet explorerVeuillez vous abonner à ma chaîne Merci
Explorer Windows 8.1 !! : 12 étapes
Explorer Windows 8.1 !! : Ce Instructable vous donnera un aperçu rapide de Windows 8.1, de toutes ses fonctionnalités et programmesVeuillez vous abonner à ma chaîneMerci
Explorer l'espace colorimétrique : 6 étapes
Exploration de l'espace colorimétrique : nos yeux perçoivent la lumière à travers des récepteurs sensibles aux couleurs rouge, verte et bleue du spectre visuel. Les gens ont utilisé ce fait pour fournir des images en couleur via le film, la télévision, les ordinateurs et d'autres appareils au cours des cent dernières années
Roomba Scout Explorer : 8 étapes
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 en constante évolution de systèmes autonomes de haute technologie dans le seul but d'enquêter et d'inté
Carte Bus Pirate 3EEPROM Explorer : 5 étapes
Bus Pirate 3EEPROM Explorer Board : Si vous avez l'un des pirates de bus Hack a Day's, qu'en faites-vous ? En savoir plus sur les EEPROM 1 fil, I2C et SPI avec la carte d'exploration 3EEPROM (nous l'appelons THR-EE-PROM). EEPROM est un type de puce mémoire qui stocke des données sans alimentation continue