Vous êtes sur la page 1sur 28

Chapitre 2 

: Etude bibliographie

1.Introduction :
Ce chapitre ’intéresse pour trouver une solution aux problèmes que nous avons
rencontrés lors du développement des modules qui nous devons spécifier ces problèmes et
trouver des solutions.

Dans ce chapitre, nous spécifions certains robots autonomes qui utilisent sur
l’agriculture. Puis nous passons à la mention navigation autonome, et nous terminons par la
présentation modulée d’identifications des arbres et solution d'optimisation pour exploiter
terre.

2. Progrès récents dans l'autonomisation de


l’agriculture :
Les robots autonomes qui sont actuellement utilisés dans l'agriculture sont classés en 4
types sur la base de leurs applications. Il s'agit de :

1) Moissonneuse

2) Contrôle des mauvaises herbes

3) Pulvérisation des semences

4) Phénotypage des cultures

Dans cette section, nous allons illustrer les différents robots autonomes disponibles sur
le marché, qui utilisent dans l’agriculture.

2.1 Robot OZ :

OZ et un robot de désherbage, Oz désherbe et nettoie vos cultures en respectant


l'environnement. Evitez le mal de dos, gagnez du temps et de la productivité
Figure 1: Robot OZ

2.2 Robot Harvester :

La récolte et la cueillette sont l'une des applications robotiques les plus populaires dans
l'agriculture, en raison de la précision et de la vitesse que les robots peuvent atteindre pour
améliorer l'importance des rendements et réduire les déchets dus aux cultures laissées sur le
terrain.

Figure 2: Robot Harvester


2.3 Robot TED :

Ce robot mobile autonome sert à désherber et à biner aux pieds des vignes. Il se localise
dans le vignoble grâce à une géolocalisation basée sur le GPS.

Figure 3: Robot TED

3. ROS pour l'agriculture :


ROS est l'abréviation de Robotique Operating System. Il s'agit d'un cadre flexible pour
l'écriture de logiciels pour robots. Il s'agit d'une collection d'outils, de bibliothèques et de
conventions qui visent à simplifier la tâche de création de comportements robotiques
complexes et robustes sur une grande variété de plateformes robotiques. L'intégration de ROS
dans l'automatisation de l'agriculture peut se faire en rendant les machines agricoles existantes
compatibles avec ROS et/ou en introduisant des robots compatibles avec ROS dans
l'agriculture. Rendre une machine agricole compatible avec ROS implique les étapes
suivantes : développement de son modèle de description, des pilotes de capteurs ROS et des
interfaces de contrôleur ROS. Cela implique également la création de paquets ROS
personnalisés pour permettre au robot d'effectuer les tâches agricoles requises. L'introduction
de robots compatibles ROS dans l'agriculture implique un processus similaire : modifier le
modèle de description du robot, mettre à jour les pilotes de capteurs et les interfaces de
contrôleur, et créer des paquets ROS personnalisés pour permettre au robot d'effectuer les
tâches agricoles requises. Une fois terminées, ces machines compatibles ROS peuvent utiliser
les fonctionnalités de ROS et d'autres technologies et fonctionnalités open-source, telles que
les logiciels de navigation et de planification des mouvements, la mise en réseau sur de vastes
champs ouverts, l'IRH avec les travailleurs agricoles, les outils de visualisation et de
surveillance, et bien plus encore.

4. Navigation :
Le problème de la robotique peut être résumé en trois questions principales :

 Où je suis ?
 Où est-ce que je vais ?
 Comment s'y rendre ?

Pour assurer une navigation robuste du robot le système doit répondre à ces trois
questions à tout moment de son fonctionnement.

Nous nous intéressons dans cette partie aux techniques de localisation, à la planification
des trajectoires et au fonctionnement de la carte des coûts.

4.1 Localisation :

La localisation implique une question : Où est le robot maintenant ? D'autre part, d'un
point de vue robot-centrique, où suis-je ? En gardant à l'esprit que "ici" est relatif à un certain
point de repère, et que vous n'êtes jamais perdu si vous ne vous souciez pas de savoir où vous
êtes.

