0% ont trouvé ce document utile (0 vote)
15 vues25 pages

SLAM Avancé avec Filtre de Kalman

Ce document présente un projet de développement d'un système SLAM (Simultaneous Localization and Mapping) avancé utilisant un filtre de Kalman pour la localisation et la cartographie en temps réel. Le système intègre des techniques de traitement d'image pour la détection d'obstacles et une visualisation interactive des résultats. Les résultats montrent une capacité fonctionnelle du système, bien que des imprécisions dues aux bruits de capteurs aient été observées.

Transféré par

chaimaelahmimi7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues25 pages

SLAM Avancé avec Filtre de Kalman

Ce document présente un projet de développement d'un système SLAM (Simultaneous Localization and Mapping) avancé utilisant un filtre de Kalman pour la localisation et la cartographie en temps réel. Le système intègre des techniques de traitement d'image pour la détection d'obstacles et une visualisation interactive des résultats. Les résultats montrent une capacité fonctionnelle du système, bien que des imprécisions dues aux bruits de capteurs aient été observées.

Transféré par

chaimaelahmimi7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2025

UNIVERSITE EUROMED DE FEZ

SYSTÈME SLAM AVEC FILTRE DE KALMAN :


LOCALISATION ET CARTOGRAPHIE

Réalisé par: Encadré par:

Lahmimi CHAYMAE Pr. Mostafa MRABTI


Nasri Jmiaa
HAMDOUNE Rime
EL MOUJTAHID Nouhayla
SOMMAIRE

Introduction 1
Présentation du Code 2
Algorithme Global 3
Détails des Fonctionnalités 4
Résultats et Analyse Bilan 5
Conclusion 6
1
INTRODUCTION
INTRODUCTION

Le SLAM (Simultaneous Localization and Mapping) est une technique


essentielle dans les domaines de la robotique et de la vision par ordinateur.
Il permet de construire une carte d'un environnement inconnu tout en
suivant la position d'un capteur dans cet environnement. Ce projet vise à
développer un pipeline simple de SLAM basé sur des images, allant de la
détection des points clés à la reconstruction de points 3D.

Ce code implémente un système SLAM (Simultaneous Localization and


Mapping) avancé avec un filtre de Kalman, une détection de boucle (loop
closure), et une visualisation en temps réel.

2
INTRODUCTION

SLAM, ou Localisation et Cartographie Simultanées, est un processus


algorithmique permettant à un robot ou à un système autonome de construire
une carte d’un environnement inconnu tout en estimant sa propre position
dans cet environnement.

Ce concept repose sur deux tâches principales :


1. Localisation : Estimer avec précision la position et l’orientation du robot par
rapport à son environnement.
2. Cartographie : Construire une représentation spatiale cohérente de
l’environnement, généralement sous forme de carte 2D ou 3D.
Le SLAM utilise des capteurs tels que des caméras, des LiDARs ou des IMUs
(Unités de Mesure Inertielle) pour collecter des données sur l’environnement.
Ces données sont ensuite traitées à l'aide de techniques avancées, telles que
la vision par ordinateur, les algorithmes de filtrage (comme les filtres de
Kalman) ou les méthodes de graphe d’optimisation. Le but est de concilier les
incertitudes liées à la localisation et celles inhérentes à la cartographie, de
manière simultanée et en temps réel.

Le SLAM est essentiel dans de nombreux domaines, notamment :


