You are on page 1of 35

Université Ibn Tofail

Faculté des sciences Kenitra


Master Spécialisé

Robot Détecteur D’obstacles

Encadré par :
Pr YOUNES ADNANI

Année Universitaire 2023-2024


TABLE DES MATIERES :

Partie 1 : Etude de la partie Hardware..........................................................................................6


I. Introduction :......................................................................................................................................6
II. Matériel nécessaire :.........................................................................................................................6
1. La carte Arduino............................................................................................................................6
1.1. Choix du type de la carte.....................................................................................................7
1.2. Composantes de la carte Arduino UNO...........................................................................7
2 Capteurs ultra-son.........................................................................................................................8
2-1 Fonctionnement du capteur................................................................................................8
3 Moteur DC........................................................................................................................................9
4 Module Bluetooth HC-05................................................................................................................10
4-1Description :................................................................................................................................10
4-2Branchement du HC-05 :..........................................................................................................11
5 Utiliser un L298N pour moteur DC avec une Arduino.........................................................11
6 Les fils connecteurs....................................................................................................................13
7 Batteries :(alimentation de voiture) la batterie Li-ion 18650 offre une flexibilité dans sa
configuration en série ou en parallèle, permettant d'adapter la capacité et la tension en fonction des
besoins spécifiques de l'application.............................................................................................................14
III. Schémas générale :.....................................................................................................................14
Partie 2 : Étude de la partie Software..........................................................................................16
I. Plateforme de programmation Arduino......................................................................................16
II. Ubuntu 2024 et VMWare WorkStation.........................................................................................18
III. ROS Noetic :..................................................................................................................................18
1 Organisation de l’espace de travail :......................................................................................18
2 Installation de ROS :...................................................................................................................19
3 Setup d’environnement :............................................................................................................19
4 Création du Workspace :...........................................................................................................20
5 Compilation du pakage :............................................................................................................20
6 Création d’une pakage dans ROS :.........................................................................................20
7 Création des node :.....................................................................................................................21
8 Le code qui assure le contrôle du robot :..............................................................................22
9 le ROS Master :.............................................................................................................................22
IV. NODE RED.....................................................................................................................................23
1 Lancement Node RED :..............................................................................................................24
2 SNAPPY ROS :..............................................................................................................................25
2-1 Définition :.................................................................................................................................25

2
2-2 Rôle :............................................................................................................................................25
2-3 Installation de la bibliothèque Snappy-ros :.................................................................25
3-Installation Firebase dans NodeRED :........................................................................................26
4 La liaison entre Firebase, Node Red et Topics :.......................................................................26
VI. Création d’application, en utilisant le site MIT app Inventor :..........................................27
VII. L’application est créé :...............................................................................................................28
VIII. Code Arduino................................................................................................................................28
IX. Connexion Bluetooth avec le ROS :........................................................................................32
X. Les étapes pour contrôler notre robot :.....................................................................................34

3
Liste de figure :

FIGURE 1:UNE CARTE ARDUINO UNO..................................................................................7


FIGURE 2:CAPTEUR ULTRA-SON HC-SR04.............................................................................8
FIGURE 3:DESCRIPTION DU CAPTEUR ULTRA-SON HC-SR04.....................................................8
FIGURE 4:ILLUSTRATION DU SIGNAL TRIGGER ET ECHO.........................................................9
FIGURE 5:MOTEUR DC.....................................................................................................10
FIGURE 6:MODULE BLUETOOTH HC-05...............................................................................10
FIGURE 7: SYNOPTIQUE DU DRIVER MOTOR.........................................................................11
FIGURE 8:STRAPS............................................................................................................13
FIGURE 9:: BATTERIES DE 3.7V..........................................................................................14
FIGURE 10:LE LOGICIEL ARDUINO.......................................................................................16

4
Introduction générale au projet :

Ce projet s'inscrit dans le cadre du développement d'une application Cloud Robotics utilisant
le ROS (Robot Operating System). L'objectif est de tirer parti du potentiel du cloud
computing pour renforcer les capacités des systèmes embarqués et créer des robots
intelligents capables d'interagir avec leur environnement de manière autonome et efficace.

