Table des matières:
- Étape 1: Matériaux et fournitures:
- Étape 2:
- Étape 3: Assembler votre « jardin »
- Étape 4: Rédaction du code
- Étape 5: copiez le code
Vidéo: Garden Helper Roomba Bot : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Kiara Myers, Ahmad Alghadeer et Madison Tippet
But:
Cette instructable vous apprendra comment programmer un robot Roomba, à l'aide de MATLAB, pour naviguer dans un jardin, en détectant les fruits/légumes de forme circulaire suffisamment mûrs pour être cueillis en fonction de leur taille. Ce robot vous envoie également un e-mail, vous alertant du nombre de fruits prêts à être cueillis et du chemin parcouru.
Caractéristiques:
- Utilise des capteurs de lumière pour détecter les murs et tourner légèrement afin d'éviter de les heurter
- Utilise des capteurs de choc afin d'interrompre le programme lorsqu'il heurte le rocher au bout du jardin
- Utilise le traitement d'image pour détecter un cercle dans le jardin et ensuite déterminer son rayon
- Utilise des capteurs de falaise pour détecter une bande colorée qui indique la présence d'un fruit
Étape 1: Matériaux et fournitures:
- Un ordinateur portable
- MATLAB 2017
- Aspirateur Roomba
- Tarte aux framboises
- Blocs de bois
- Papier blanc
- Papier noir
- Ruban de couleur/fine bande de papier de couleur
- Gros rocher
Étape 2:
Étape 3: Assembler votre « jardin »
- Prenez votre papier noir et découpez des cercles de différentes tailles
-
Collez ces cercles noirs sur un grand papier blanc
Ce contraste sera nécessaire lors de la détection d'un fruit
-
Utilisez vos blocs de bois pour construire un chemin de jardin en forme de labyrinthe pour que votre robot puisse naviguer
Nous avons choisi un chemin en forme de U comme illustré ci-dessus
- Au bout de votre jardin, ajoutez une pierre ou une porte ou un autre objet pour que votre robot sache que c'est fait
-
Collez votre papier blanc avec le cercle sur les murs du jardin
Nous avons utilisé des seaux pour le coller parce que nos murs étaient trop courts pour la caméra
- Mettez du ruban de couleur/une fine bande de papier de couleur sur le sol devant le fruit
Étape 4: Rédaction du code
Naviguer dans le jardin
Utilisation de Bump Sensors: Pour exécuter le programme, nous plaçons le codage dans une instruction while qui parcourt diverses instructions if jusqu'à ce que le code soit cassé. Si l'un des bumpers est touché, sa valeur sera égale à true (ce qui, en booléen, est une valeur de 1). Une instruction if est utilisée pour casser le code lorsque l'une de leurs valeurs est égale à 1.
Utilisation de capteurs Cliff: dans l'instruction while, nous utilisons une instruction if pour indiquer au Roomba quand il est arrivé à l'emplacement d'une usine. Le Roomba détecte la bande colorée sur le sol en examinant le seuil de rouge que les capteurs de falaise captent. Si le capteur de falaise gauche ou droite détecte une couleur avec un seuil supérieur à celui du sol, alors il arrêtera le robot pendant 2 secondes (en utilisant la commande pause). Pendant ces 2 secondes, le Roomba prendra et affichera une image du fruit. À l'aide de la commande intégrée imfindcircles, définissez une plage pour les rayons de vos cercles et votre Roomba trouvera votre soi-disant fruit.
Utilisation du traitement d'image: dans l'instruction if, nous intégrons une autre instruction if qui dit: si le rayon détecté, radius3, est supérieur ou égal à notre exigence minimale d'un fruit mûr, r1 (vous décidez), puis comptez et affichez sur le Roomba combien de fruits sont prêts et tournent pour continuer à travers le jardin. Sinon, au tour de continuer à travers le jardin. Remarque: vous devrez peut-être ajuster l'angle que vous tournez car chaque Roomba est différent
Utilisation de pare-chocs légers: dans une autre instruction if, les pare-chocs légers sont analysés pour s'assurer qu'aucun d'entre eux ne dépasse notre seuil déterminé. Si le pare-chocs gauche, droit, centre gauche, centre droit, avant gauche ou avant droit dépasse le seuil, le Roomba tournera légèrement dans l'angle approprié pour éviter de heurter un mur. Par conséquent, naviguer dans le labyrinthe.
Le reste du code est utilisé pour tracer le chemin emprunté par le Roomba puis envoyer les résultats à votre email
Étape 5: copiez le code
% Objectif: En fonction de leurs tailles, le roomba parcourra un jardin et distinguera les légumes/fruits prêts à être ramassés. % Entrées: capteurs Lightbump, capteurs Cliff, capteurs Bump, image de la caméra % Sorties: chaque fois que les capteurs de lumière sont supérieurs au seuil, le roomba se tourne et prend une image, émet un bip si le rayon de % légumes/fruits se situe entre une plage spécifique. Le code se casse lorsque le roomba heurte % un objet, envoie à l'astronaute un e-mail indiquant combien de fruits sont prêts à être % ramassés et une cartographie du mouvement du roomba. % d'utilisation: instructions If et while, commandes de traçage, code de courrier électronique de MATLAB
k=0
tic
timerVal=tic
bien que vrai
v=.2; % vitesse r.setDriveVelocity(v, v);%roomba aller de l'avant L=r.getLightBumpers; LC=L.leftCenter; Rr=L.droite; Lf=L.gauche; RC=L.rightCenter; LF=L.leftFront; RF=L.rightFront; Q= 75; % seuil. RTH=30; %Seuil rouge haut RTL=10; %Seuil rouge bas B=r.getBumpers S=r.getCliffSensors; r1=24; r3=10; PL1=1800; si S.leftFront > PL1 || S.rightFront > PL1 % détecte si la couleur au sol est supérieure au seuil r.stop pause(2) elapsedTime=toc(timerVal-2) tic timerVal=tic % pause pendant 2 secondes img = r.getImage; %prendre l'image imshow(img)%afficher l'image [centers3, radius3] = imfindcircles(img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); h = viscercles(centres3, rayons3); % recherchez les cercles de rayons avec la plage spécifiée dans l'image si rayons3>=r1 T=1 k=k+1 dist1=0.2.*elapsedTime %Si le rayon détecté est supérieur ou égal au % requis minimum d'un fruit mûr, alors le Roomba compte ce fruit elseif radius3<=r3 T=0 else T=0 dist2=0.2.*elapsedTime %Si non, alors il ne compte pas le fruit end
if T==1 r.setLEDDigits(num2str(k)) r.beep r.beep r.beep r.turnAngle(78) %Si un fruit a été détecté, affichez le nombre sur Roomba, %faites un bruit, et tournez elseif T==2 r.turnAngle(78) %Si 2 fruits sont détectés, alors tourner pour continuer à travers le %jardin else r.turnAngle(78) %Si aucun fruit n'est détecté, alors tourner pour continuer à travers le %jardin end end if LC >Q r.stop Angleturnr(-7) elseif RC >Q r.stop r.turnAngle(7) elseif LF >Q r.stop r.turnAngle(-7) elseif RF >Q r.stop r. turnAngle(7) elseif Lf > Q r.stop r.turnAngle(-7) elseif Rr >Q r.stop r.turnAngle(7) end %Si l'une des valeurs des pare-chocs légers dépasse le seuil, alors %le Roomba tournera légèrement dans la direction appropriée pour éviter % de heurter un mur
si B.droit ==1 || B.gauche==1 || B.front==1 dist3=0.2.*elapsedTime r.stop r.beep('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle(360) %Si l'un des les bumbers sont touchés, puis le roomba joue du son, tourne en rond, % et casse le code
fin de pause
end scatter(0.533, 0, '^') maintien sur scatter(0.533, dist1, '<') maintien sur scatter(-dist2, dist1, 'v') maintien sur scatter(-dist2, 0, 'd') saveas (gcf, 'Mouvement.png')
kmsg=num2str(k) mail= '[email protected]' password='Srsora123#' host='smtp.gmail.com' port='465'
setpref('Internet', 'E_mail', courrier); setpref('Internet', 'SMTP_Server', hôte) 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(mail, 'Bonjour astronaute ! Il y a tant de fruits dans le jardin', kmsg, {'movement.png'})
Conseillé:
KS-Garden : Aperçu : 9 étapes
KS-Garden : Aperçu : KS-Garden peut être utilisé pour irriguer/ventiler/éclairer vos plantes de jardin/serre dans l'arrière-cour ou vos plantes d'intérieur (conception modulaire)Le système KS-Garden se compose principalement des modules suivants : principaux boitier système - Boitier relais et alimentation
Smart Garden - Click and Grow : 9 étapes
Smart Garden - Click and Grow : et si vous pouviez faire pousser vos propres plantes, fleurs, fruits ou légumes à l'aide d'une application pour smartphone qui s'assure que vos plantes obtiennent la configuration optimale d'eau, d'humidité, de lumière et de température et vous permet de surveiller comment pour faire pousser vos plantes
Trash Built BT Line Drawing Bot - Mon Bot : 13 étapes (avec photos)
Trash Built BT Line Drawing Bot - My Bot: Amis Hai, après un long écart d'environ 6 mois, je viens avec un nouveau projet. Jusqu'à la fin de Cute Drawing Buddy V1, Robot SCARA - Arduino, je prévois un autre robot de dessin, l'objectif principal est de couvrir un grand espace pour le dessin. Donc bras robotisés fixes c
Roomba Bot the Bulider : 5 étapes (avec photos)
Roomba Bot the Bulider : Bot the Builder est un roomba, qui avec "grabbers" attaché à l'avant sera en mesure de déplacer des objets. Le code qui l'accompagne est configuré pour enregistrer le premier mouvement avec une boîte graphique que vous pouvez contrôler d'un simple clic de souris. Après
Garden Train - Arduino Wireless NMRA DCC : 4 étapes (avec photos)
Garden Train - Arduino Wireless NMRA DCC : Suite à l'instruction précédente avec DCC sur le système de rail mort, j'ai développé l'idée plus loin avec une station de commande DCC à main avec clavier et écran LCD. La station de commande contient tout le codage requis pour les instructions NMRA DCC, cependant