Bien qu'il s'agisse d'une question simple, il n'est pas facile d'y répondre. La réponse est
différente en fonction des caractéristiques de votre robot. Les techniques de localisation qui
fonctionnent bien pour un robot dans un environnement donné, peuvent ne pas fonctionner
bien ou pas du tout dans un autre environnement. Par exemple, des localisations qui
fonctionnent bien dans des environnements extérieurs peuvent être totalement inutiles à
l'intérieur.

Toutes les techniques de localisation fournissent généralement deux informations de


base :

 Quelle est la position actuelle du robot dans un environnement donné ?


 Quelle est l'orientation actuelle du robot dans ce même environnement ?

Le robot doit être capable de se localiser à tout moment et de connaître sa position avec
précision. Dans ce qui suit, nous allons mentionner différentes techniques de localisation qui
sont utilisées par ROS.

4.1.1 Localisation relative :


La localisation relative permet d'estimer la position courante à partir des mesures des
capteurs proprioceptifs et des positions antérieures du robot mobile. Il existe plusieurs
techniques pour la mesurer.

a. Odométrie :
Le mot odométrie est composé de deux mots grecs : odos (qui signifie "route") et
metron (qui signifie "mesure"). L'odométrie est l'utilisation de données provenant de
capteurs de mouvement pour estimer le changement de position dans le temps.
L'odométrie est utilisée par certains robots, pour estimer et non pour déterminer leur
position de départ. Cette méthode est sensible aux erreurs dues à l'intégration des mesures
de vitesse dans le temps pour donner des estimations de position. Supposons qu'un robot
soit équipé de codeurs rotatifs sur ses roues. Il avance pendant un certain temps et
souhaite ensuite savoir quelle distance il a parcouru. Il peut mesurer la rotation des roues
et, s'il connaît la circonférence de ses roues, calculer la distance.

Figure 4:Odometry localisation

Cette méthode est sensible aux erreurs et elle peut être corrigée en ajoutant un capteur
au laser.
b. Localisation inertielle :
INS (Système de navigation inertielle) est composé de capteurs inertiels tels que
des accéléromètres et des gyroscopes et d'un ordinateur de navigation. L'INS peut estimer
l'attitude et la position par lui-même, sans aide extérieure, et possède une stabilité
acceptable à court terme, mais une stabilité médiocre sur une longue période. Si les
systèmes de navigation n'utilisent que l'INS, les erreurs de position et d'attitude
s'accumulent. La méthode de localisation la plus basique et la plus simple consiste à
utiliser des encodeurs fixés aux roues du robot. Cependant, des erreurs de mesure peuvent
se produire en raison du glissement entre la roue et le sol.

4.1.2 Localisation absolue :


Les techniques de localisation absolue déterminent la position du robot par rapport à un
cadre de référence global, par exemple en utilisant des points de repère. La technique la plus
populaire est le GPS. Elle est basée sur des signaux satellites pour déterminer la position
absolue (longitude, latitude et altitude) d'un objet sur la Terre. Dans le cas de la localisation
absolue, l'erreur est atténuée lorsque des mesures sont disponibles. La position du robot ne
dépend pas du temps et de la position initiale.

4.2 Planification de la trajectoire :

La planification de la trajectoire est une question importante car elle permet à un robot
de se rendre d'un point A à un point B. Les algorithmes de planification de trajectoire sont
mesurés par leur complexité de calcul. La faisabilité de la planification de mouvement en
temps réel dépend du plan de la carte, de la localisation du robot et du nombre d'obstacles. Sur
le plan topologique, le problème de la planification de trajectoire est lié au problème du plus
court chemin, qui consiste à trouver une route entre deux nœuds d'un graphe.

4.2.1 Recherche basée sur les grilles :