Nous nous concentrons particulièrement sur la conception et la réalisation d'un robot capable
de détecter les obstacles et de les éviter de manière autonome. Pour ce faire, nous utiliserons
des composants matériels tels qu'un Arduino Uno, des capteurs à ultrasons HC-SR04, des
moteurs DC, et autres. Ce robot sera en mesure de détecter la présence d'obstacles grâce à ses
capteurs à ultrasons, et d'ajuster sa trajectoire pour les éviter en contrôlant ses moteurs DC.

En parallèle, nous mettrons en place une infrastructure cloud et un système ROS pour offrir
au robot une puissance de calcul et de stockage supplémentaire, ainsi qu'une connectivité
avec d'autres systèmes et services en ligne. Cette approche cloud Robotics permettra au robot
d'accéder à des données en temps réel, de communiquer avec d'autres robots et systèmes, et
d'améliorer ses capacités de manière significative.

Ce rapport détaillera les différentes phases du projet, depuis la conception matérielle jusqu'à
la programmation du comportement du robot en passant par la mise en place de
l'infrastructure cloud et du système ROS. Nous évaluerons également les performances de
notre solution et discuterons des perspectives d'amélioration pour les futures
itérations du projet.

Partie 1 : Etude de la partie Hardware


5
I. Introduction :
L'objectif de ce projet d'électronique est de créer un robot détecteur de présence qui se
déplace dans une pièce et évite les obstacles lorsqu'il en rencontre. Les “yeux” du robot sont
un capteur à ultrasons (par exemple HC-SR04). Ce capteur est connecté à une carte Arduino.
Lorsque le capteur envoie l'information à l'Arduino qu'il y a un obstacle devant lui, l'Arduino
doit envoyer une instruction aux moteurs qui contrôlent les roues pour éviter l'obstacle.

II. Matériel nécessaire :

L’idée est d’utiliser une carte Arduino pour lire les données reçues par un, ou plusieurs,
capteur(s) à ultrasons.
Lorsque le capteur détecte un obstacle devant lui, l’Arduino doit envoyer des instructions aux
moteurs qui pilotent les roues du robot pour l’éviter. Le robot serait en partie constitué de
châssis et de composantes électroniques (Arduino, capteur à ultrasons, moteurs, …) serait
fixé au châssis simplement à l’aide d’une colle.
Les matériels dont on a besoin pour réaliser ce robot sont :
 Arduino UNO.
 Un capteur à ultrasons HC-SR04.
 Deux moteurs DC pour piloter les roues du robot.
 Une pile de 11V et des connecteurs pour alimenter les moteurs DC.
 L298N motor driver
 Deux roues
 Module Bluetooth HC05
 Des câbles jumper

1. La carte Arduino

Une carte Arduino est une petite carte électronique équipée d’un microcontrôleur. Le
microcontrôleur permet, à partir d’événements détectés par des capteurs, de programmer et
commander des actionneurs ; la carte Arduino est donc une interface programmable.
Elle peut être programmé pour analyser et produire des signaux électriques, de manière à
effectuer des tâches très diverses comme le contrôle des appareils domestiques, éclairage,
chauffage, le pilotage d’un robot, de l’informatique embarquée, etc.

Figure 1:Une carte Arduino UNO


6
1.1. Choix du type de la carte

Il existe plusieurs types de cartes Arduino, on s’est orienté uniquement vers le type le
plus fréquent qui est la carte Arduino UNO Pour réaliser ce montage, on doit assurer la
liaison entre chaque composante électronique et notre carte Arduino.
En totale on aura besoin d’une carte Arduino qui contient au moins 9 broches numérique, et
aussi qui sera capable d’exécuter le plus vite possible l’algorithme gravé dans sa mémoire.
En revanche, la carte Arduino UNO est la carte la plus convenable à cette situation vue
qu’elle possède 14 broches numériques (dont 6 avec PWM) et 6 broches d’entrée analogique.

1.2. Composantes de la carte Arduino UNO

Une carte Arduino UNO se compose essentiellement de :


• Prise jack : Permet de brancher une alimentation (pile, batterie, adaptateur secteur,
+ au centre Vin 7 à 12 V).
• Microcontrôleur : stocke le programme et l’exécute.
• Entrées analogiques : Permet de brancher des capteurs et des détecteurs analogiques.
16
• Connexion USB (Universal Serial Bus) : Permet d’alimenter la carte en énergie électrique
(5V). Permet de téléverser le programme dans la carte.
• Entrées et sorties numériques (Digital) : Permet de brancher des actionneurs. Permet de
brancher des détecteurs.

2 Capteurs ultra-son

