Faucheuse guidée par GPS RTK

Author avatarOccitan | Last edit 7/06/2024 by Occitan

Cette faucheuse robot est capable de couper l'herbe de façon entièrement automatique sur un parcours déterminé à l'avance. Grâce au guidage par GPS RTK le parcours est reproduit à chaque tonte avec une précision meilleure que 10 centimètres.

Introduction

On va décrire ici une faucheuse robot capable de couper l'herbe de façon entièrement automatique sur un parcours déterminé à l'avance. Grâce au guidage par GPS RTK le parcours est reproduit à chaque tonte avec une précision meilleure que 10 centimètres (mon expérience) . Le pilotage est basé sur une carte Aduino Mega, complétée par quelques shields de commande moteurs, d'accéléromètres et boussole ainsi que d'une carte mémoire.


C'est une réalisation non professionnelle, mais qui m'a permis de me rendre compte des problèmes rencontrés en robotique agricole. Cette toute jeune discipline est en train de se développer rapidement, aiguillonnée par les nouvelles lois sur la réduction des désherbants et pesticides. Voici par exemple un lien vers le dernier salon de robotique agricole de Toulouse (https://www.fira-agtech.com/). Certaines entreprises comme Naio technologies fabriquent déjà des robots opérationnels (https://www.naio-technologies.com/).

En comparaison, ma réalisation est bien modeste mais elle permet tout de même de comprendre l'intérêt et les défis de façon ludique.

....Et puis elle fonctionne vraiment ! ...... et peut donc être utilisée pour couper l'herbe autour de sa maison, tout en préservant son temps libre...


Même si je ne décris pas la réalisation jusque dans les derniers détails, les indications que je donne sont précieuses pour celui qui voudrait se lancer. N'hésitez pas à poser des questions ou à faire des suggestions, ce qui me permettra de compléter ma présentation au bénéfice de tous.


Je serais vraiment ravi que ce type de projet puisse donner le goût de l'ingénierie à des bien plus jeunes que moi.... afin d'être prêts pour la grande robolution qui nous attend....

D'ailleurs ce type de projet conviendrait parfaitement à un groupe de jeunes motivés dans un club ou un fablab, pour s'exercer à travailler en groupe projet, avec architectes mécanique, électrique, software chapeautés par un ingénieur système, comme dans l'industrie.


La video d'introduction:

Dans la première partie, on voit la machine se déplacer en ligne droite entre deux points du fichier de fauchage. Les inégalités de terrain obligent à de petites corrections de trajectoire. Au bout de la ligne droite, deux types de virages sont possibles: autour du centre de rotation situé au milieu des deux roues arrière ou bien autour d'une roue de façon à réaliser des bandes de fauchage contiguës.

Step 1 - Les objectifs

Le but est de fabriquer un prototype opérationnel de faucheuse capable de faucher l'herbe de manière autonome sur des terrains pouvant comporter des irrégularités importantes (prés plutôt que pelouses).


Le confinement dans le champ ne peut pas être basé sur une limitation par barrière physique ou par fil guide enterré comme pour les robots de tonte pour les pelouses. Les champs à faucher sont en effet variables et de surface importante.


Pour la barre de coupe, l'objectif est de maintenir la pousse de l'herbe à une certaine hauteur après une première tonte ou débroussaillage obtenus par un autre moyen.


Step 2 - Présentation générale

Le système se compose d'un robot mobile et d'une base fixe.


Sur le robot mobile on trouve:

- Le tableau de bord

- Le boîtier de commande général incluant une carte mémoire.

- la manette de commande manuelle

- Le GPS configuré en "rover" ainsi que le récepteur de corrections RTK

- 3 roues motorisées

- Les moteurs à galets des roues

- la barre de coupe constituée de 4 disques tournants portant chacun 3 lames de cutter en périphérie (largeur de coupe de 1 mètre)

- le boîtier de gestion de la barre de coupe

- les batteries


Dans la base fixe on trouve le GPS configuré en "base" ainsi que l'émetteur des corrections RTK. On note que l'antenne est placée en hauteur de façon à rayonner sur quelques centaines de mètres autour de la maison. De plus, l'antenne GPS est en vue de tout le ciel sans aucune occultation par des bâtiments ou par de la végétation.


Les modes Rover et base des GPS seront décrits et expliqués dans la partei GPS.


Step 3 - Mode d'emploi ( 1/4 )

Je propose de prendre connaissance du robot à travers son mode d'emploi qui fait bien apparaître toutes ses fonctionnalités.


Description du tableau de bord:

- Un interrupteur général

- un premier sélecteur à 3 positions permet de sélectionner les modes de fonctionnement: mode déplacement manuel, mode enregistrement de parcours, mode fauchage

- Un bouton poussoir sert de marqueur. On verra ses utilisations.

- Deux autres sélecteurs à 3 positions servent à sélectionner un numéro de fichier parmi 9. On dispose donc de 9 fichiers de fauchage ou d'enregistrements de parcours pour 9 champs différents.

- Un sélecteur à 3 positions est dédié à la commande de la barre de coupe. Une position OFF, une position ON, une position commande programmée.

- Afficheur deux lignes

- un sélecteur 3 positions pour définir 3 affichages différents

- une LED qui indique l'état du GPS. LED éteinte, pas de GPS. LED clignotante lentement, GPS sans corrections RTK. LED clignotante rapide, corrections RTK reçues. LED allumée, verrouillage GPS sur la plus grande précision.


Enfin, la manette de commande manuelle est munie de deux sélecteurs à 3 positions. Celui de gauche commande la roue gauche, celui de droite commande la roue droite.



Step 4 - Mode d'emploi ( 2 /4 )

Mode pilotage manuel (GPS non nécessaire)

Après mise ON et sélection de ce mode avec le sélecteur de mode, le pilotage de la machine se fait avec la manette de commande.

Les deux sélecteurs à 3 positions ont un ressort de rappel qui les ramène toujours en position milieu, correspondant à l'arrêt des roues.

Quand on pousse les leviers de gauche et de droite vers l'avant les deux roues arrière tournent et la machine va tout droit.

Quand on tire les deux leviers en arrière, la machine recule tout droit.

Quand on pousse un levier vers l'avant, la machine tourne autour de la roue arrêtée.

Quand on pousse un levier vers l'avant et l'autre vers l'arrière, la machine tourne autour d'elle-même, en un point situé au milieu de l'axe joignant les roues arrière.

La motorisation de la roue avant s'ajuste automatiquement en fonction des deux commandes passées sur les deux roues arrière.


Enfin, dans le mode manuel on peut également faucher de l'herbe. Pour cela, après avoir vérifié que personne ne se trouve à proximité des disques de coupe, on met ON le boîtier de gestion de la barre de coupe (interrupteur "hard" pour la sécurité). On place ensuite le sélecteur de coupe du tableau de bord sur ON. A cet instant les 4 disques de la barre de coupe se mettent en rotation.

Step 5 - Mode d'emploi ( 3/4 )

Mode enregistrement de parcours (GPS nécessaire)

- Avant de commencer à enregistrer un parcours, on définit arbitrairement un point de référence pour le champ et on le marque par un petit piquet. Ce point sera l'origine des coordonnées dans le repère géographique (photo)

- On sélectionne ensuite le numéro de fichier dans lequel le parcours va être enregistré, grâce aux deux sélecteurs du tableau de bord.

- On met la base ON

- On vérifie alors que la LED d'état GPS se met à clignoter rapidement.

- On quitte le mode manuel en plaçant le sélecteur de mode du tableau de bord sur la position enregistrement.

- On amène alors la machine manuellement à la position du point de référence. Précisément c'est l'antenne GPS qui doit se trouver au dessus de ce repère. Cette antenne GPS est située au dessus du point centré entre les deux roues arrière et qui est le point de rotation de la machine sur elle-même.

- On attend que la LED donnant le statut du GPS soit maintenant allumée sans clignotement. Cela indique que le GPS est à sa précision maximum ("Fix" GPS).

- On marque la position origine 0,0 en appuyant sur le BP marqueur du tableau de bord.

- On se dirige alors vers le point suivant que l'on veut cartographier. Dès qu'il est atteint, on le signale à l'aide du marqueur.

- Pour mettre fin à l'enregistrement on repasse en mode manuel.






Step 6 - Mode d'emploi ( 4/4 )

Mode fauchage (GPS nécessaire)

Il faut d'abord préparer le fichier de points que la machine doit parcourir pour faucher tout le champ sans laisser de surface non coupée. Pour cela on récupère le fichier enregistré dans la carte mémoire et à partir de ces coordonnées, à l'aide par exemple d'Excel, on génère une liste de points comme sur la photo. Pour chacun des points à atteindre on indique si la barre de coupe est ON ou OFF. Comme c'est la barre de coupe qui consomme le plus de puissance (de 50 à 100 Watts suivant l'herbe), il faut veiller à couper la barre de coupe lors de la traversée d'un champ déjà fauché par exemple.

La carte de fauchage étant générée, on remet la carte mémoire sur son shield dans le tiroir de commande.


Il ne reste plus alors que mettre ON la base et se rendre sur le champ à faucher, juste au dessus du repère de référence. On met ensuite le sélecteur de mode sur "Fauchage".

A ce moment la machine attendra toute seule le verrouillage GPS RTK en "Fix" pour faire une mise à zéro des coordonnées et commencer à faucher.

Lorsque le fauchage sera terminé, elle reviendra seule au point de départ, avec une précision d'une dizaine de centimètres.


Pendant le fauchage, la machine se déplace en ligne droite entre deux points consécutifs du fichier de points. La largeur de coupe est de 1,1 mètre. Comme la machine a une largeur entre roues de 1 mètre et peut tourner autour d'une roue (voir video), il est possible de faire des bandes de fauchage contiguës. C'est d'une grande efficacité !





Step 7 - Partie mécanique

La structure du robot

Le robot est construit autour d'une structure en treillis de tubes d'aluminium, ce qui lui confère une bonne rigidité. Ses dimensions sont environ de 1.20 mètre de long, 1 mètre de large et 80 cm de haut.


Les roues

Elle peut se déplacer grâce à 3 roues de vélo enfant de diamètre 20 pouces: Deux roues arrière et une roue avant semblable à la roulette des chariots de supermarché (photos 1 et 2). C'est le mouvement relatif des deux roues arrière qui assure son orientation.


Les moteurs à galet

A cause des irrégularités de terrain, il est nécessaire de disposer de couples importants et donc d'un grand rapport de réduction. Dans ce but j'ai utilisé le principe de galet appuyant sur la roue, comme sur un solex (photos 3 et 4). La réduction importante permet de garder la machine stable dans une pente, même lorsque l'on coupe l'alimentation des moteurs. En contrepartie, la machine avance letement (3 mètres / minute)...mais l'herbe pousse lentement....


Pour la conception mécanique j'ai utilisé le logiciel de dessin OpenScad (logiciel à scripts très efficace). En parallèle pour les plans de détail j'ai utilisé Drawing de OpenOffice.


Enfin voici la liste de sites où les différents éléments mécaniques ont été achetés:

https://wikifab.org/images/e/e4/Faucheuse_guid_e_par_GPS_RTK_ListeMeca.pdf


Step 8 - Le GPS RTK (1/3)

GPS simple

Le GPS simple (photo 1), celui qui est dans notre voiture n'a une précision que de quelques mètres. Si on enregistre la position indiquée par un tel GPS maintenu fixe pendant une heure par exemple, on va observer des fluctuations de plusieurs mètres. Ces fluctuations sont dues à des perturbations de l'atmosphère et de la ionosphère, mais aussi à des erreurs d'horloge des satellites et des erreurs de meure du GPS lui-même. Il ne convient donc pas pour notre application.


GPS RTK

Afin d'améliorer cette précision, on utilise deux GPS situés à une distance inférieure à 10 Km (photo 2). Dans ces conditions, on peut considérer que les perturbations de l'atmosphère et de la ionosphère sont identiques sur chaque GPS. Ainsi la différence de position entre les deux GPS n'est plus perturbée (différentiel). Si maintenant on fixe un des GPS (la base) et si on place l'autre sur un véhicule (le rover), on obtiendra précisément le déplacement du véhicule par rapport à la base sans perturbations. De plus ces GPS effectuent une mesure de temps de vol beaucoup plus présise que les GPS simples (mesures de phase sur la porteuse).

Grâce à ces améliorations, on obtiendra une précision de mesure centimétrique pour le déplacement du rover par rapport à la base.


C'est ce système RTK (Real Time Kinematic) que nous avons choisi d'utiliser.



Step 9 - Le GPS RTK (2/3)

J'ai acheté 2 circuits GPS RTK (photo 1) à la société Navspark.

Ces circuits sont montés sur un petit circuit imprimé équipé de broches au pas de 2.54 mm qui se monte donc directement sur les plaques d'essai.

Comme le projet est localisé dans le sud-ouest de la France, j'ai choisi des circuits travaillant avec les constellations de satellites américains GPS ainsi que la constellation russe Glonass.

Il est important d'avoir le maximum de satellites afin de bénéficier de la meilleure précision. Dans mon cas, j'ai couramment entre 10 et 16 satellites.


On doit également acheter

- 2 adaptateurs USB, nécessaire pour relier le circuit GPS à un PC (tests et configuration)

- 2 antennes GPS + 2 câbles adaptateurs

- une paire d'emetteurs-récepteurs 3DR afin que la base puisse émettre ses corrections vers le rover et le rover les recevoir.


Ci-joint la liste des achats avec des liens internet vers les revendeurs:

Faucheuse_guid_e_par_GPS_RTK_Liste_GPS.pdf





Step 10 - Le GPS RTK (3/3)

La notice du GPS que l'on trouve sur le site de Navspark permet de mettre en œuvre progressivement les circuits.

http://navspark.mybigcommerce.com/content/NS-HP-GL-User-Guide.pdf


Sur le site de Navspark on trouvera également

- le logiciel à installer sur son PC Windows pour visualiser les sorties des GPS et programmer les circuits en base et en rover.

- Une description du format des données GPS (phrases NMEA)


Tous ces documents sont en anglais mais ils sont relativement faciles à comprendre. Dans un premier temps, la mise en œuvre se fait sans le moindre circuit électronique grâce aux adaptateurs USB qui fournissent également toutes les alimentations électriques.

La progression est la suivante:

- Test des circuits individuellement qui fonctionnent comme des GPS simples. La visualisation en nuage de ponts montre une stabilité de quelques mètres.

- Programmation d'un circuit en ROVER et l'autre en BASE

- Constitution d'un système RTK en reliant les deux modules par un simple fil. La visualisation en nuage de ponts montre une stabilité relative ROVER/BASE de quelques centimètres !

- Remplacement du fil liant BASE et ROVER par les émetteurs-récepteurs 3DR. Là encore le fonctionnement en RTK permet une stabilité de quelques centimètres. Mais cette fois BASE et ROVER ne sont plus reliés par un lien physique.....

- Remplacement de la visualisation PC par une carte Arduino programmée pour recevoir les données GPS sur une entrée série... (voir plus bas)


Step 11 - Partie électrique (1/2)

Le boîtier de commande électrique

La photo 1 montre les principales cartes du boîtier de commande qui vont être détaillés ci-dessous.


Câblage du GPS

Les câblages des GPS de la base et de la faucheuse sont donnés sur la figure 2.

On arrive naturellement à ce câblage si on suit la progression de la notice des GPS (voir partie GPS). Dans tous les cas on note la présence de l'adaptateur USB qui permet de programmer les circuits soit en base, soit en rover grâce au logiciel sur PC fourni par NavSpark. Grâce à ce programme, on a également toute les informations de position, nombre de satellites, etc...

Dans la partie faucheuse, la broche Tx1 du GPS est reliée à l'entrée série 19 (Rx1) de la carte ARDUINO MEGA pour recevoir les phrases NMEA.

Dans la base la broche Tx1 du GPS est envoyée sur la broche Rx de la radio 3DR pour l'envoi des corrections. Dans la faucheuse les corrections reçues par la radio 3DR sont envoyées sur la broche Rx2 du circuit GPS.


On note que ces corrections et leur gestion sont intégralement assurées par les circuits GPS RTK. Ainsi, la carte Aduino MEGA ne reçoit que des valeurs de position corrigées.



Step 12 - Partie électrique (2/2)

La carte Arduino MEGA et ses shields

- Carte arduino MEGA

- Shield Moteurs roues arrière

- Shield Moteur roue avant

- Shield arte SD


Sur la figure 1, on note que l'on a mis des connecteurs intercalaires entre les cartes pour que la chaleur dissipée dans les cartes moteur puisse s'évacuer. De plus, ces intercalaires permettent de couper des liaisons non désirées entre les cartes, sans avoir à les modifier.

La figure 2 et figure 3 montrent comment sont lues les positions des inverseurs du tableau de bord et de la manette de commande.


Step 13 - Le programme de pilotage Arduino

La carte microcontrôleur est une Arduino MEGA (UNO n'ayant pas assez de mémoire). Le programme de pilotage est très simple et classique. J'ai développé une fonction pour chaque opération élémentaire à effectuer (lecture tableau de bord, acquisition des données GPS, affichage LCD, commande d'avance ou de rotation de la machine, etc...). Ces fonctions sont ensuite utilisées facilement dans le programme principal. La vitesse lente de la machine (3 mètres / minute) facilite grandement les choses.


Par contre, la barre de coupe n'est pas gérée par ce programme mais par le programme de la carte UNO qui se trouve dans le boîtier spécifique.


Dans la partie SETUP du programme on trouve

- les initialisations de pins utiles de la carte MEGA en entrées ou sorties

- l'initialisation de l'afficheur LCD

- l' initialisation carte mémoire SD

- l' initialisation de la vitesse de transfert de l'interface série hardware vers le GPS

- l' initialisation de la vitesse de transfert de l'interface série vers l'IDE

- l' arrêt des moteurs et de la barre de coupe


Dans la partie LOOP du programme on trouve au début

- les lectures du tableau de bord et de la manette, du GPS, de la boussole et des accéléromètres

- un sélecteur à 3 dérivations, suivant l'état du sélecteur de modes du tableau de bord (manuel, enregistrement, fauchage)

La boucle LOOP est rythmée par la lecture asynchrone du GPS qui est l'étape la plus lente. On revient donc en début de boucle environ toutes les 3 secondes.


Dans la dérivation mode normal, la fonction de déplacement est commandée en fonction de la manette et l'affichage est mis à jour environ toutes les 3 secondes (position, état GPS, direction boussole, inclinaison...). Un appui sur le BP marqueur met à zéro les coordonnées de position qui seront exprimées en mètres dans le repère géographique.


Dans la dérivation mode enregistrement, toutes les positions mesurées pendant le déplacement sont enregistrées sur la carte SD (période d'environ 3 secondes). Lorsque un point d'intérêt est atteint, l'appui sur le marqueur est enregistré. dans la carte SD. La position de la machine est affichée toutes les 3 secondes, en mètres dans le repère géographique centré sur le point origine.


Dans la dérivation mode fauchage: La machine a préalablement été amenée au dessus du point de référence. Au basculement du sélecteur de mode sur "fauchage", le programme observe les sorties GPS et en particulier la valeur du flag d'état. Lorsque le flag d'état passe en "Fix", le programme effectue la mise à zéro de la position. Le premier point à atteindre est alors lu dans le fichier fauchage de la mémoire SD. Quand ce point est atteint, le virage de la machine se fait comme indiqué dans le fichier fauchage, soit autour d'une roue, soit autour du centre des deux roues.

Le processus se répète jusqu'à ce que le dernier point soit atteint (en général point de départ). A ce moment le programme met la machine et la barre de coupe à l'arrêt.


Le principe de suivi de ligne entre deux waypoints est expliqué ici: https://wikifab.org/images/d/d6/Faucheuse_guid_e_par_GPS_RTK_PrincipeSuiviLigne.pdf


Voici le fichier du programme: https://wikifab.org/images/6/64/Faucheuse_guid_e_par_GPS_RTK_SW_Faucheuse_pilotage_22.ino

https://wikifab.org/images/9/97/Faucheuse_guid_e_par_GPS_RTK_PourWiki.pdf

Ci-dessous un exemple de fichier de fauchage:

https://wikifab.org/images/f/f2/Faucheuse_guid_e_par_GPS_RTK_ExempleFichierFauchage.txt


Step 14 - La barre de coupe et sa gestion

La barre de coupe est constituée par 4 disques tournant à la vitesse de 1200 tr/ minute. Chaque disque est muni de 3 lames de cutter. Ces disques sont disposés de façon à réaliser une bande de coupe continue de 1.2 mètre de large.


Les moteurs doivent être contrôlés de façon à limiter le courant

- au démarrage, à cause de l'inertie des disques

- lors de la coupe, à cause des blocages par trop d'herbe


Pour cela on mesure le courant dans le circuit de chaque moteur grâce à des résistances bobinées de faible valeur. La carte UNO est câblée et programmée pour mesurer ces courants et envoyer une commande PWM adaptée aux moteurs.


Ainsi, au démarrage, la vitesse augmente progressivement jusqu'à sa valeur maxi en 10 secondes. En cas de blocage par de l'herbe, le moteur s'arrête pendant 10 secondes et refait une tentative de relance pendant 2 secondes. Si le problème persiste, le cycle de 10 secondes de repos et 2 secondes de relance recommence. Dans ces conditions, l'échauffement du moteur reste limité, même en cas de blocage permanent.


Les moteurs se mettent en route ou s'arrêtent lorsque la carte UNO reçoit le signal envoyé par le programme de pilotage. Cependant un interrupteur hard permet de couper le courant de façon fiable pour sécuriser les opérations de maintenance



Step 15 - Quelle suite donner ? Quelles améliorations ?

Ajouter Galileo à GPS et Glonass

La végétation (arbres) peut limiter le nombre de satellites en vue du véhicule et réduire la précision ou empêcher le verrouillage RTK. On a donc intérêt à utiliser le maximum de satellites simultanément. Il serait donc intéressant de compléter les constellations GPS et Glonass par la constellation Galileo.

On devrait pouvoir bénéficier ainsi de plus de 20 satellites au lieu de 15 au maximum, ce qui permet de mieux s'affranchir de l'écrantage par la couverture végétale.

Il commence à exister des circuits travaillant simultanément avec ces 3 constellations:

- Navspark a sorti un circuit "identique" à celui que j'ai utilisé, mais avec Galilleo en supplément (photo 1) (http://navspark.mybigcommerce.com/ns-hp-gn2-px1122r-multi-band-quad-gnss-rtk-breakout-board/)

- Il existe aussi des shields très compacts (phot 2) qui incluent à la fois le circuit GPS et l'émetteur-récepteur sur le même support

https://www.ardusimple.com/product/simplertk2b-starter-kit-mr-ip65/

....Mais le prix est bien supérieur à celui des circuits que nous avons utilisés ici.


Compléter le GPS par de l'odométrie et par un LIDAR

Malheureusement, en arboriculture il arrive que la couverture végétale soit très importante (champ de noisetiers par exemple). Dans ce cas, même avec les 3 constellations il se peut que le verrouillage RTK ne soit pas possible.

Il faut donc introduire un capteur qui permettrait de conserver la position même en l'absence momentanée de GPS.

L'utilisation de l'odométrie est une solution simple pour suppléer à la perte du GPS. Son principe consiste à mesurer précisément la rotation des deux roues motrices pour en déduire le trajet de la faucheuse. Malheureusement la précision est limitée par tous les petits glissements des roues par rapport au sol. Je suis en train de tester cette solution en situation de terrain réelle.

L'utilisation d'un LIDAR pourrait également permettre de se repérer dans un verger. Son principe repose sur le balayage du plan horizontal par un faisceau laser émis par une tourelle. Au cours de ce balayage, la distance à tous les objets interceptés est mesurée . Les troncs des arbres sont très faciles à repérer dans ce cas par le faisceau laser et peuvent servir à observer la marche du robot. Voici par exemple un type de LIDAR qui pourrait convenir pour des conditions extérieures (photo3): https://www.robotshop.com/eu/fr/telemetre-laser-360-rplidar-40m.html


Dans les deux cas le GPS reprendrait sa fonction en bout de rangée, au sortir de la couverture végétale.


Comments

Published