Les approches basées sur la grille superposent une grille à l'espace de configuration, et
supposent que chaque configuration est identifiée par un point de grille. À chaque point de
grille, le robot est autorisé à se déplacer vers les points de grille adjacents tant que la ligne qui
les sépare est entièrement contenue dans un espace libre. L'ensemble des actions est ainsi
discrétisé et des algorithmes de recherche sont utilisés pour trouver un chemin entre le point
de départ et l'objectif.
Figure 5:Grid-Based Search

4.2.2 Algorithmes basés sur l'échantillonnage :


Les algorithmes basés sur l'échantillonnage Les algorithmes basés sur l'échantillonnage
représentent l'espace de configuration par une feuille de route de configurations
échantillonnées. Un algorithme de base échantillonne N configurations dans la carte, et retient
celles qui sont en espace libre pour les utiliser comme jalons. Ensuite, une feuille de route est
construite qui relie deux jalons P et Q si le segment de ligne PQ est complètement en espace
libre.

Figure 6:Roadmap

4.2.3 Algorithmes de Dijkstra :


L'algorithme de Dijkstra est un algorithme permettant de trouver les plus courts chemins
entre les nœuds d'un graphe. Illustration de la recherche de l'algorithme de Dijkstra pour
trouver le chemin d'un nœud de départ, situé en bas à gauche, à un nœud d'arrivée, situé en
haut à droite, dans un problème de planification du mouvement d'un robot :
Figure 7:Dijkstra algorithmes

4.2.4 Feuille de route probabiliste :


Le planificateur probabiliste est un algorithme de planification de mouvement en
robotique, qui résout le problème de la détermination d'un chemin entre une configuration de
départ du robot et une configuration cible tout en évitant les collisions. L'idée de base de la
PRM est de prendre des points aléatoires dans l'espace de configuration du robot, de les tester
pour savoir s'ils sont dans l'espace libre, et d'utiliser un planificateur local pour tenter de
connecter ces configurations à d'autres configurations proches.

Figure 8:Probalistic roadmap


4.3 Inflation de la carte des coûts :

La carte des coûts utilise les données des capteurs et les informations de la carte statique pour
stocker et mettre à jour les informations sur les obstacles dans le monde.

Inflation est le processus de propagation des valeurs de coût hors des cellules occupées
qui diminuent avec la distance. À cette fin, nous définissons cinq symboles spécifiques pour
les valeurs de la carte des coûts en relation avec un robot.

 Le coût létal signifie qu'il existe un obstacle réel dans une cellule. Par conséquent, si le
centre du robot se trouvait dans cette cellule, le robot serait évidemment en collision.
 Le coût inscrit signifie qu'une cellule se trouve à une distance inférieure au rayon
inscrit du robot par rapport à un obstacle réel. Par conséquent, le robot est
certainement en collision avec un obstacle si son centre se trouve dans une cellule dont
la distance est égale ou supérieure au coût inscrit.
 Le coût de la circonstance est similaire à celui de l'inscription, mais il utilise le rayon
circonscrit du robot comme distance de coupure. Ainsi, si le centre du robot se trouve
dans une cellule à cette valeur ou au-dessus, le fait qu'il entre en collision avec un
obstacle ou non dépend de l'orientation du robot.
 L'espace libre signifie que rien ne doit empêcher le robot de s'y rendre.
 Unknown cost signifie qu'il n'y a pas d'information sur une cellule donnée.
L'utilisateur de la carte des coûts peut l'interpréter comme bon lui semble.
 Tous les autres coûts se voient attribuer une valeur comprise entre Espace libre et
Possiblement circonscrit en fonction de leur distance par rapport à une cellule létale et
de la fonction de décroissance fournie par l'utilisateur.
Figure 9: Inflation

5. Apprentissage profond et vision par ordinateur pour


l’agriculture :
Nous avons fait encore plus de progrès pour atteindre l'incroyable capacité visuelle et
avoir plusieurs versions avancées des systèmes qui peuvent prendre des photos de même
façon que l'œil humain qui peut capturer la lumière et la couleur. Mais il s'est avéré que c'était
la partie facile. Comprendre de quoi s’agit la photo est beaucoup plus difficile. Le cerveau
humain peut regarder une image et savoir immédiatement de quoi il s'agit. Mais un ordinateur
n'a pas le même avantage.

