Photo de la camera JeVois-Pro, boostée à l'IA (jevoisinc.com)
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.
J'ai développé un système de contrôle avancé pour robot mobile autonome, intégrant asservissement PID, génération de trajectoires et vision artificielle. Ce projet s'articule autour du portage de fonctionnalités existantes sur une nouvelle carte électronique et de l'intégration d'un système de vision JeVois-Pro pour la détection d'objets.
J'ai implémenté un système d'asservissement PID double pour contrôler la vitesse linéaire et angulaire du robot. Le correcteur utilise trois composantes : proportionnelle (Kp) pour la réponse immédiate, intégrale (Ki) pour éliminer l'erreur statique, et dérivée (Kd) pour réduire les oscillations.
La validation du système a été réalisée par des tests sur planche inclinée. Le robot maintient parfaitement sa position malgré la gravité et les perturbations externes, démontrant la robustesse de l'asservissement. Cette approche garantit une stabilité en vitesse nulle même sous contraintes mécaniques.
J'ai développé un générateur de trajectoire basé sur une machine à états pour gérer les déplacements entre waypoints. Le système calcule l'angle cible avec atan2
, puis exécute séquentiellement la rotation (état ROTATING) et l'avancement linéaire (état ADVANCING). Cette approche séquentielle est adaptée aux robots non-holonomes qui ne peuvent combiner rotation et translation simultanément.
La gestion dynamique des vitesses s'effectue par accélération/décélération progressive basée sur la distance restante. La position est mise à jour en temps réel via les composantes trigonométriques, assurant un suivi précis de la trajectoire planifiée.
L'application de validation consiste en une trajectoire carrée de 1 mètre de côté. Les résultats montrent une précision satisfaisante avec des erreurs de positionnement minimales. Cependant, j'ai identifié la nécessité d'un asservissement en position (régulateur PD) pour améliorer la précision lors des virages serrés.
J'ai intégré une caméra JeVois-Pro embarquant Linux Ubuntu pour la détection d'objets rouges. Le système utilise OpenCV avec conversion en espace HSV pour la segmentation couleur, application de masques pour les plages rouges inférieures et supérieures, puis filtrage par aire des contours détectés. L'algorithme calcule les centroïdes et génère des rectangles englobants pour simplifier la localisation.
La projection 3D exploite les coordonnées 2D centrées pour calculer les angles alpha (plan vertical) et thêta (plan horizontal). J'utilise des matrices de rotation pour déterminer le vecteur direction 3D de l'objet. La constante focale de référence (focalRef = 789 px) a été calibrée expérimentalement avec des objets positionnés à 45°.
La localisation finale utilise une droite paramétrique $r(t) = c + t \cdot d$ avec intersection sur le plan table (z=0). Le paramètre $t = -c_z/d_z$ permet de calculer les coordonnées (x,y) de l'objet. Cette approche garantit une localisation précise avec seulement quelques opérations arithmétiques simples.
J'ai mis en place un protocole UART robuste pour la transmission des données de vision. La structure de trame inclut un octet de début (0xFE), le code fonction, la longueur, les données (positions multipliées par 1000) et un checksum XOR. Cette approche réutilise le protocole existant robot-PC en garantissant l'intégrité des transmissions.
Sur le PIC, j'ai implémenté un gestionnaire UART2 dédié avec buffer circulaire. La réception du code fonction 0x04 déclenche l'extraction des positions relatives, leur conversion en coordonnées absolues (compensation offset caméra-robot), et leur stockage dans le tableau de waypoints. Cette architecture sépare clairement réception/traitement du générateur de trajectoire.
L'utilisation de coordonnées absolues garantit la validité des waypoints même lors de création pendant un déplacement. Cette approche évite les erreurs de navigation dues aux références relatives obsolètes, assurant cohérence et fiabilité dans la planification dynamique.
Ce projet démontre l'intégration réussie de systèmes complexes : asservissement PID performant validé sur plan incliné, générateur de trajectoire fonctionnel avec précision satisfaisante, et système de vision opérationnel pour la détection/localisation d'objets. L'architecture modulaire facilite les extensions futures.
Les perspectives d'amélioration incluent l'implémentation du régulateur PD en position pour affiner la précision des virages, l'ajout d'un mécanisme anti-doublons pour optimiser la gestion des waypoints, et l'extension du système de vision à d'autres couleurs/formes d'objets. Cette base solide ouvre la voie vers des applications robotiques plus avancées.