Aller au contenu


Photo

Le robot "semeur de gazon" pour maniaque de gazon anglais...


  • Veuillez vous connecter pour répondre
86 réponses à ce sujet

#1 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 25 avril 2020 - 03:04

Bonjour à tous

 

Je vous présente mon dernier projet, un robot qui scanne un gazon pour déterminer sa densité moyenne et ses manques. Il devra semer dans les endroits où l’herbe est manquante.

Le robot est conçu pour une pelouse rase et des trous à combler d’une faible dimension. Ce n’est pas un semeur de gazon, mais un boucheur de trous pour jardinier maniaque. :crazy:

Je vous présente la base que j’ai essayé d’optimiser de façon propre mais les essais n’ont pas commencé, donc elle risque d’évoluer:

L 350 mm/ l 280 mm poids 2kg

 

4 roues motrices

1 moteur + vis sans fin noyée dans la trémie à graines

1 Moteur actionnant un scarificateur pour gratter la terre avant dépose des graines

4 détecteurs ultra-son pour les obstacles

1 détecteur de niveau dans la trémie à graines

1 Caméra pixy 2 sous la structure pour scanner le gazon

1 capteur gyroscope pour gérer le déplacement

2 cerveaux EV3, avec indication de la surface scannée, de la densité moyenne, du nombre de trous trouvés et comblés, un voyant de niveau de graine et un voyant de qualité de gazon.

 

Pour l’instant la motorisation est conçue pour scanner 30m²/h (hors arrêt pour semer) , à voir si on peut faire mieux. Et tout reste à faire, en particulier l'analyse d'image.

 

Je vous mets quelques photos…

 

DSC_1407.JPG

DSC_1408.JPG

DSC_1409.JPG

DSC_1410.JPG

 

 


  • macerobotics , Forthman et Romaric aiment ceci

#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 25 avril 2020 - 07:02

Super !

On veut tout voir. Il faudra que tu prennes des photos des zones à ressemmer pour voir la différence dans quelques semaines.



#3 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 25 avril 2020 - 07:18

Super !

On veut tout voir. Il faudra que tu prennes des photos des zones à ressemmer pour voir la différence dans quelques semaines.

Merci !

Oui en espérant que j'ai plus de succès qu'avec la découpe des oeufs à la coque !

Je vais commencer par faire une cartographie de la pelouse. La pixy cam permet de faire une dizaine d'acquisitions par seconde que je vais stocker dans des fichiers que je vais traiter dans excel pour les transformer en cartes de densité précises.

C'est l'apprentissage des images étalon ainsi que les réglages des seuils qui seront importants...

Dès que j'ai des résultats je les posterai, évidemment.

J'ai fait aussi des essais de distribution des graines, ça marche, c'est déjà ça !



#4 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 25 avril 2020 - 08:03

Les graines doivent au moins être collées au sol, voir légèrement entérrées.

Comment comptes tu t'y prendre ?



#5 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 25 avril 2020 - 09:20

Les graines doivent au moins être collées au sol, voir légèrement entérrées.

Comment comptes tu t'y prendre ?

Je compte scarifier la terre avec l'outil que j'ai mis devant , puis voir si je peux tasser ensuite après le semis en roulant dessus...ça m'aurait arrangé d'avoir de grosses mécanum pour les manoeuvres... 



#6 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 26 avril 2020 - 07:06

Oui, le scarificateur devant, c'est pas mal. Et tu mets un rouleau à l'arrière.

Après, il faut arroser. . . .  mais chaque chose en son temps.



#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 966 messages
  • Gender:Male
  • Location:Anglet

Posté 26 avril 2020 - 05:11

Je compte scarifier la terre avec l'outil que j'ai mis devant , puis voir si je peux tasser ensuite après le semis en roulant dessus...ça m'aurait arrangé d'avoir de grosses mécanum pour les manoeuvres... 

 

Tu veux quelle taille de roues ? :P


  • Forthman aime ceci

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 Romaric

Romaric

    Membre occasionnel

  • Membres
  • Pip
  • 141 messages

Posté 27 avril 2020 - 09:39

Super projet ! J'ai quelques doutes sur l'efficacité du scarificateur mais j'espère que ton projet va aboutir  :D



#9 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 27 avril 2020 - 01:23

Super projet ! J'ai quelques doutes sur l'efficacité du scarificateur mais j'espère que ton projet va aboutir  :D

 

Merci  !

 