Figure 2:Capteur ultra-son HC-SR04


Le capteur HC-SR04 est un capteur à ultrason low cost. Ce capteur fonctionne avec une
tension d'alimentation de 5 volts, dispose d'un angle de mesure de 15° environ et permet de
faire des mesures de distance entre 2 centimètres et 4 mètres avec une précision de 3mm (en
théorie, dans la pratique ce n'est pas tout à fait exact).

7
2-1 Fonctionnement du capteur

Figure 3:Description du capteur ultra-son HC-SR04.

Figure 4:Illustration du signal TRIGGER et ECHO.

Le principe de fonctionnement du capteur est entièrement basé sur la vitesse du son.


Voilà comment se déroule une prise de mesure : On envoie une impulsion HIGH de 10μs sur
la broche TRIGGER du capteur.
Le capteur envoie alors une série de 8 impulsions ultrasoniques à 40KHz (inaudible
pour l'être humain, c'est quand plus agréable qu'un biiiiiiiip).
Les ultrasons se propagent dans l'air jusqu'à toucher un obstacle et retourne dans
l'autre sens vers le capteur.
Le capteur détecte l'écho et clôture la prise de mesure.
Le signal sur la broche ECHO du capteur reste à HIGH durant les étapes 3 et 4, ce qui
permet de mesurer la durée de l'aller-retour des ultrasons et donc de déterminer la
distance.
N.B. Il y a toujours un silence de durée fixe après l'émission des ultrasons pour éviter de
recevoir prématurément un écho en provenance directement du capteur.
8
3 Moteur DC

Un moteur DC est un convertisseur électromécanique permettant la conversion


bidirectionnelle d’énergie entre une installation électrique parcourue par un courant continu
et un dispositif mécanique. Les moteurs DC ont ainsi la particularité de pouvoir fonctionner
dans les 2 sens, suivant la manière dont le courant lui est soumis. Les moteurs DC sont
pilotés par un contrôleur moteur. Les contrôleurs de moteurs électriques permettent de piloter
un
moteur en vitesse, en position ou en couple en fournissant la puissance électrique et le signal
adéquat.

Figure 5:Moteur DC.

4 Module Bluetooth HC-05

Le Bluetooth est un protocole de communication qui facilite l'échange bidirectionnel de


données sur de courtes distances en utilisant des ondes radio UHF dans la bande de fréquence
de 2,4 GHz. Son objectif est de simplifier les connexions entre appareils électroniques à
proximité en éliminant le besoin de câbles. Par exemple, il permet de remplacer les câbles
entre ordinateurs, tablettes, haut-parleurs et téléphones mobiles.

9
Figure 6:module Bluetooth HC-05

4-1Description :
Ce module Bluetooth permet d'ajouter une connexion série sans fil Bluetooth sur votre
ARDUINO. Il communique avec le microcontrôleur via un port série.
Spécifications
 100 % compatible avec
ARDUINO
 Tension nominale : 3,3 V- 5
V MAX
 Antenne de 2,4 GHz
intégrée
 Contrôlez votre
ARDUINO sans fil

4-2Branchement du HC-05 :

- RXD -> TXD de l’Arduino(réception des données).


- TXD -> RXD de l’Arduino (transmission des données).
- GND -> connecté au pin GND de la plaque ARDUINO GND
- VCC -> source d’alimentation 5V

5 Utiliser un L298N pour moteur DC avec une Arduino


Le driver moteur L298N est un composant électronique utilisé pour contrôler la vitesse et la
direction de deux moteurs à courant continu simultanément. Il fonctionne avec des moteurs
ayant une tension de 5 à 35V et un courant de crête pouvant atteindre 2A.

10
Principe de fonctionnement

Figure 7: Synoptique du driver


motor

Description
Le driver moteur L298N est un circuit monolithique intégré dans des boîtiers Milliwatt et
PowerSO20 à 15 broches. Il s'agit d'un pilote à double pont complet haute tension et à
courant élevé conçu pour accepter les charges inductives d'entraînement de sable de niveau
logique TTL standard telles que les relais, les solénoïdes, les moteurs à courant continu et pas
à pas. Deux entrées de validation sont fournies pour activer ou désactiver le dispositif
indépendamment des signaux d'entrée. Les émetteurs des transistors inférieurs de chaque
pont sont connectés ensemble et la borne externe correspondante peut être utilisée pour la
connexion d'une résistance de détection externe. Une entrée d'alimentation supplémentaire
est fournie pour que la logique fonctionne à une tension inférieure.

Schéma de principe du module d'entraînement du moteur L289N

11
Caractéristiques :

Tension de fonctionnement élevée, pouvant aller jusqu'à 40 volts;


Grand courant de sortie, le courant de crête instantané peut aller jusqu'à 3A;
Avec une puissance nominale de 25 W;
Deux ponts en H intégrés, haute tension, grand courant, pilote de pont complet, qui
peuvent être utilisés pour entraîner des moteurs à courant continu, des moteurs pas à
pas, des bobines de relais et d'autres charges inductives.
Utilisation du signal de niveau logique standard pour contrôler.
Capable de conduire un moteur pas à pas à deux phases ou un moteur à pas à quatre
phases et des moteurs à courant continu à deux phases.
Adoptez un condensateur de filtre haute capacité et une diode de roue libre qui protège
les appareils du circuit contre les dommages causés par le courant inverse d'une
charge inductive, améliorant ainsi la fiabilité
Le module peut utiliser le tube stabilisateur 78M05 intégré pour obtenir 5 V de
l'alimentation. Mais pour protéger la puce du 78M05 contre les dommages, lorsque la
tension du variateur est supérieure à 12v, une alimentation logique externe 5v doit être
utilisée.
tension d’entraînement : 5-35 V; tension logique: 5 V
taille du circuit imprimé : 4,2 x 4,2 cm

Le module L298N permet de commander séparément deux moteurs à courant continu DC de


3 à 30V, ou un moteur pas à pas , ce dernière fabrique en 1930, leur véritable développement
est lié à l’événement de la micro-informatique (microprocesseur).Le moteur pas à pas peut
remplir deux fonctions :
- conversion d’énergie électrique en énergie mécanique (c’est le moteur classique).
- conversion d’information numérique en un positionnement angulaire on linéaire.
Driver moteur L298N fonctionne avec une interface de commande TTL 5V (donc compatible
avec ARDUINO ou avec de nombreux autres microcontrôleur en basse tension).il comporte
deux ponts en H pour commuter les courants (2A par pont en crête, 20W). Ce module permet
de faire varier la vitesse de rotation (en modulation PWM) et d’inverser le sens de rotation
des moteurs. Il peut piloter des charges inductives (bobinages, relais), les sorties de
puissances sont protégées par des diodes de roue libre anti-retour.
Programmation de driver moteurL298N :
Le programme suivant permet de mettre en mouvement le moteur connecté au pont B en
passant par le port série. Par l’intermédiaire du moniteur série, on envoie un entier entre -255
et 255 pour actionner le moteur, la valeur 0 signifiant « arrêt du moteur » [annexe 1]
Application de driver moteur L298N :
Le circuit intégré de pilote de moteur L298N a de nombreuses applications dans le domaine
embarqué, en particulier du côté de la robotique. La plupart des microcontrôleurs
fonctionnent sur une tension et un courant très faibles (5v) tandis que les moteurs nécessitent
des tensions et un courant plus élevés. Ainsi, les microcontrôleurs ne peuvent pas leur fournir

12
un courant aussi plus élevé. Pour cela, nous utilisons des circuits intégrés de pilotage de
moteur. Le pilote du moteur est un petit amplificateur de courant ou de tension. Il prend un
signal de courant faible et émet un signal de courant élevé qui peut entraîner un moteur. Il
peut également contrôler la direction du moteur. Les entraînements de moteur sont de
nombreux types en fonction de la tension d'alimentation maximale, du courant de sortie
maximal, de la dissipation de puissance nominale, de la tension de charge et du nombre de
sorties, etc. Nous allons ici discuter du pilote de moteur L298N. Il est utilisé dans le projet de
contrôle de la vitesse du moteur à courant continu et vous pouvez facilement interfacer le
moteur à courant continu avec le microcontrôleur à l'aide de ce pilote de moteur. Et aussi
dans un robot contrôlé par Bluetooth utilisant un microcontrôleur pic. Vous pouvez consulter
le robot suiveur de ligne pour en savoir plus sur ses applications.
6 Les fils connecteurs
Les câbles, fils ou connecteurs sont des éléments nécessaires pour établir des connexions
entre différents composants électriques.

Figure 8:Straps

7 Batteries :(alimentation de voiture)

la batterie Li-ion 18650 offre une flexibilité dans sa configuration en série ou en parallèle,
permettant d'adapter la capacité et la tension en fonction des besoins spécifiques de
l'application.
Ils peuvent être connectés en série. Dans ce cas, la tension se développe et la capacité reste
égale à une batterie. Cela peut être fait en utilisant un cas spécial. En connectant 3 batteries
de 3,7 v chacune, nous obtenons une batterie de 11,1 volts 3600 mA.

13
Figure 9:: Batteries de 3.7V

III. Schémas générale :

IV. les étapes de réalisation du montage :

1 2 3

14
4 5

1. Installation des roues+ les moteurs DC.


2. Installation d’Arduino, capteur Ultrason et les piles.
3. Installation du driver moteurs L298N et module Bluetooth HC-05.
4. Branchement des straps.
5. Résultats final

15
Partie 2 : Étude de la partie Software
Cette partie est dédiée à la représentation des plateformes informatiques utilisées dans le
développement du système robotique.
I. Plateforme de programmation Arduino
L’interface de l’IDE Arduino est plutôt simple, il offre une interface minimale et épurée pour
développer un programme sur les cartes Arduino. Il est doté d’un éditeur de code avec
coloration syntaxique et d’une barre d’outils rapide. Ce sont les deux éléments les plus
importants de l’interface, c’est ceux que l’on utilise le plus souvent. On retrouve aussi une
barre de menus, plus classique qui est utilisé pour accéder aux fonctions avancées de l’IDE.
Enfin, une console affichant les résultats de la compilation du code source, des opérations sur
la carte, etc.

Figure 10:le logiciel Arduino

16
a. Ecriture d’un programme Arduino
Un programme Arduino (Sketch)= 1 fonction setup() + 1 fonction loop() Le langage utilisé
C/C++

 La fonction setup() : doit contenir l’initialisation


 La fonction loop() : fonction répété indéfiniment
 Ces deux fonctions sont appelées par un programme principale main() imposé,
caché et non modifiable

17
II. Ubuntu 2024 et VMWare WorkStation

Ubuntu est un système d'exploitation Linux populaire, connu pour sa convivialité et sa


sécurité. VMware Workstation est une application de virtualisation permettant de créer et de
gérer des machines virtuelles sur un ordinateur. En combinant Ubuntu avec VMware
Workstation, les utilisateurs peuvent créer des environnements de développement flexibles et
sécurisés, idéaux pour tester des applications, développer des logiciels ou configurer des
serveurs sans affecter leur système d'exploitation principal.

III. ROS Noetic :

ROS, ou Robot Operating System, est un framework de développement logiciel open


source largement utilisé dans la robotique. Il fournit des outils et des bibliothèques pour
simplifier la création, le contrôle et la communication entre les composants d'un robot. Grâce
à un système de communication asynchrone et à une gestion des paquets efficace, ROS
facilite le développement d'applications robotiques modulaires et réutilisables.
On retrouve dans ROS un certain nombre de concepts commun à beaucoup de middleware :

 Nodes : Un node est un exécutable qui utilise ROS pour communiquer avec d’autres
nodes.
 Messages : Type de données ROS utilisés pour souscrire ou publier sur un topic.
 Topics : Les nodes peuvent publier des messages sur un topic aussi bien que souscrire
à un topic pour recevoir des messages.
 Master : Nom du service pour ROS (i.e. aide les noeuds à se trouver mutuellement).
Paramètres : Informations très peu dynamiques qui doivent être partagés dans
l’application.
 rosout : Equivalent de stdout/stderr.
 roscore : Master+rosout+parameter server (serveur de paramètres).

1 Organisation de l’espace de travail :

Les paquets sources n’ont pas de structure hiérarchique (ou à un seul niveau lorsque les
dépôts contiennent plusieurs paquets ROS).

18
2 Installation de ROS :
Mettez à jour la liste des paquets disponibles et installez ROS avec la commande suivante :

3 Setup d’environnement :
Configurez votre environnement ROS en exécutant la commande suivante :

19
4 Création du Workspace :
Pour créer un espace de travail (workspace) dans ROS, on utilise les commandes
suivantes :

5 Compilation du pakage :
La commande catkin_make est une étape fondamentale dans l'utilisation de ROS
(Robot Operating System). Son rôle principal est de compiler les packages inclus dans
un workspace ROS

6 Création d’une pakage dans ROS :


Pour créer un nouveau package on utulise les commandes suivantes :

20
7 Création des node :

Une fois que vous avez utilisé la commande "touch subscriber_node.py" pour créer un
nouveau fichier nommé "subscriber_node.py", qui pourrait servir de base pour la création
d'un nœud ROS, ce fichier est créé de manière inéxecutable par défaut. Pour le rendre
exécutable et ainsi permettre son exécution en tant que programme ou script, vous pouvez
utiliser la commande "chmod +x subscriber_node.py". Cela ajoutera le droit d'exécution au
fichier, ce qui vous permettra de lancer le script directement sans avoir à spécifier
l'interpréteur de commande. Cette étape facilite le processus de développement et de test des
nœuds ROS.
En créant de même manière la node Publisher .

21
8 Le code qui assure le contrôle du robot :

9 le ROS Master :
Facilite la découverte dynamique des nœuds dans un réseau ROS, permettant aux
différents composants du système de communiquer entre eux de manière flexible. Il
simplifie la gestion de l'environnement ROS en fournissant un point central de
coordination et d'information pour les nœuds du système.

22
La commande rosrun dans ROS permet de démarrer un node spécifique en spécifiant le nom
du package où se trouve le node ainsi que le nom du node lui-même. Cette commande est
utilisée pour exécuter des nodes particuliers. Pour interagir avec les topics :

IV. NODE RED

Node-RED est une plateforme de programmation visuelle basée sur un navigateur, conçue
pour faciliter la création d'applications IoT. Elle utilise un modèle de flux de données où les
utilisateurs connectent des nœuds prédéfinis pour créer des applications en glissant-déposant.
Node-RED offre une bibliothèque de nœuds prêts à l'emploi, une extensibilité pour intégrer
divers services et une flexibilité pour développer rapidement des applications basées sur des
flux de données.

23
1 Lancement Node RED :

Première fenêtre après lancement d’adresse IP dans navigateur Node RED :

24
2 SNAPPY ROS :

2-1 Définition :
Snappy ROS est un module ou une bibliothèque qui permet à Node-RED de
communiquer avec des systèmes robotiques utilisant le Robot Operating System (ROS). Il
utilise le protocole "Snappy" pour échanger des messages et des données avec les nœuds
ROS, permettant ainsi une intégration transparente entre Node-RED et l'écosystème ROS.
2-2 Rôle :
Snappy ROS dans Node-RED facilite l'intégration et la communication entre Node-RED
et l'écosystème ROS, permettant aux développeurs de créer des applications robotiques
plus riches et plus interactives en combinant les fonctionnalités de ces deux plates-
formes.

2-3 Installation de la bibliothèque Snappy-ros :

25
3-Installation Firebase dans NodeRED :

4 La liaison entre Firebase, Node Red et Topics :

V. FireBase
26
Firebase est une plateforme de développement d'applications mobiles et web proposée par
Google. Elle offre une gamme de services de backend prêts à l'emploi, des SDK pour
plusieurs plateformes, et des outils de développement et de test pour aider les développeurs à
créer, améliorer et faire évoluer leurs applications. Firebase est réputée pour sa facilité
d'intégration, sa haute disponibilité et ses performances élevées, ce qui en fait un choix
populaire pour les développeurs cherchant à construire des applications modernes et
évolutives.

VI. Création d’application, en utilisant le site MIT app Inventor :

27
VII. L’application est créé :

VIII. Code Arduino

#include <ros.h>
#include <std_msgs/Int32.h>
int m1a = 9;
int m1b = 10;
int m2a = 11;
int m2b = 12;
int speedPinRight = 2;
int speedPinLeft = 3;
int demar =0;
#define trigPin 6
#define echoPin 7
ros::NodeHandle nh;

void callBackFunctionEtat(const std_msgs::Int32 &EtatROS) {


int statue = EtatROS.data;
//__________________________commandes
if(statue == 2)

28
{
Backward();
demar = 1;
}
else if(statue == 4)
{
turnLeft();
demar = 1;
}
else if(statue == 1)
{
Forward();
demar = 1;

}
else if(statue == 3)
{
turnRight();
demar = 1;
}
else if(statue == 0)
{
stop();
demar = 1;
}
}
std_msgs::Int32 CapteurROS;
ros::Publisher CapteurROSPublisher("Capteur", &CapteurROS);
ros::Subscriber<std_msgs::Int32> EtatROSsubscriber("Etat", &callBackFunctionEtat);

29
void setup() {
nh.getHardware()->setBaud(9600);
nh.initNode();
nh.subscribe(EtatROSsubscriber);
nh.advertise(CapteurROSPublisher);
//______________________________OUTPUT INPUT
pinMode(speedPinRight, OUTPUT);
pinMode(speedPinLeft, OUTPUT);
pinMode(m1a, OUTPUT);
pinMode(m1b, OUTPUT);
pinMode(m2a, OUTPUT);
pinMode(m2b, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
nh.spinOnce();
delay(5);
if (demar == 1 ) {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 15) {
CapteurROS.data = 1 ;
}

30
else {
CapteurROS.data = 0 ;
}
CapteurROSPublisher.publish(&CapteurROS);
}
}
void Backward(){
digitalWrite(m1a, HIGH);
digitalWrite(m2a, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2b, HIGH);
analogWrite(speedPinRight, 150);
analogWrite(speedPinLeft, 150);
}
void Forward(){
digitalWrite(m1a, LOW);
digitalWrite(m2a, HIGH);
digitalWrite(m1b, HIGH);
digitalWrite(m2b, LOW);
analogWrite(speedPinRight, 150);
analogWrite(speedPinLeft, 150);
}
void turnLeft(){
digitalWrite(m1a, LOW);
digitalWrite(m2a, LOW);
digitalWrite(m1b, HIGH);
digitalWrite(m2b, LOW);
analogWrite(speedPinLeft, 150);
}
void turnRight(){

31
digitalWrite(m1a, LOW);
digitalWrite(m2a, HIGH);
digitalWrite(m1b, LOW);
digitalWrite(m2b, LOW);
analogWrite(speedPinRight, 150);
}
void stop(){
digitalWrite(m1a, LOW);
digitalWrite(m2a, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2b, LOW);
}

IX. Connexion Bluetooth avec le ROS :

32
Topic capteur
Data’0’ absence d’obstacle.
Data’1’ présence d’obstacle

Topic état :

Data ‘0’ Stop


Data ‘1’ Avancé
Data ’2’ Tourner à gauche
Data ‘3’ Tourner à droite
Data ‘4’ reculer

33
X. Les étapes pour contrôler notre robot :

Conclusion générale :
34
Au cours de ces mini-projets, nous avons exploré deux approches distinctes pour le
développement de systèmes embarqués et de robots intelligents. Le premier mini-projet s'est
concentré sur la création d'un robot détecteur de présence équipé de capteurs à ultrasons,
tandis que le deuxième mini-projet a mis en œuvre une application cloud Robotics utilisant le
ROS (Robot Operating System).

Dans le premier mini-projet, nous avons conçu et réalisé un robot capable de détecter les
obstacles à l'aide de capteurs à ultrasons et d'éviter les collisions en ajustant sa trajectoire.
Nous avons utilisé des composants matériels courants tels qu'un Arduino Uno, des moteurs
DC, des capteurs à ultrasons HC-SR04, et d'autres éléments. Ce projet nous a permis de
comprendre les principes de base de la robotique embarquée et de développer des
compétences pratiques en matière de conception matérielle et de programmation.

Dans le deuxième mini-projet, nous avons exploré l'approche du cloud Robotics en mettant
en œuvre une application utilisant le ROS pour la communication entre différents
composants, notamment le cloud, les smartphones et les systèmes embarqués. Cette approche
nous a permis d'exploiter la puissance du cloud computing pour renforcer les capacités de
nos robots, en leur permettant d'accéder à des ressources de calcul et de stockage
supplémentaires, ainsi qu'à des services en ligne tels que des bases de données et des services
de communication. Ce projet nous a également permis de comprendre les avantages et les
défis associés à l'utilisation du cloud dans le domaine de la robotique.

En conclusion, ce projet a été enrichissant et instructif, nous permettant d'acquérir de


nouvelles compétences et de mieux comprendre les défis et les opportunités offerts par la
robotique moderne. Ils nous ont également donné l'occasion de développer notre créativité et
notre capacité à résoudre des problèmes complexes. Enfin, ils nous ont sensibilisés à
l'importance croissante de l'intégration du cloud dans le domaine de la robotique pour créer
des systèmes plus intelligents, plus flexibles et plus performants.

35

You might also like