La vision par ordinateur relève des défis de plus en plus complexes et voit une précision
qui rivalise avec les humains effectuant les mêmes tâches de reconnaissance d'image. Mais
comme les humains, ces modèles ne sont pas parfaits. Ils font parfois des erreurs et c'est
pourquoi nous devons utiliser certains outils pour former les données et obtenir une meilleure
précision.

5.1. Apprentissage en profondeur (DL Deep learning) :


L’apprentissage profond (ou deep learning) est un apprentissage automatique (ML)qui
permet à l’ordinateur d’apprendre par l’expérience et de comprendre le monde en termes de
hiérarchie de concepts. Parce que l’ordinateur recueille des connaissances à partir de
l’expérience, il n’est pas nécessaire qu’un opérateur humain spécifie formellement toutes les
connaissances dont l’ordinateur a besoin.

Il est devenu un outil central qui s'intéresse à résoudre le problème de la reconnaissance


faciale, de la reconnaissance vocale, de la vision par ordinateur, du traitement automatisé du
langage.

5.2. Un réseau de neurones artificiels (ANN Artificial neural


network) :

Le deep Learning s'appuie sur un réseau de neurones artificiels s'inspirant


du cerveau humain. Ce réseau est composé de dizaines voire de centaines de « couches »
de neurones, chacune recevant et interprétant les informations de la couche précédente.

Il existe plusieurs types de réseaux neuronaux artificiels. Ils peuvent être classés en


fonction de leur : structure, flux de données, neurones utilisés et leur densité, couches et leurs
filtres d'activation de profondeur, etc.

5.3. Réseau de neurones convolutifs :

Le réseau de neurones à convolution (CNN ou ConvNet ,  Convolutional Neural


Network en anglais ) est l’un des algorithmes les plus répandus pour le Deep Learning, un
type de Machine Learning où le modèle apprend à réaliser des tâches de classification
directement à partir d’images, de vidéos on de textes.

Les CNN sont particulièrement utiles pour identifier des modèles dans les images afin
de reconnaître des objets, des visages et des scènes. Ils apprennent directement à partir de
données d’images et utilisent des modèles pour classer les images, éliminant ainsi la nécessité
d’effectuer une extraction manuelle des caractéristiques.

L’utilisation des CNN pour le Deep Learning s’est répandue pour trois raisons
importantes :
 Ils éliminent la nécessité d’effectuer une extraction manuelle des caractéristiques, car
ils les apprennent directement.
 Ils produisent d’excellents résultats de reconnaissance.
 Ils peuvent être réentraînés pour effectuer de nouvelles tâches de reconnaissance, ce
qui vous permet de vous appuyer sur des réseaux préexistants.

6.Framework :
Les Framework facilitent la construction d'algorithmes d'apprentissage approfondi qui
sont d'une complexité considérable. Le cadre d'apprentissage approfondi que nous choisissons
d'utiliser dépend en fin de compte de ce que nous essayons de faire et de la façon dont nous
travaillons déjà. Les Framework les plus connus sont :

 Tensorflow : L'une des bibliothèques d'apprentissage profond les plus populaires.


Positionnée comme un "système d'apprentissage machine de seconde génération",
Tensorflow est une bibliothèque basée sur Python capable de fonctionner sur plusieurs
CPU et GPU. Elle est disponible sur toutes les plateformes, de bureau et mobiles. Elle
prend également en charge d'autres langages tels que C++ et peut être utilisée
directement pour créer des modèles d'apprentissage profond.
 Keras : Bien que Tensorflow soit une très bonne bibliothèque d'apprentissage
approfondi, la création de modèles en utilisant uniquement Tensorflow peut être un
défi, car il s'agit d'une bibliothèque de niveau assez bas et elle peut être assez
complexe à utiliser pour un débutant. Relever ce défi, Keras a été conçu comme une
interface simplifiée permettant de construire des réseaux neuronaux efficaces en
quelques lignes de code seulement et peut être configuré pour fonctionner en plus de
Tensorflow
 Caffe : Construit dans un souci d'expression, de rapidité et de modularité, Caffe est