C'est clair, le scarificateur c'est juste pour dire que j'en ai prévu un. Il faudrait que je mette des pointes plutôt que des tiges plastiques. Mais le principal de mon projet est d'arriver à déterminer un taux de densité du gazon et là il y a une problématique de repérage du robot et de conversion des données sur une carte, donc transformation des données odométriques et gyroscopiques en coordonnées, sans parler à la base d'être capable de faire une analyse d'image fiable. Ensuite il y a le repérage des trous pour faire un semis, ce qui est la partie visible mais pas forcément la plus compliquée. Je n'ai pas trop en tête l'efficacité même de ce semis.

J'ai fait une première ligne droite dans la pelouse en dirigeant le robot sur le chemin d'un manque de gazon de 5cm x 5cm. Voilà les données que j'ai récupérées et que j'ai mises sous forme graphique en mettant une échelle de 100% pour la zone dense, étalonnage fait au départ. C'est encourageant je pense, en tout cas on voit bien le trou !

 

graphique 1.jpg


  • Forthman et Romaric aiment ceci

#10 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 27 avril 2020 - 03:41

Au sujet de la mesure du déplacement  et de la mesure de la rotation des moteurs, je n'avais jamais trop creusé jusque là, mais dans les données je constate que le moteur fournit une information toutes les 0.033s (c'est assez constant) mais que la valeur reste fixe sur 8 acquisitions, ce qui donne une évolution par palier toutes les 0.26s... Le pb c'est que lorsque je fais une acquisition de toutes les données, dont celles de la caméra, je ne peux pas garantir une acquisition  précise, ce qui me donne parfois des valeurs de rotation du moteur fausses, quand je suis à la limite de franchissement d'un palier.

ET comme je calcule les déplacements entre deux acquisitions je ne suis pas super précis...

 

Je ne sais pas si je me suis bien expliqué. Je sais qu'on est sur du lego là, mais si quelqu'un avait un tuyau pour contourner ce pb ?

 

Voilà l'enregistrement de la rotation d'un moteur:

 

rotation.jpg



#11 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 27 avril 2020 - 04:45

Lego ou pas Lego, se baser sur la rotation d'un moteur pour déterminer la position d'un robot sur du gazon me parait illusoire.

Sauf si ta pelouse est aussi lisse qu'un marbre. Et encore, le marbre, ça glisse.

A mon avis, ton robot devra se déplacer d'un manière aléatoire et à chaque fois qu'il voit un trou il sème du gazon et dépose un marqueur rouge par exemple.

S'il repasse au même endroit, le marqueur rouge lui indiquera de passer son chemin.

 

Rien que le positionnement d'un robot sur une pelouse est un projet, en soit.

Mais on peut en parler, en cherchant bien, j'ai peut-être une idée simple.



#12 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 27 avril 2020 - 05:40

En fait ce n'est pas pour la partie recherche et semis de trou, car effectivement si je quadrille de manière aléatoire comme fait mon robot tondeur, j'y arriverai, c'est la méthode que j'ai retenue. Mais c'est pour la deuxième partie du projet, calculer un taux de densité moyen du gazon fiable, et là je ne peux pas passer plusieurs fois au même endroit en affichant des coordonnées différentes.

Mon objectif est de parvenir à une représentation graphique de ma pelouse, genre un quadrillage avec des carrés de 5cm/5cm avec une couleur pour chaque case allant du vert foncé au rouge foncé pour représenter le profil de densité et calculer par la même occasion la densité moyenne.

Mais peut-être me fais-je des illusions, c'est ce dont je me rends compte sur les premiers essais. Je me contenterai alors de calculer une estimation de la densité en considérant que les passages aléatoires sont représentatifs.

 

Pour ce qui est du marqueur, pas la peine, il existe des graines de gazon enrobées bleues, ce qui permet de détecter les trous semés sans problème.

 

Pour le reste, ma question, pourquoi des données identiques 8 fois d'affilée alors que le moteur tourne en continu et qu'il tourne de 15° en 0.033s ???



#13 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 27 avril 2020 - 05:54

Pour ce qui est purement du problème des paliers, je voix plusieurs pistes de solutions :

- faire une extrapolation : tu considère que ta vitesse est constante sur une petite période, et donc égale à la vitesse moyenne des instants passés

- faire du temps réel avec retard : tu ne calcule pas ta position actuelle (ou alors de manière approximative), mais tu calcule la position d'une seconde plus tôt : comme ça tu peux interpoler (lisser) ta courbe

- si tu as un IMU (accéléromètre + gyro) et que tu n'as pas peur d'un peu de maths, alors tu peux combiner l'IMU (très précis sur de très courtes durées mais très forte dérive sur le long terme) avec ton capteur des roues (qui semble pas très précis sur le très court terme, mais qui est probablement bon sur le moyen terme)

 

Ensuite, se posent plusieurs problèmes liés au fait d'utiliser l'odométrie (rotation des roues) pour déterminer ta position :