La robotique mobile (robots d'exploration, robots aspirateurs).
Les véhicules autonomes (voitures, drones).
La réalité augmentée et virtuelle.

3
INTRODUCTION

1.2 Objectifs du projet

L'objectif de ce rapport est de présenter une implémentation avancée d'un


système SLAM (Simultaneous Localization and Mapping) utilisant un filtre de
Kalman pour la localisation et la cartographie en temps réel. Le système
intègre des techniques de traitement d'image pour la détection d'obstacles,
une méthode de détection de boucle (loop closure) basée sur l'appariement
de points-clés, et une visualisation interactive de la trajectoire 3D et de la
carte d'occupation 2D. Ce rapport expliquera en détail l'algorithme global, le
fonctionnement du code, et les résultats obtenus.

1.3 Technologies utilisées

Ce projet utilise un ensemble de technologies modernes et efficaces pour


implémenter un système SLAM avancé. Les bibliothèques comme OpenCV,
NumPy, et Matplotlib permettent de traiter les images, effectuer des calculs
complexes, et visualiser les résultats en temps réel. Le filtre de Kalman et
les techniques de vision par ordinateur (ORB, appariement de
caractéristiques) assurent une localisation et une cartographie précises.
Ces technologies, combinées à une interface graphique intuitive, font de ce
projet une solution robuste pour la navigation autonome et la cartographie
d'environnements inconnus.

4
INTRODUCTION

5
PRÉSENTATION DES
CLASSES
PRÉSENTATION DU CODE:

Le code est divisé en deux classes principales :

1. AdvancedSLAMGUI : Gère l'interface graphique et la visualisation.


2. AdvancedSLAMSystem : Implémente le système SLAM, y compris le filtrage de
Kalman, la détection d'obstacles, et la mise à jour de la carte

7
PRÉSENTATION DU CODE:

CLASSE ADVANCEDSLAMGUI

Rôle

Cette classe gère l'interface utilisateur et la visualisation des résultats du SLAM. Elle
permet à l'utilisateur de charger une vidéo, de démarrer le traitement SLAM, et d'observer
les résultats en temps réel.

Attributs
slam_system : Instance de la classe AdvancedSLAMSystem qui effectue les calculs
SLAM.
root : Fenêtre principale de l'interface graphique (Tkinter).
figure, ax_3d, ax_2d : Graphiques Matplotlib pour afficher la trajectoire 3D et la carte
d'occupation 2D.
canvas : Widget Tkinter pour intégrer les graphiques Matplotlib dans l'interface.
load_button, start_button : Boutons pour charger une vidéo et démarrer le SLAM.
Méthodes
1. __init__ :
Initialise l'interface graphique.
Configure les graphiques Matplotlib et les boutons.
2. load_video :
Ouvre une boîte de dialogue pour sélectionner une vidéo.
Charge la vidéo avec [Link].
3. start_slam :
Démarre le traitement de la vidéo frame par frame.
Appelle process_frame pour chaque frame et met à jour les visualisations.
4. update_video_display :
Affiche la vidéo avec les annotations (obstacles et trajectoire).
Utilise [Link] pour dessiner les obstacles et [Link] pour la trajectoire.
5. update_visualizations :
Met à jour les graphiques 3D et 2D.
Affiche la trajectoire 3D et la carte d'occupation 2D.
6. run :
Lance la boucle principale de l'interface graphique.

8
PRÉSENTATION DU CODE:

CLASSE ADVANCEDSLAMGUI

Rôle
Cette classe implémente le système SLAM, y compris le filtrage de Kalman, la détection
d'obstacles, et la mise à jour de la carte.
Attributs
position : Position estimée du robot (x, y, z).
orientation : Orientation estimée du robot (quaternions).
velocity : Vitesse estimée du robot (vx, vy, vz).
trajectory : Historique des positions du robot.
obstacles : Liste des obstacles détectés.
map_size, resolution, occupancy_map : Carte d'occupation probabiliste.
kalman : Filtre de Kalman pour l'estimation de l'état.
orb, bf : Détecteur de points-clés (ORB) et appariement de caractéristiques (Brute-
Force Matcher).
last_keypoints, last_descriptors : Points-clés et descripteurs de la frame précédente.
Méthodes
1. __init__ :
Initialise les variables du système SLAM.
Configure le filtre de Kalman et les outils de détection de points-clés.
2. process_frame :
Traite chaque frame de la vidéo.
Détecte les points-clés avec ORB.
Effectue l'appariement de caractéristiques pour la détection de boucle.
Met à jour la position et l'orientation du robot.
Utilise le filtre de Kalman pour corriger l'estimation de l'état.
Met à jour la trajectoire et les obstacles.
3. update_occupancy_map :
Met à jour la carte d'occupation en fonction des obstacles détectés.
Normalise la carte pour rester entre 0 et 1.
4. get_trajectory, get_obstacles, get_occupancy_map :
Retournent la trajectoire, les obstacles, et la carte d'occupation.

9
ALGORITHME GLOBAL
L'ALGORITHME GLOBAL

L'ALGORITHME GLOBAL DU SYSTÈME SLAM PEUT ÊTRE RÉSUMÉ EN ÉTAPES CLÉS :

Initialisation :
Charger la vidéo ou le flux vidéo.
Initialiser les variables du système SLAM (position, orientation,
vitesse, carte d'occupation, filtre de Kalman).
Traitement de chaque frame :
Convertir l'image en niveaux de gris.
Détecter les points-clés et les descripteurs avec ORB.
Apparier les points-clés avec la frame précédente pour détecter
les boucles.
Si une boucle est détectée, corriger la position et l'orientation du
robot.
Estimation de l'état :
Simuler le mouvement du robot (mise à jour de la position et de
l'orientation).
Utiliser le filtre de Kalman pour corriger l'estimation de l'état
(position, orientation, vitesse).
Détection d'obstacles :
Détecter les contours dans l'image pour identifier les obstacles.
Mettre à jour la carte d'occupation en fonction des obstacles
détectés.
Visualisation :
Afficher la vidéo annotée avec les obstacles et la trajectoire.
Mettre à jour les graphiques 3D (trajectoire) et 2D (carte
d'occupation).
Répétition :
Répéter les étapes 2 à 5 pour chaque frame jusqu'à la fin de la
vidéo.

10
DÉTAILS DES
FONCTIONNALITÉS
UNE EXPLICATION MATHÉMATIQUE DÉTAILLÉE

1. MODÉLISATION DU SLAM DANS VOTRE CODE:

a. État du Robot

b. Carte d'Occupation

La carte est une grille 2D où chaque cellule (i,j)(i,j) contient une probabilité
d'occupation mi,j∈[0,1]mi,j​∈[0,1].

2. FILTRE DE KALMAN DANS VOTRE CODE:

a. État du Filtre de Kalman

11
UNE EXPLICATION MATHÉMATIQUE DÉTAILLÉE

b. Matrice de Transition

c. Matrice de Mesure

d. Prédiction

12
UNE EXPLICATION MATHÉMATIQUE DÉTAILLÉE

e. Correction

3. DÉTECTION D'OBSTACLES ET MISE À JOUR DE LA CARTE

a. Détection d'Obstacles

Les obstacles sont détectés en utilisant la détection de contours :

contours=[Link](edges,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)contours=[Link]
dContours(edges,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

Chaque contour est converti en un rectangle englobant (x,y,w,h)(x,y,w,h).

b. Mise à Jour de la Carte d'Occupation

13
UNE EXPLICATION MATHÉMATIQUE DÉTAILLÉE

4. DÉTECTION DE BOUCLE (LOOP CLOSURE)

a. Appariement de Points-Clés

b. Calcul de l'Homographie

5. MOUVEMENT DU ROBOT

a. Simulation de Mouvement

14
UNE EXPLICATION MATHÉMATIQUE DÉTAILLÉE

b. Mise à Jour de l'Orientation

6. RÉSUMÉ DES ÉQUATIONS CLÉS

15
RÉSULTATS ET ANALYSE
BILAN
RÉSULTATS ET ANALYSE BILAN

Les résultats obtenus montrent que le système SLAM est capable de localiser
le robot et de construire une carte de l'environnement en temps réel.
Cependant, des erreurs et des imprécisions sont présentes, ce qui est
courant dans les systèmes SLAM en raison des bruits de capteurs et des
limitations des modèles utilisés.

1. Trajectoire 3D
La trajectoire 3D montre le chemin parcouru par le robot dans un espace tridimensionnel. Les variations
sur les axes X, Y et Z indiquent des mouvements complexes, avec des changements d'altitude et des
déplacements latéraux. Des irrégularités dans la trajectoire peuvent être dues à des erreurs d'estimation
ou à des bruits dans les mesures.
2. Carte d'Occupation 2D
La carte d'occupation 2D représente l'environnement avec des zones sombres pour les obstacles et des
zones claires pour les espaces libres. La répartition des obstacles est claire, mais certaines zones peuvent
sembler floues en raison de limitations dans la détection ou la résolution de la carte.

3. Vidéo Annotée
La vidéo annotée affiche les images capturées par
le robot avec des rectangles verts pour les
obstacles et des points rouges pour la trajectoire.
Le système détecte les obstacles et suit la
trajectoire en temps réel, mais des inexactitudes
peuvent survenir dans des environnements
complexes ou mal éclairés.

16
RÉSULTATS ET ANALYSE BILAN

d’autres exemples:

Detection des obstacles

visualisation de la trajectoires en 3D

17
CONCLUSION
CONCLUSION

Ce projet a permis de mettre en œuvre un système SLAM (Simultaneous


Localization and Mapping) avancé, combinant la localisation d'un robot et la
cartographie de son environnement en temps réel. Grâce à l'utilisation d'un filtre
de Kalman, le système est capable d'estimer la position, l'orientation et la
vitesse du robot tout en tenant compte des incertitudes des capteurs. La
détection d'obstacles, basée sur des techniques de vision par ordinateur comme
ORB et la détection de contours, a permis de construire une carte d'occupation
2D représentant l'environnement. La visualisation de la trajectoire 3D et de la
carte en temps réel offre une compréhension claire des mouvements du robot
et de la structure de l'environnement.

Les résultats obtenus démontrent que le système est fonctionnel et capable de


naviguer dans un environnement inconnu tout en construisant une carte.
Cependant, certaines limitations ont été observées, notamment des
imprécisions dans la trajectoire et la carte, dues à des bruits de capteurs et à
des modèles simplifiés. Pour améliorer les performances, des ajustements
pourraient être apportés, tels que l'optimisation des paramètres du filtre de
Kalman, l'intégration de capteurs supplémentaires (comme un LIDAR ou une
IMU), ou l'utilisation d'algorithmes plus robustes pour la détection d'obstacles et
l'appariement de caractéristiques.

En conclusion, ce projet illustre avec succès les principes fondamentaux du


SLAM et du filtrage de Kalman, tout en ouvrant des perspectives d'amélioration
pour des applications plus complexes et réalistes. Il constitue une base solide
pour des travaux futurs visant à renforcer la précision et la robustesse du
système dans des environnements dynamiques et variés.

Nous remercions chaleureusement notre


professeur, M. Mrabti, pour son encadrement et ses
enseignements tout au long de ce projet. Son
expertise et son soutien ont été essentiels pour
surmonter les défis techniques et approfondir
notre compréhension du SLAM et du filtrage de
Kalman. Merci pour votre patience et votre
engagement à nous guider vers la réussite de ce
projet.

18
2025

MERCI

Vous aimerez peut-être aussi