l'une des premières bibliothèques d'apprentissage approfondi. Il s'agit d'une
bibliothèque C++ qui possède également une interface Python et trouve son
application principale dans la modélisation des réseaux neuronaux convolutifs. L'un
des principaux avantages de l'utilisation de cette bibliothèque est que vous pouvez
obtenir un certain nombre de réseaux préformés directement à partir du zoo de
modèles Caffe, disponible pour une utilisation immédiate.
 Darknet est un Framework de réseau neuronal open source écrit en C et CUDA. Il est
rapide, facile à installer et prend en charge le calcul CPU et GPU.et contraire à les
autres Framework, Darknet est dédié juste pour les algorithmes yolo

7.Description de notre proposition de solution :


Pour résoudre le problème de la navigation, nous devons répondre à ces trois questions
principales :

 Pour déterminer l'emplacement du Robot pendant qu'il est en mouvement, nous


utiliserons la technique de l'odométrie avec un capteur laser pour éclairer les erreurs.
 Pour déterminer l'emplacement du but, nous allons utiliser la carte.
 Pour déterminer la planification de la trajectoire, nous devons créer une méthode
d'évaluation en temps réel. Cette méthode met en œuvre l'algorithme de Dijkstra, qui
consiste à créer la planification optimale du chemin en temps réel et en fonction de
l'état de l'environnement à chaque mouvement du robot.
 Pour déterminer l’identification des arbres, nous devons utiliser la Framework darknet
qui est dédié juste pour les algorithmes yolo.

8.Conclusion
Ce chapitre contient une présentation des techniques dont nous aurons besoin pour
développer notre solution. Nous avons présenté quelques robots autonomes utilisent sur
l’agriculture, et le concept de navigation et la notion de computer vision et Framework, et une
description de notre proposition de solution.
Chapitre 3 : Environnement de mise en œuvre

1.Introduction :
Nous avons besoin d'un environnement virtuel et d'un environnement réel pour créer
une solution. Dans ce chapitre, nous allons présenter l'environnement matériel et logiciel et
générer les combinaisons les plus critiques que nous appliquerons pour tester notre solution.

2. Environnement matériel :
Pour tester notre solution, nous avons besoin d’un matériel qui possède toutes les
spécifications techniques d'un robot

2.1. NVIDIA Jetson Nano :

Le kit de développement NVIDIA Jetson Nano est un système embarqué sur le module
(Som) avec un ARM Cortex-A57 à quatre cœurs, 4 Go de RAM LPDDR4 64 bits et un GPU
NVIDIA Maxwell 128 cœurs intégré. En matière de performance IA, les variantes Raspberry
Pi offre 21,5 GFLOPS tandis que le Jetson Nano offre 472 GFLOPS (c'est-à-dire 22 fois plus
rapides). Le Jetson Nano peut gérer un taux de rafraîchissement de 15 à 20 images par
seconde pour l'exécution du modèle UNet. En outre, si l'on tient compte des calculs de
traitement des données provenant de capteurs périphériques, le Jetson Nano est préféré à la
carte Raspberry pour un meilleur traitement. Ce qui en fait le choix idéal pour le processeur
principal du robot agricole.
Figure 10:Jetson Nano Developer Kit

2.2. Caméra de profondeur :

Asus Xtion PRO utilise un capteur infrarouge et une technologie de détection de


profondeur adaptative pour capturer les mouvements du corps en temps réel des utilisateurs,
ce qui rend le suivi du corps plus précis.

Figure 11:Asus xtion pro live motion sensor 3d scanner

La figure 13 présente un exemple d'image capturée par la caméra de profondeur du


robot, dans un environnement réel.

Figure 12:Image capturée par la caméra de profondeur

2.3. Télémètre laser à balayage :


