Interface de supervision développée en C# (WPF)
Note : Les niveaux présentés dans "Caractéristiques" sont subjectifs. La signification précise est détaillée dans Détails des caractéristiques des projets universitaires.
Ce projet universitaire de BUT 2 GEII a consisté à développer un système complet de navigation autonome pour robot mobile, intégrant à la fois les aspects algorithmiques d'évitement d'obstacles et l'interface de supervision. Le robot, équipé de cinq télémètres infrarouges disposés en arc de cercle, devait être capable de naviguer de manière autonome tout en transmettant ses données de fonctionnement vers une interface de pilotage développée en C# WPF.
L'objectif principal était double : implémenter une stratégie de navigation par contre-réaction linéaire sur le microcontrôleur dsPIC33EP512GM306, et développer une application Windows permettant la visualisation temps réel et le contrôle des paramètres via liaison série USB. Cette approche bidirectionnelle permettait une supervision complète du comportement du robot.
La communication entre le robot et l'interface PC s'effectue via une liaison série USB utilisant un module FT232RL configuré à 115200 bauds, 8 bits de données, 1 bit de stop, sans parité. Cette configuration assure un débit suffisant pour la transmission temps réel des données de télémétrie et des commandes de pilotage.
Un protocole de communication structuré a été développé avec un format de trame standardisé : SOF (0xFE), code fonction (2 octets), taille payload (2 octets), payload (n octets), checksum (1 octet). Quatre types de commandes ont été implémentés : transmission de texte (0x0080), commande LED (0x0020), transmission distances télémètres (0x0030), et transmission consignes vitesses (0x0040).
L'implémentation sur microcontrôleur utilise des buffers circulaires de 128 octets pour optimiser la gestion mémoire et éviter les débordements. Deux approches ont été testées : une première utilisant l'opérateur modulo, puis une version optimisée sans modulo pour réduire la charge processeur. Le décodage des trames s'appuie sur une machine à états permettant le traitement octet par octet sans attendre la réception complète de la trame.
La configuration UART du dsPIC33EP512GM306 utilise les broches remappables RPI24 (RX) et RPI36 (TX) avec remappage approprié. Les interruptions de réception et transmission sont gérées via des ISR dédiées assurant un fonctionnement asynchrone optimal.
L'interface de supervision a été développée en C# WPF, exploitant les capacités graphiques de DirectX pour un rendu fluide des éléments visuels. L'architecture logicielle repose sur une approche orientée objet avec une classe SerialProtocolManager gérant l'encodage/décodage des trames, et des classes SerialCommand spécialisées pour chaque type de commande.
Le polymorphisme des méthodes Process() et MakePayload() permet une gestion transparente des différents types de commandes. La classe Robot centralise toutes les données télémètriques et de contrôle, servant de modèle de données partagé entre les différents composants de l'interface.
L'interface utilisateur présente une disposition ergonomique avec visualisation temps réel des distances télémètriques, affichage des consignes de vitesse des moteurs, contrôle des LEDs, et zone de communication bidirectionnelle. Le design adopte une esthétique professionnelle avec couleurs sobres et éléments intuitifs, optimisant l'interaction homme-machine.
Les fonctionnalités incluent la visualisation graphique des données télémètriques avec mise à jour temps réel, le contrôle individuel des LEDs du robot, l'affichage des consignes de vitesse moteur, et une console de communication permettant l'envoi de commandes textuelles personnalisées. Un système de démonstration génère des valeurs aléatoires pour tester l'interface sans connexion physique au robot.
La stratégie de contre-réaction linéaire démontre une efficacité satisfaisante dans les configurations de type couloir avec des mouvements relativement fluides. La vitesse d'adaptation aux obstacles permet une navigation sûre à vitesse d'exploration standard. Cependant, certaines limitations ont été identifiées : comportement inadéquat lorsque tous les capteurs sauf le central détectent des obstacles, et tendance aux demi-tours brutaux lors d'approche rapide d'obstacles.
L'interface de supervision répond pleinement aux objectifs avec une communication bidirectionnelle stable et une visualisation temps réel efficace. L'architecture orientée objet facilite la maintenance et l'extension des fonctionnalités. La fréquence d'acquisition de 40 Hz assure une réactivité appropriée pour les applications de robotique mobile autonome.
Les perspectives d'amélioration incluent l'implémentation d'algorithmes de navigation plus sophistiqués, l'ajout de capteurs complémentaires, et l'extension de l'interface vers une architecture web pour faciliter l'accessibilité multi-plateforme. L'optimisation des buffers circulaires pourrait également bénéficier d'une approche par interruptions DMA pour réduire davantage la charge processeur.