Rapport TD2 IA, Logique floue
Introduction
L'objectif principal de ce projet est d'implémenter un système de contrôle flou pour diriger
le robot E-punk en fonction des distances détectées par ses capteurs. Le robot utilise la
logique floue pour prendre des décisions sur sa trajectoire en évitant les obstacles, tout en
s'adaptant dynamiquement aux variations des distances.
Choix des capteurs
j’ai utilisé les 6 capteurs (3 à gauche et 3 à droite) pour m'assurer que le robot ne touche
jamais les obstacles, même dans les virages. En effet, lors d’un virage, il peut arriver que le
capteur avant ne détecte pas l’obstacle latteral, donc le robot touche un obstacle sur le
côté latéral si on utilise qu’un seul capteur, donc l’utilisation de plusieurs capteur
permet de rester toujours loin des obstacles de tous les cotés
Fuzzification
La fuzzification sert à transformer les valeurs numériques capturées par les capteurs en
valeurs floues. Dans notre cas, j’ai defini trois enssemble flous pour caractériser les
distances captées :
• Proche
• Loin
• Très proche (ou coincé)
Ensembles Flous et choix de la fonction trapézoide
J'ai choisi la fonction trapézoide comme fonction d’appartenance pour sa simplicité et sa
capacité à représenter des transitions progressives entre les états flous comme "proche"
et "loin".
Suite à des testes multiples sur les valeurs que renvoi le capteur, j'ai choisi un
seuil_proximite egale à 110 Et un seuil_proximite_Grande egale à 150
Fonction d’appartenance de la distance proche :
proche(x) =
1 si x ≥ seuil_proximite
(x - 70) / (seuil_proximite - 70) si 70 < x < seuil_proximite
0 si x ≤ 70
Fonction d’appartenance de la distance loin:
loin(x) =
1 si x ≤ 70
(seuil_proximite - x) / (seuil_proximite - 60) si 70 < x < seuil_proximite
0 si x ≥ seuil_proximite
Fonction d’appartenance de la distance trés proche :
tresproche(x) =
1 si x ≥ seuil_proximite_Grande
(x - seuil_proximite) / (seuil_proximite_Grande - seuil_proximite) si seuil_proximite < x <
seuil_proximite_Grande
0 si x ≤ seuil_proximite
Règles Floues
J'ai defini des règles floues precisant les actions à prendre en fonction des états flous des
distances gauche et droite retournés par les capteurs. Cinq règles ont été implémentées
pour modéliser le comportement du robot.
Règle 1 : Si le capteur gauche détecte une distance "Proche" et le capteur droit une
distance "Loin", alors :
• Vitesse gauche : grande
• Vitesse droite : arrêt
Règle 2 : Si le capteur gauche détecte une distance "Loin" et le capteur droit une distance
"Proche", alors :
• Vitesse gauche : arrêt
• Vitesse droite : grande
Règle 3 : Si les deux capteurs détectent une distance "Proche", alors :
• Vitesse gauche : grande
• Vitesse droite : arrêt
Règle 4 : Si les deux capteurs détectent une distance "Loin", alors :
• Vitesse gauche : arrêt
• Vitesse droite : grande
La 5 eme regle n’a pas ete implementé car je ne sais pas comment inverser la direction du
moteur pour qu’il marche en arriere.
Deffuzzification :
La défluzzification est faite avec la moyenne pondérée par chaque règle. Elle permet de
transformer les valeurs floues en commandes réelles pour les moteurs.
vitesse_gauche = (∑(poids × vitesse)) / ∑(poids)
vitesse_droite = (∑(poids × vitesse)) / ∑(poids)
Ou poids représente l’activation de chaque règle respectivement