Le télémètre laser à balayage Hokuyo URG-04LX-UG01 [18] est un petit scanner laser
abordable et précis, parfait pour les applications robotiques. L'URG-04LX-UG01 est capable
d'indiquer des distances dans un arc de 240°. Sa consommation d'énergie, 5V 500ma, lui
permet d'être utilisé sur des plateformes à piles. Il est idéal pour les étudiants et les chercheurs
qui s'intéressent à la robotique.

Figure 13:Télémètre laser à balayage

2.4. Capteur à ultrasons :

Les capteurs à ultrasons utilisent les ondes sonores plutôt que la lumière, ce qui les rend
idéaux pour la détection stable de surfaces inégales, de liquides, d'objets transparents et
d'objets dans des environnements sales. Ces capteurs (figure 15) fonctionnent bien pour les
applications qui nécessitent des mesures précises entre des objets fixes et mobiles.

Figure 14:Capteur à ultrasons

2.5. Capteur infrarouge :


Un capteur infrarouge est un dispositif électronique qui émet un rayonnement
infrarouge afin de détecter un mouvement. La figure 16 présente les cinq capteurs infrarouges
du robot.

Figure 15:Capteur infrarouge

3.Environnement logiciel :

3.1.ROS :

Le Robot Operating System (ROS) est un cadre flexible pour l'écriture de logiciels pour
robots. Il s'agit d'une collection d'outils, de bibliothèques et de conventions qui visent à
simplifier la tâche de création de comportements robotiques complexes et robustes sur une
grande variété de plateformes robotiques.

Figure 16:Logo ROS

ROS fournit des services de système d'exploitation standard tels que l'abstraction
matérielle, le contrôle des dispositifs de bas niveau, l'implémentation de fonctionnalités
couramment utilisées, le passage de messages entre processus et la gestion des paquets. Les
ensembles de processus ROS en cours d'exécution sont représentés dans une architecture de
graphe où le traitement a lieu dans des nœuds qui peuvent recevoir, afficher et multiplexer des
messages de capteurs, de contrôle, d'état, de planification, d'actionneur et autres.
Figure 17:ROS Architecture

Les principales bibliothèques clientes de ROS (C++, Python, LISP) sont orientées vers
un système de type Unix, principalement en raison de leur dépendance à l'égard de vastes
collections de logiciels à code source ouvert.

Figure 18:ROS Middleware

3.1.1. Espace de travail :


Pour configurer un espace de travail catkin dans lequel un ou plusieurs paquets catkin
peuvent être construits, nous devons utiliser ces commandes :

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace

Pour construire l'espace de travail :

$ cd ~/catkin_ws/
$ catkin_make

Pour finir, nous devons sourcer workspace en sourçant le fichier setup.bash :

$ source devel/setup.bash

3.1.2. Système de fichiers :


ROS est basé sur deux concepts généraux pour les fichiers : Le paquet et la pile

a. Paquet
Les logiciels de ROS sont organisés en paquets. Un paquet peut contenir des
nœuds ROS, une bibliothèque indépendante de ROS, des fichiers de configuration ou
tout autre élément qui constitue logiquement un module utile. L'objectif de ces paquets
est de fournir cette fonctionnalité utile d'une manière facile à consommer afin que le
logiciel puisse être facilement réutilisé.
b. Pile
Les paquets dans ROS sont organisés en piles ROS. Alors que l'objectif des
paquets est de créer des collections minimales de code pour une réutilisation facile,
l'objectif des piles est de simplifier le processus de partage du code. Les piles sont le
principal mécanisme de distribution de logiciels dans ROS.

3.1.3. Les notions de base :


Dans ce paragraphe, nous décrivons certaines notions utilisées dans ce travail

a. Nœud
Un nœud est un processus qui effectue des calculs. Les nœuds sont combinés
ensemble dans un graphe et communiquent entre eux en utilisant des sujets de
streaming. Ces nœuds sont destinés à fonctionner à une échelle fine ; un système de
commande de robot comprendra généralement de nombreux nœuds.
Tous les nœuds en cours d'exécution ont un nom de ressource graphique qui les
identifie de manière unique au reste du système. Un nœud ROS est écrit à l'aide d'une
bibliothèque client ROS, telle que roscpp ou rospy.