- le premier problème, surtout sur des terrains un peu complexes comme l'herbe, c'est le risque que les roues glissent un petit peu, donc que la roue tourne plus que ce que le robot avance. Même problème (en pire encore) si à un moment tu as une roue en l'air). Une solution peut être une roue supplémentaire par coté du robot, montée sur suspensions pour garantir le contact avec le sol (un simple levier et la gravité peuvent suffire) et monté sur une roue codeuse (ie un capteur de rotation) : cette roue supplémentaire n'étant pas motrice, si elle est bien alignée avec le centre de rotation du robot, ne glissera pas (en tout cas beaucoup moins) et paramétra donc d'avoir une mesure bien plus fiable

- le sol n'étant pas à 100% plat, chaque bosse rallonge un peu le trajet de la roue, et sera donc perçu comme un léger virage)

- les erreurs de quantification (ce que tu montres sur ton graphe : tu n'as pas la valeur exacte sur un temps continu, mais que des valeurs (avec une légère erreur possible) à des temps discrets)

- et le gros problème, c'est que toutes ces erreurs se cumulent : si tu as une même erreur sur les deux roues, c'est pas top, mais c'est pas encore trop grave, elle ne s'amplifiera pas au cours du temps. Mais si tu as une erreur différente entre les deux roues (bosse à droite mais pas à gauche par exemple), alors tu tournera légèrement : du coup, ton orientation sera fausse, et par conséquent tous les déplacements qui suivront seront décalés.

 

 

Pour te donner un ordre de grandeur : en école d'ingé, j'avais participé à une compétition interne de robotique, avec un budget de 1000CHF (850€) par équipe : dans mon équipe, on a décidé de miser sur une bonne odométrie : roues codeuses sur roues dédiées (non motorisées), avec des roues codeuse de bonne qualité (de mémoire, 4096 signaux/tour, je crois qu'on avait payé entre 50 et 100€ la paire). Comme terrain, c'était 3/4 moquette, 1/4 gazon artificiel. Si je me souviens bien, on arrivait à rester sous le mètre d'erreur en position pendant un peu moins de 5 minutes, au delà, ça devenait vite inexploitable.

 

 

Après, si tu as un mur qui entoure ton jardin, tu peux utiliser en plus des capteurs de distance (voir de contact) pour te recaler. Ainsi qu'un magnétomètre en guise de boussole pour éviter la dérive de l'orientation.

 

Avec roues codeuses sur roues indépendante (de qualité ou avec IMU en plus) + bousole + recalage sur les murs (avec quelques déplacements en plus pour aller régulièrement se recaller dans les coins), un positionnement absolut avec moins de 10 cm d'erreur ne me parait pas impossible. Mais ça demande un boulot plus conséquent (je sais pas si les modules légo offrent la puissance de calcul pour).

 

 

 

 

 

Pour la question sur le pourquoi de la quantification, c'est dur à dire sans connaitre le capteur, mais il y en a qui n'ont qu'une résolution très faible (le plus basic, c'est 1 signal par tour) : si le but est de mesurer la vitesse (et pas un déplacement), alors ça suffit en général


  • pmdd aime ceci

Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#14 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 27 avril 2020 - 07:00

Merci pour cette longue réponse pertinente . Je suis autant intéressé par la théorie que par la réalisation. Les maths ne me font pas peur au contraire.
Oui l'idée du repositionnement est intéressante, j'ai la possibilité de le faire.

Je pense malgré tout m'orienter sur une approche probabiliste de la position du robot, et de faire à chaque position un calcul d'erreur et de croiser les données lors de passages multiples...et de faire une cartographie fiable.
Pour le coup je m'éloigne de mon semeur mais c'est super intéressant. Pour cette fonction de semis le problème est plus simple, puisque la détection aléatoire d'un trou sera suivi d'une action de semis. Il faudra alors juste que j'optimise le quadrillage.
Pour ce qui est de la puissance de calcul du lego, il y a du potentiel mais de toutes façons j'exploite les fichiers de données sur un pc.

#15 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 27 avril 2020 - 08:07

Les maths ne me font pas peur au contraire.

Pour le moteur, je ne sais pas.

Pour le positionnement, j'ai pensé à quelque chose de simple.

Tu plantes 4 poteaux de différentes couleurs aux 4 coins de ton terrain. Ces poteaux feraient 2 à 3m de hauteur.

Avec ta caméra tu pourrais déjà connaitre l'orientation du robot avec la couleur des poteaux.

Connaissant la distance entre les poteaux, connaissant leur hauteur, toujours avec ta caméra, tu pourrais déterminer la position du robot en comparant la hauteur des poteaux dans l'image de ta caméra.

Fastoche . . . 


  • pmdd aime ceci

#16 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 27 avril 2020 - 08:16

 

Pour le moteur, je ne sais pas.

Pour le positionnement, j'ai pensé à quelque chose de simple.

Tu plantes 4 poteaux de différentes couleurs aux 4 coins de ton terrain. Ces poteaux feraient 2 à 3m de hauteur.

Avec ta caméra tu pourrais déjà connaitre l'orientation du robot avec la couleur des poteaux.

Connaissant la distance entre les poteaux, connaissant leur hauteur, toujours avec ta caméra, tu pourrais déterminer la position du robot en comparant la hauteur des poteaux dans l'image de ta caméra.

Fastoche . . . 

 

 

Pour ce qui est de l'orientation du robot le gyroscope est très performant, quant à la position l'idée est à creuser,

 

Sauf que ma caméra est sous le robot et regarde le sol. Mais l'idée est bonne et j'ai le matos pour mettre une deuxième caméra.

Je peux peut-être combiner toutes les données, ça ferait un truc sympa à décortiquer, et j'adore ça !!!



#17 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 27 avril 2020 - 10:24

Pour ce qui est de l'orientation du robot le gyroscope est très performant, quant à la position l'idée est à creuser,

Euh ... tu es sur? Tu n'as pas d'offset? Pas trop de bruit que tu intègre? Une résolution suffisante? Sur une courte durée, ça vas bien. Mais tu arrives à rester précis sur quelle durée? Par exemple si tu fait tourner ton robot en rond pendant 10 minutes, à la fin, tu as une erreur d'angle perceptible? De combien?


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#18 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 28 avril 2020 - 09:30

Pour ce qui est de faire naviguer un robot dans un environnement, il y a deux approches:

- la version réactive (par exemple les roomba) : une stratégie de déplacement pseudo-aléatoire dans un environnement contraint (une pièce) permet en général de couvrir la majorité de l'espace en un temps long (théoriquement infini). L'intérêt, c'est qu'elle demande peut de capteur/peu de qualité dans la mesure. L'inconvénient, c'est qu'elle prend du temps.

- la version modèle : en construisant/ayant à disposition un modèle de l'environnement (une carte dans ton cas), tu peux faire du SLAM, en combinant l'odométrie et une correction basée sur des amers distants (un peu comme l'idée des poteaux que suggère Oracid).

 

Globalement, je recommande ce cours sur la navigation qui est très bien fait : ROB312 https://perso.ensta-...rses/index.html


  • Forthman et pmdd aiment ceci
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#19 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 28 avril 2020 - 10:10

Merci , très intéressant en effet, je vais le potasser.

 

Je vais déjà rajouter des capteurs de contact pour faire des RAZ précises sur des obstacles fixes, ça sera toujours plus précis que les capteurs ultrasons que j'ai mis.

Pour l'odométrie je vais voir comment je peux exploiter simultanément les données des 4 moteurs pour éviter de perdre des infos liées à un quelconque patinage.

 

Avant de finaliser le projet en mode "roomba" je vais voir ce que je peux faire de plus élaboré , juste par curiosité, même si je ne vise pas la perfection, c'est sympa d'essayer.

 

Pour l'instant je ne peux pas faire beaucoup d'essais, il pleut des trombes d'eau ! 

 

Avec tous vos avis différents, je devrais pouvoir avancer , merci  ! :thank_you:



#20 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 944 messages
  • Gender:Male

Posté 28 avril 2020 - 03:53

 

 

Globalement, je recommande ce cours sur la navigation qui est très bien fait : ROB312 https://perso.ensta-...rses/index.html

 

Je l'ai potassé, il y a du niveau...

 

La première conclusion mais j'avais perçu le pb c'est qu'avec 4 roues fixes il faut (presque) oublier l'odométrie à chaque virage étant donnés les glissements, ou alors faire un RAZ de la position avec un repère quelconque après chaque virage.  La deuxième c'est qu'avec ma surface scannée de 4cm x 6cm je vais être trop précis pour balayer correctement ma surface.

C'est dommage pour la compacité du robot et surtout pour la protection contre la lumière parasite mais je sors la caméra de dessous le châssis pour la mettre en hauteur. Pour l'instant je suis passé à une image de 16cm x 24cm, moins nette en revanche, à voir si je parviens à faire une bonne analyse du sol. 

Je vais aussi faire une série d'enregistrements des virages (45/90/180) pour  essayer de voir à quelles valeurs de rotation de roue et de durée ils correspondent et si je peux en tirer une loi correcte et précise.

Je vais aussi faire faire un trajet aléatoire d'une dizaine de mètres et mesurer l'écart entre la valeur issue des données du robot et sa position réelle...






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users