Figure 19: Nodes


b. Master :
Le maître ROS fournit des services de dénomination et d'enregistrement au reste
des nœuds du système ROS. Il suit les éditeurs et les abonnés aux sujets ainsi qu'aux
services. Le rôle du maître est de permettre aux nœuds ROS individuels de se localiser
les uns les autres. Une fois que ces nœuds se sont localisés, ils communiquent entre
eux en mode peer-to-peer.

Figure 20:Master and nodes

c. Sujets :
Les sujets sont des bus nommés sur lesquels les nœuds échangent des messages.
Les sujets ont une sémantique de publication/abonnement anonyme, qui dissocie la
production d'informations de leur consommation. En général, les nœuds ne savent pas
avec qui ils communiquent. Au lieu de cela, les nœuds intéressés par les données
s'abonnent au sujet pertinent ; les nœuds qui produisent des données publient au sujet
pertinent. Il peut y avoir plusieurs éditeurs et abonnés à un sujet.

Figure 21:Topic
d. Services :
La demande/réponse se fait via un service [28] qui est défini par une paire de
messages : un pour la demande et un pour la réponse. Un nœud ROS fournisseur
propose un service sous un nom de chaîne, et un client appelle le service en envoyant
le message de demande et en attendant la réponse.

Figure 22:Exemple de service entre deux nœuds

e. Messages :
Les nœuds communiquent entre eux en publiant des messages sur des sujets. Un
message est une structure de données simple. Les types primitifs standard comme les
entiers, les virgules flottantes, les booléens sont supportés, ainsi que les tableaux de
types primitifs.

Figure 23:Messages entre les nœuds

3.2 L'outil RViz :

ROS Visualisation (RViz) est un visualiseur 3D permettant d'afficher les données des
capteurs et les informations d'état de ROS. En utilisant RViz, vous pouvez visualiser la
configuration actuelle de Baxter sur un modèle virtuel du robot. Vous pouvez également
afficher des représentations en direct des valeurs de capteurs provenant de ROS Topics,
notamment les données de caméras, les mesures de distance infrarouge, les données laser, les
données de sonar, etc.
Figure 24:Logo RViz

3.3 Le simulateur de gazebo :

La simulation de robots est un outil essentiel dans la boîte à outils de tout roboticien. Un
simulateur bien conçu permet de tester rapidement des algorithmes, de concevoir des robots et
d'effectuer des tests de régression à l'aide de scénarios réalistes. Gazebo offre la possibilité de
simuler avec précision et efficacité des populations de robots dans des environnements
intérieurs et extérieurs complexes. Gazebo est doté d'un moteur physique robuste, de
graphiques de haute qualité et d'interfaces programmatiques et graphiques pratiques.

Figure 25:Logo GAZEBO

3.4. Python (langage de programmation) :

Python est un langage de programmation dynamique interprété de haut niveau,


polyvalent et largement utilisé. Sa philosophie de conception met l'accent sur la lisibilité du
code, et sa syntaxe permet aux programmeurs d'exprimer des concepts en moins de lignes de
code que ne le permettent des langages tels que C++ ou Java.
Figure 26:Logo python

3.5. YAML :

YAML est un langage de sérialisation des données qui reprend les concepts des
langages de programmation tels que C, Perl et Python, ainsi que les idées de XML et du
format de données du courrier électronique. Nous allons utiliser le langage YAML pour
modifier les fichiers de la carte des coûts.

Figure 27:YAML logo

3.6 .XML :

Le langage de balisage extensible est un langage de balisage qui définit un ensemble de


règles permettant de coder des documents dans un format lisible par l'homme et par la
machine.

4. Combinaison de matériel et de logiciels :

4.1 Connexion de l'hôte :

Pour utiliser la navigation autonome ou encore créer une carte sur la réalité, nous
devons nous connecter sur le robot. Il faut donc modifier le fichier. bashrc en redéfinissant le
Master et le host.

Pour ouvrir le fichier. bashrc, nous devons taper cette commande sur le terminal comme
dans la figure 29.
$ sudo gedit ~/.bashrc

Figure 28:Exemple . bashrc file

Bien que, nous devons nous connecter sur le Wi-Fi du robot, et ensuite taper cette
commande sur le terminal :

$ ssh user@robot_IP

Enfin, on tape le mot de passe s'il est requis. La figure 30 illustre l'exemple de
connexion au robot.

4.2 Cartes :

Pour créer une carte sur la réalité, nous devons nous connecter au robot, puis utiliser le
logiciel gmapping pour la construire. Lorsque la carte est créée, nous pouvons l'utiliser en
simulation ou dans la réalité pour la navigation.

4.2.1 Description du logiciel Gmapping :


La carte est construite par des scans avec les données du télémètre laser et de
l'odomètre. Elle comporte trois niveaux ou couleurs, le blanc pour indiquer une zone libre, le
noir pour l'obstacle et le gris pour les zones inexplorées.

Pour construire une carte sur la simulation, nous devons lancer cinq nœuds, comme :

$ roslaunch robot_simulation robot_gazebo.launch


$ roslaunch robot_simulation robot_state_publisher.launch
$ roslaunch robot_teleop keyboard_ZQSD.launch
$ roslaunch safe_teleop.py
$ roslaunch robot_simulation gmapping.launch

Figure 29: Cartographie de l'architecture logicielle

La figure 30 montre l'architecture logicielle de gmapping.

Le nœud de clavier reçoit les commandes de l'utilisateur et les publie sur la vitesse de
commande dans le sujet (cmd_vel_in). Pour recevoir la commande de l'utilisateur, la
téléopération sécurisée s'abonne à ce sujet et modifie cette commande si nécessaire, et la
publie dans un sujet nommé cmd_vel (command velocity).

Le simulateur gazebo s'abonne à ce sujet et déplace le robot en fonction de ces


commandes.

Bien que gazebo publie deux sujets, l'un nommé Transforms Frames (tf) qui contient les
données de l'odomètre et l'autre nommé scan, qui contient les données du laser. L'éditeur de
l'état du robot RViz s'abonne au sujet tf et reçoit les données de l'odomètre du simulateur
gazebo, pour modifier la position du robot sur RViz. Ensuite, l'éditeur de l'état du robot publie
les données de l'odomètre du robot sur un sujet nommé tf static. Gmapping s'abonne aux
sujets tf, tf_static et scan pour obtenir respectivement les données de l'odomètre et les
données laser pour construire la carte. Cependant, gmapping publie également un sujet tf. Les
positions en odométrie (odom) sont continuées, mais en raison de la nature de l'odométrie,
elles accumulent continuellement des erreurs. Pour corriger ces erreurs, gmapping a introduit
la carte de transformation odom, il s'agit de la correction calculée sur la base des scans laser
Figure 30: Map construction on simulation

map_server est un nœud ROS qui lit une carte sur le disque et la propose via un service
ROS.

Pour sauvegarder la carte construite, nous devons exécuter le nœud map_server en


tapant cette commande :

$ rosrun map_server map_saver -f map_name

4.2.2 Téléchargement de cartes :


Pour lancer une carte pour la navigation, nous devons ajouter le chemin de la carte dans
le fichier robot_navigation_sim.launch. La Figure 32 montre l'exemple de la carte chargée
nommée buvette.sdf.
Figure 31: file robot_navigation_sim.launch

Si la navigation se fait par simulation, il faut alors ajouter aussi le chemin de la carte
dans le fichier robot_gazebo.launch.

La Figure 33 montre l'exemple de la carte chargée nommée buvette.yaml.

Figure 32:Le fichier robot_gazebo.launch


5. Conclusion :
Dans ce chapitre, nous avons présenté le matériel et l'environnement logiciel. Nous
avons également décrit les techniques les plus importantes comme la connexion à l'hôte, la
création et le téléchargement de cartes. Nous aurons besoin de ces implémentations pour
réaliser notre solution et pour la valider pendant la simulation et dans la réalité.

Vous aimerez peut-être aussi