GéoRobot
Rapport final
Cette entreprise est formée dans le cadre du cours GEL-21405 Design III du département de génie informatique et de génie électrique de l'Université Laval, au trimestre d'automne 1999. Sa mission est de réaliser le projet Cyclope. Ce projet consiste essentiellement à contrôler un robot, le RugWarrior, et de lui faire exécuter diverses tâches moyennant des spécifications.
Comme le but de l'exercice consiste à contrôler un robot, la qualité distinctive retenue pour l'entreprise consiste à faire réaliser sur le sol par le robot des motifs géométriques bidimensionnels. Comme le robot doit être en mesure de transporter des pièces de 25 sous, les formes géométriques désirées seront constituées à partir de ces pièces.
Suite à l'établissement de cette qualité distinctive, un nom d'entreprise a été choisi de manière à refléter la mission ainsi que cette qualité. Ce nom est GéoRobot.
Les membres qui composent l'équipe dynamique de GéoRobot sont les suivants:
Parmi ceux-ci, deux sont étudiants au baccalauréat spécialisé en génie informatique et les autres au baccalauréat spécialisé en génie électrique.
Le projet CYCLOPE vise à contrôler un robot, le RugWarrior, et lui faire accomplir des tâches particulières, répondant à des spécifications. Celles-ci sont précisées dans un cahier de spécifications qui se résume comme suit.
Comme ce site doit être consulté par le public et conséquemment par des compagnies concurrentes, le détail des réalisations n'est pas livré de manière exhaustive. Le but est de conserver la propriété intellectuelle sur certains aspects stratégiques du dossier. Néanmoins, il est possible de se faire une idée suffisamment claire pour bien comprendre les réalisations dans leur globalité.
Une copie de ce site est disponible en format PDF pour en faciliter la consultation.
Spécifications sommaires
L'aire de déplacement du robot mesure 4m sur 4m, et est surplombée par une caméra assurant l'acquisition de l'image. L'interface personne-machine doit être conçu pour "monitorer" le comportement interne du robot (sa position, sa vitesse, son orientation par rapport à l'espace de travail et à ses cibles, la charge de sa batterie et une estimation de sa période d'autonomie, ... ) ainsi que son environnement visuel. Un programme informatique est chargé de prescrire des trajectoires optimales de déplacement compte tenu de l'achalandage spatial et commander l'exécution de tâches spécifiques.
Les défis sont multiples, tant au niveau de l'électronique, de l'informatique, du traitement de signal, des télécommunications, de l'électrotechnologie ainsi que de l'ergonomie des interfaces. Conscient également de l'enjeu "humain" de ce projet, l'objectif premier de l'entreprise est de livrer un produit fonctionnel qui répond aux spécifications de base. Le second objectif, qui complète ce premier, est d'ajouter à ce produit une qualité distinctive à la discrétion de l'entreprise. L'intégration étant la pierre angulaire de la démarche, la modestie et la prudence sont de mise dans l'élaboration des objectifs à atteindre. En conséquence, nous prenons garde de tomber dans le piège de l'optimisation qui outrepasse les exigences prescrites.
L' approche systémique est favorisée pour aborder l'intégration des sous-systèmes. Cette approche consiste à spécifier tout processus en 3 composantes: ses entrées (intrants ou input); ses sorties (extrants ou output); jointes par un processus de transformation. Cette décortication rigoureuse et méthodique de chaque sous-système en ses composantes élémentaires tend à minimiser les oublies qui rendent l'intégration laborieuse.
Figure 1 - Illustration du modèle systémique
Les commentaires de confrères et consoeurs de classe qui nous ont précédés constituent d'autre part une source précieuse de conseils que nous consultons tout au long du projet.
Décomposition et répartition des tâches
Au départ, le projet est décomposé en 5 spécialités auxquelles sont affectées les membres, en fonction de leurs affinités et de leurs compétences. La figure suivante montre cette décomposition du projet en spécialités et les personnes affectées à chacune.
Figure 2 - Décomposition du projet et affectation des ressources
Cette répartition des tâches n'est pas immuable. Des membres aux compétences multiples peuvent également prêter leur collaboration aux membres affectés à d'autres spécialités. Hormis la dernière spécialité, la structure du présent rapport suit le découpage précédemment exprimé.
Pour maintenir un bon suivi de projet, des rencontres impliquant tous les membres de l'équipe sont tenues régulièrement chaque semaine, immédiatement après le cours de Design. Des rencontres supplémentaires s'ajoutent également au besoin. L'échéancier est préparé de manière à respecter les dates critiques prévues dans le plan de cours.
Activités
|
Dates limites
|
Analyse du projet | 18 septembre |
Développement de solutions pour chaque spécialité (80%) | 1er novembre |
Dépôt du rapport préliminaire | 4 novembre |
Développement de solutions pour chaque spécialité(100%) | 23 novembre |
Intégration des spécialités | 9 décembre |
Dépôt du rapport final | 14 décembre |
Présentation du fonctionnement du robot et exposé oral sur une spécialité du projet | 16 décembre |
Tableau 1 - Échéancier
Cette sous-section trace un bilan du projet en terme de forces et faiblesses et fait un bilan des acquis. Elle sert également de conclusion au projet.
1. Forces et faiblesses
Au moment de rédiger le rapport, nous n'avons pas encore réalisé le plein fonctionnement de la solution intégrée. Nous sommes toutefois en droit de reconnaître que la qualité distinctive visée dans ce projet, consistant à faire réaliser au robot des dispositions géométriques des pièces à manipuler, n'a pu implémentée.
Le premier point positif consiste à avoir suivi un cheminement sans tomber dans les dédales de l'optimisation. Nous recherchions au départ une solution qui se veut avant tout fonctionnelle et répondant aux spécifications de base énoncées.
Au niveau de la gestion administrative du dossier, l'utilisation d'un formulaire type pour les rapports internes d'avancement a mis de l'homogénéïté dans la structure de l'information véhiculée dans l'entreprise, dans ses rapports internes et externes. Ce formulaire est rempli par chacune des spécialités selon les items suivants:
Voir le rapport intermédiaire du 18 octobre.
La répartition retenue a capitalisé sur les forces de chacun des membres et assuré un rendement optimal de la compagnie.
2. Acquis
Finalement, l'équipe tire un bilan positif de ce projet. Ce succès repose sur la pleine collaboration et l'initiative de chacun des membres de l'entreprise, lesquelles ont fait de ce projet, une expérience enrichissante et formatrice.
Recommandations
Projet Cyclope
Navigating Mobile Robots: Sensors and Technique , A. K. Peters, Ltd., Wellesley, 1996, MA (13 Mo) http://ftp.eecs.umich.edu/people/johannb/pos96rep.pdf.
NIELSON, Jakob. Top Ten Mistakes in Web Design, mai 1996, consulté le 22 octobre 1999. http://www.useit.com/alertbox/9605.html
GéoRobot - Rapports intermédiaires
Acquisition vidéo
Objectifs
Trois principaux objectifs sont reliés à la partie acquisition d'images :
Potentiels et contraintes
Analyse de l'image
Potentiel
Pour ce qui est du traitement de l'image, nous disposons de la librairie MIL6.0 de Matrox, qui offre plusieurs possibilités pour l'analyse de l'image.
Contraintes
Algorithme de déplacement du robot
Contraintes
Interface usager
Potentiel
Plusieurs possibilités s'offrent à nous pour l'interface usager. L'utilisation de MFC facilite le design de plusieurs composantes de l'interface telles que les boîtes de dialogue qui permettent aisément d'entrer tous les paramètres désirés. L'utilisation des MFC permet donc de créer un environnement convivial pour l'utilisateur.
Contraintes
Solution
La solution élaborée comporte 3 composantes : l'analyse de l'image, l'algorithme de déplacement du robot, ainsi que l'interface usager.
Analyse de l'image
1- Identification du terrain
Tout d'abord, il fallait identifier le terrain d'action du robot dans l'image. Pour ce faire, nous avons transformé l'image originale en appliquant une LUT qui performe une détection des " edge " dans l'image. Cela permet de bien séparer les lignes du terrain du reste de l'image. Par la suite, nous employons une des fonctions de la librairie MIL qui s'appelle MmeasFindMarker() qui permet de retrouver des " stripes " dans une image selon les paramètres spécifiques à celles-ci que nous avons définis.
La caméra suivante est utilisée pour l'acquisition d'images.
Figure 1 - Caméra dédiée à l'acquisition d'images
2- Calibrer l'image
Une fois le terrain trouvé, il faut calibrer l'image pour contrecarrer l'effet de perspective causé par la caméra. Pour ce faire, il suffit d'utiliser la fonction McalTransformImage() en ayant préalablement spécifier certains paramètres pour la calibration. Ensuite, une fois le modèle de calibration établi, on peut convertir les positions de pixels à centimètres et vice-versa.
3- Identification des objets
Par la suite, il faut identifier les objets dans l'image. Pour ce faire on utilise des fonctions de " blob analysis " disponibles dans la librairie. Il a cependant fallu diviser l'image en quatre parties pour trouver les objets, car comme mentionner plus tôt une pièce de monnaie en arrière plan est beaucoup plus petite qu'une pièce de monnaie en avant plan. Il y a un effet négatif à tout cela, un objet placé directement sur la ligne de coupure de chacune des parties risque de ne pas être reconnue. Heureusement, ce cas n'a que de très faibles possibilités de se réaliser.
Ce problème pourrait se corriger relativement facilement, mais le manque de temps nous contraint à poser des limites sur les capacités du projet. Tous les objets qui auraient pu être trouvés en dehors de la zone de test sont automatiquement éliminés.
4- Identification des obstacles
Ensuite, il faut identifier les obstacles. Cela est relativement simple une fois que nous nous sommes habitués au " blob analysis " que nous avons eu l'occasion d'utiliser lors de l'identification des objets. Le problème qui se présente ici est le fait que les obstacles n'ont pas nécessairement une forme régulière.
On retrouve facilement les obstacles dans l'image, mais pour rendre les choses plus faciles, on ne fait que délimiter les objets par un rectangle qui les contient complètement. Cela rend l'algorithme de déplacement du robot beaucoup plus simple et réduit également l'espace mémoire requis pour emmagasiner la position de l'obstacle. Tous les obstacles qui auraient pu être trouvés en dehors de la zone de test sont automatiquement éliminés.
Figure 2 - Exemple de boîte délimitant un obstacle
5- Identification du robot
Finalement, il faut identifier le robot. Cela semble simple à première vue en utilisant du " pattern matching ", mais ce n'est pas aussi facile que cela en à l'air. Tout d'abord le fait que le robot ait un fil pour l'alimentation cause beaucoup de problème du point de vue de la reconnaissance des objets et obstacles. Pour résoudre ce problème, nous analysons l'image une première fois pour trouver les zones, objets et obstacles, puis par la suite, nous plaçons le robot dans l'image.
L'autre problème est que le robot est transparent et possède trois dimensions cela rend sa reconnaissance dans l'image plus difficile, puisque lors de la calibration le robot devient déformé dû à sa troisième dimension. De plus, comme le robot est circulaire, on ne peut trouver l'angle selon lequel il est placé dans l'image.
Bref, comme solution à tous ces problèmes, il suffit de placer une flèche d'une bonne dimension au dessus du robot. Celle-ci nous permet donc de déterminer l'angle du robot dans l'image sans problème et puisque son épaisseur est négligeable la calibration ne la déforme pas, rendant ainsi possible sa détection dans n'importe quelle partie de l'image
.
Algorithme de déplacement du robot
1- Division du terrain
Tout d'abord, nous avons divisé la zone en carrés de 25cm chacun qui sont représentés dans une matrice. La matrice est initialisée avec des '1' partout. Ensuite, nous plaçons des '0' dans tous les carrés inclus par chacune des boîtes délimitant les obstacles.
Figure 3 - Division de la zone de test et matrice utilisée dans l'algorithme
Cette division implique une certaine restriction sur la distance minimale entre les objets et les obstacles. En effet, chaque objet doit être au minimum à 40 cm des boîtes délimitant les obstacles. Cette contrainte pourrait être diminuée de beaucoup, mais encore une fois le temps nous force à établir des limites au projet.
Figure 4 - Contrainte sur la distance entre les objets et les obstacles
2- Détermination du point de départ et de la destination
Une fois la matrice remplie, on détermine le carré dans lequel se trouve l'objet et le carré de destination. On fait un scan vertical ou horizontal de la matrice pour déterminer le chemin que doit prendre le robot. - Pour faire un scan des rangées, on vérifie tout d'abord si les carrés adjacents au robot sont disponibles, si oui on met un '1' à l'index correspondant dans un vecteur (START_VECTOR).
Même si des carrés sont disponibles dans la même rangée, mais qu'il y a un obstacles entre ces carrés et le robot, on place un '0' dans le vecteur à ces positions de même qu'aux endroits où il y a un obstacle. Ensuite, si le centre du robot est dans la partie inférieure du carré et que le robot doit aller vers le haut, on vérifie si la rangée du dessous est libre en faisant un ET logique avec le vecteur que l'on vient de trouver et celui de la matrice qui correspond à cette rangée. Cela est fait, car vu la grosseur du robot, celui-ci nécessite un minimum de deux carrés de libre pour se déplacer.
Finalement, on fait un ET logique avec toutes les rangées supérieures à celle où est le robot (les rangées inférieures si le robot va vers le bas) jusqu'à ce qu'on atteigne soit la rangée du carré de destination, soit la dernière rangée de la matrice.
3- Détermination de la trajectoire
Une fois le scan terminé, on détermine dans quelle colonne le robot dispose du plus grand nombre de carrés libres. Le robot est ensuite dirigé dans la bonne colonne et monte au carré maximum qui vient d'être trouvé. Le même algorithme s'applique pour les colonnes.
Le robot se déplace en exécutant des " L ". On appelle la fonction de scan tant que le robot n'est pas dans même le carré que le carré de destination. La fonction de scan est appelée en alternant les scan : une fois on fait un scan des rangées, ensuite un scan des colonnes.
Puisqu'il est difficile de déterminer la position exacte, au centimètre près, lorsque le robot est très près de l'objet on peut parfois trouver que l'objet est derrière l'électro-aimant alors qu'il est en fait devant. Pour résoudre ce problème d'imprécision lorsque l'on trouve que le robot est dans le même carré que la pièce on fait reculer le robot automatiquement d'un carré (qui est libre puisque le robot en arrive), on active l'électro-aimant et on fait tourner le robot pour qu'il soit aligner sur la pièce et on le fait avancer de la distance calculée. On demande à l'usager si le robot a réussi à ramasser l'objet : si oui, il va le déposer à l'endroit prévu dans la zone de décharge; sinon, l'usager doit guider manuellement le robot vers la pièce. Si le robot était plus précis, le mode manuel ne serait probablement pas nécessaire.
Interface usager
L'interface personne-machine permet à l'utilisateur de contrôler directement le robot en lui envoyant des commandes pour avancer, reculer, tourner ou encore pour contrôler l'électro-aimant. Comme illustré à la figure suivante, elle offre des boutons de contrôle pour identifier les objets, les zones, les obstacles et le robot, ainsi que des boutons pour que le robot aille automatiquement ramasser l'objet le plus près de lui. Par contre, vu l'imprécision du robot, s'il ne réussi pas à ramasser l'objet, l'usager doit guider lui-même le robot. On peut également tracer les zones, les objets et les carrés délimitant les obstacles sur l'image.
Figure 3 - Interface personne machine élaboré
1- Boutons d'initialisation
Bouton 1Ce bouton est le bouton de départ. Il permet l'affichage de l'image dans l'écran. De plus, il permet de faire l'analyse de l'image pour trouver les zones, les obstacles et les objets. Tant que ce bouton n'a pas été appuyé, les autres boutons ne feront aucune action. Bouton 2Ce bouton permet d'identifier le robot dans l'image. Une fois que l'initialisation à été faite (bouton 1) , on place le robot et la station de recharge dans l'image et on appuie sur ce bouton pour identifier la position et l'angle du robot. Cela n'est pas fait lors de l'initialisation, car le fil de l'alimentation cause des problèmes lors de l'analyse de l'image. Bouton 3Ce bouton commande au robot d'aller ramasser l'objet le plus près de lui. Bouton 4Ce bouton permet d'aller déposer l'objet que le robot à ramasser dans la zone de décharge.
2- Boutons de dessin
Bouton 1Il permet d'effacer tous les dessins dans l'image. Bouton 2Il permet de tracer en vert la zone de décharge dans l'image, comme on peut le voir un sur l'image de l'interface. Bouton 3Il permet de tracer en rouge la zone de test dans l'image, comme on peut le voir un sur l'image de l'interface. Bouton 4Il permet de tracer en bleu la zone de recharge dans l'image, comme on peut le voir un sur l'image de l'interface. Bouton 5Il permet de tracer en rouge la grille utilisée dans l'algorithme de déplacement du robot. Bouton 6Il permet de tracer et de numéroter en cyan les carrés délimitant les obstacles, comme on peut le voir un sur l'image de l'interface. Bouton 7Il permet de numéroter en noir les objets dans l'images, comme on peut le voir un sur l'image de l'interface. Bouton 8Il actionne une boîte de dialogue permettant d'éliminer certains objets qui ont été mal identifiés ou ceux que l'on ne désire pas ramasser.
3- Boutons de contrôle du robot
Bouton 1Ce bouton permet d'actionner l'électro-aimant du robot. Bouton 2Ce bouton permet de désactiver l'électro-aimant du robot. Bouton 3Ce bouton force le robot à aller à la zone de recharge et s'occupe d'actionner le mécanisme de recharge. Bouton 4Ce bouton fait apparaître une boîte de dialogue permettant de donner une distance en centimètres à parcourir par le robot. Si la distance est positive, le robot avance, si elle est négative, le robot recule. La distance maximale est de 100cm dans les deux directions, cela est dû à l'imprécision du robot. Bouton 5Ce bouton fait apparaître une boîte de dialogue permettant de donner un angle en degré selon lequel le robot doit tourner. Si l'angle est positif, le robot tourne dans le sens anti-horaire, si il est négatif, le robot tourne dans le sens horaire. L'angle maximum est de 180 degrés dans les deux directions.
Évaluation des solutions
Points forts du projet
Limitations
Améliorations possibles
Voici une liste d'options intéressantes et simples à réaliser susceptibles d'améliorer la solution développée au niveau de l'interface personne système :
Conclusion
Bien que l'analyse d'image semble simple grâce aux nombreuses fonctions fournies dans la librairie MIL6.0, ce n'est pas si facile. Il est important de bien comprendre le fonctionnement de ces fonctions. On a également dû passer beaucoup de temps pour déterminer les bons paramètres à utiliser pour chacune de ces fonctions.
De même, l'algorithme de déplacement nécessite beaucoup d'efforts, notre algorithme est loin d'être optimal, mais ce n'était pas le but de notre projet. Cette partie du projet aurait due être à part de l'acquisition d'images puisqu'elle requiert beaucoup de temps.
Finalement, l'interface usager aurait pu offrir beaucoup plus pour l'usager, mais encore une fois beaucoup de temps a été mis pour faire fonctionner le projet, c'est-à-dire l'analyse d'images et l'algorithme de déplacement du robot. Cela a eu pour résultat que peu de temps restait pour l'interface, limitant quelque peu les options qui auraient pu être mises à la disponibilité de l'usager.
Bref, cette partie du projet fut très longue à développer, mais les résultats obtenus sont très satisfaisants. L'analyse de l'image permet d'identifier très bien tous les obstacles et objets partout dans la zone de test, ainsi que de trouver la délimitation de chacune des zones. On détermine la position des objets et obstacles au centimètre près dans l'image. Le position et l'angle du robot sont aussi déterminés de façon relativement précise. L'algorithme de déplacement du robot n'est pas optimal, mais il est simple d'implémentation et permet au robot de se déplacer sans heurter d'obstacles. Finalement, l'interface usager est simple d'utilisation et tout de même très bien pour le peu de temps dont nous disposions pour la réaliser.
Objectifs
Cette section vise à réaliser les 3 objectifs suivants:
Potentiels et contraintes
1. Module de saisie
2. Module d'évaluation de la charge et dispositif de recharge
Solutions
Les solutions developpées ici le sont dans un contexte "maître-esclave", tel que mentionné à la section Programmation. L'ordinateur initie tous les dialogues et prélève sur les divers périphériques l'information désirée.
Les solutions privilégiées sont celles qui minimisent:
Elles doivent d'autres part:
On remarquera que la minimisation des mouvements du robot ou la minimisation de son poids influencent du même coup la consommation énergétique.
1- Solution pour la saisie de pièces par le robot.
Le développement et l'implantation de ce module ont été réalisés en premier afin de fournir, aux équipes chargées de l'acquisition vidéo et des télécommunicaitions, le nécessaire pour en permettre la reconnaissance visuelle et en évaluer l'interférence possible avec les communications.
La solution retenue utilise un bras immobile auquel est fixé un électro-aimant. Dans cette stratégie, seule la pièce (à saisir) se déplace lors de la collecte et la décharge sous l'action du champ magnétique.Ce bras est ajustable verticalement pour faciliter le réglagle de la hauteur de l'électro-aimant par rapport au niveau du sol.
Calcul du champ magnétique
Description des composantes
Impact sur l'équilibre du robot
Impact sur les autres sous-systèmes
2- Solution pour la mesure de la consommation énergétique
Figure 1 - Diagramme en blocs du module d’évaluation de la consommation énergétique
Figure 2 - Plan du module d'évaluation de la consommation énergétique
3- Solution pour la recharge des batteries
Figure 3 - Vue d'ensemble du dispositif de recharge
![]() |
![]() |
Figure 4 - Détails du dispositif de recharge
Évaluation des solutions
Atteinte des objectifs
Les objectifs de base, étant la saisie d'objets métalliques ainsi que la gestion de l'énergie des batteries, ont été atteints quoique pas de façon optimale.
Principales faiblesses
Les faiblesses résident dans la consommation élevée d'énergie lors du transport des pièces. Par contre, la gestion d'énergie permet d'éviter que le robot ne tombe en panne suite à une utilisation intense de l'électro-aimant.
Impact sur les communications
La communication n'est perturbée que pendant les moments de variations du champ magnétique, c'est à dire lors de la saisie et du dépôt des pièces. Comme les commandes envoyées au robot se font en dehors de ces périodes, il n'y a donc pas d'interférences lors de la communication.
Contraintes mécaniques
L'arrêt des bras de recharge, qui viennent percuter l'anneau de recharge à la partie supérieure de robot, peut engendrer des problèmes à long terme, car la secousse provoquée par l'impact est relativement importante. Il serait souhaitable d'utiliser un controle PI afin de réduire la vitesse des bras à l'approche du robot. Par contre ceci aurait demandé un développement considérable en fonction du temps alloué.
Consommation énergétique
L'énergie moyenne consommée est difficilement calculable car elle est en étroite relation avec le nombre de pièces tranportées. En effet, la consommation élevée de l'électro-aimant a un effet déterminant sur la durée d'utilisation des batteries sur une seule recharge. Une estimation réaliste du travail que peut faire le robot à partir d'une charge complète des batteries est sensiblement équivalente au transport d'environ 20 pièces sur une distance moyenne de 2 mètres. Évidemment, cet estimé est tributaire du nombre d'obstacles pouvant perturber le tracé rectiligne de la trajectoire.
Délai de recharge des piles
Le délai de recharge est directement dépendant du type de pile utilisée. Ainsi pour des piles NiCad de 800 mA/hr il faudrait 4 heures de recharge à 200 mA/hr. Car il faut éviter de faire chauffer les batteries en rechargeant trop rapidement, ceci détruit l'électrolyte. Dans le cas de batteries à recharge rapide, la recharge peut être réalisée en une heure.
Optimisations
Objectifs
La programmation du robot implique la réalisation des objectifs suivants:
Potentiels et contraintes
Les potentiels et contraintes dans la réalisation de ces objectifs s'énoncent comme suit:
Solution
La solution développée capitalise sur les points suivants:
Elle se décrit en 6 points.
1. Adoption d'une stratégie "Maître-esclave"
L'ordinateur prend l'initiative de contrôler la communication. Le robot attend d'être interrogé par l'ordinateur, pour en connaître l'état à tout instant et lui transmettre les ordres à exécuter.
2. Fonction avance()
Elle permet d’avancer et de reculer en ligne droite selon une vitesse et une distance. La vitesse du robot est constante et la fonction reçoit un paramètre de distance en centimètre (± 0 à 100). On obtient une précision de quelques centimètres pers. Si un des senseurs du robot est activé (collision avec un objet), le robot s’arrête et attend la prochaine commande.
3. Fonction tourne()
Elle permet de tourner sur place dans le sens horaire et anti-horaire selon le paramètre qu’elle reçoit, soit ± 0 à 360 degrés. On obtient une précision raisonnable.
4. Fonction electroaimant()
Elle reçoit « 1 » en paramètre pour activer l’électroaimant, et « 0 » pour désactiver. Cette fonction utilise le port D du robot. Elle a été développée avec les responsables de l’électrotechnique.
5. Protocole de communication
6. Communication série
Une classe en C++ GeoRobotCom a été développée et testée avec succès pour permettre la communication par le port série de l’ordinateur. Cette classe utilise les MFC et interface la classe CSerialPort. Elle contient seulement la fonction Commande(), qui prend en paramètre la commande à envoyer au robot, attend et retourne la réponse du robot.
Évaluation de la solution
Atteinte de l'objectif
L’objectif de départ a été atteint. Nous avons développé un programme pour le robot qui répond à toutes nos attentes de base. Un interface logicielle pour la communication série sur l’ordinateur a été conçu et testé et est fonctionnel pour le projet.
Principales faiblesses
Le robot ne s’arrête pas de lui même s’il rencontre un obstacle. Il ne peut savoir de lui même si les piles doivent être rechargé :il le fait sur commande de l’ordinateur. Pour ce faire, il aurait fallut développer les fonctions de façon « multithread ». Malheureusement le temps manquait pour réaliser cette fonctionnalité, qui aurait été intéressante, et pas trop difficile à implanter.
Délais de traitement
Le programme du robot s’exécute avec une assez grande rapidité. En fait, il ne s’exécute pas à sa pleine vitesse, car il attend les commandes résultant de la partie logicielle d’acquisition d’image qui est plus lente que la partie du robot.
Robustesse
Le programme du robot pourrait être plus robuste. Quand il reçoit des informations du port série alors qu’il ne s’y attends pas, il peut arriver que le programme devienne hors fonction, et que l’on doivent recharger le « pcode ».
Quantité de code
Améliorations possibles
Objectif
Cette section vise à réaliser un lien de communication RF fiable à deux directions (full duplex) dont les entrées et les sorties sont compatibles avec le protocole RS-232.
Stratégies
1. Module transmetteur/récepteur intégré
Le choix d'un module transmetteur/récepteur intégré comporte l'avantage d'être peu dispendieux et offre une économie de temps appréciable comparée à la conception à neuf de circuits de modulation et de démodulation
2. Fréquence porteuse de 433,92 MHz
Une fréquence autour de 40 MHz est initialement visée. À cette fréquence, l'électronique des circuits est plus robuste et la longueur des antennes se situe dans des dimensions acceptables. Pour des raisons exposées dans la section des contraintes, ce choix est mis de côté et une porteuse de 433,92 MHz est retenue.
3. Modulation en amplitude (AM)
La modulation en amplitude (AM) est retenue car elle est plus facile à visualiser si des problèmes surviennent. Toutefois, avec les modules utilisés, le type de modulation importe peu, étant donné que ces derniers sont déjà tout monté et ne font que prendre une entrée et la moduler et vice-versa.
4. Module RTL-DATA-SAW
Le module choisi est le RTL-DATA-SAW de la compagnie ABACOM Technologies Inc.. Ce dernier est un " transceiver " qui peut moduler une entrée TTL (0-5 V) de 0 à 3 KHz par la modulation OOK (On Off Keying) à 433,92 MHz. Il peut aussi démoduler un signal identique provenant d’un autre module. La modulation OOK est en fait une modulation en amplitude (AM) avec des niveaux On (5 V) ou Off (0 V). . La puissance d’émission du module se situe autour de 9 mW, ce qui est suffisant pour les besoins du projet.
5. Conversion RS232 - TTL
Pour convertir les entrées du protocole RS-232 en TTL, et vice-versa, un circuit intégré de la compagnie MAXIM est choisi. Le MAX-232N convertit parfaitement des entrées du protocole RS-232 en TTL, de même que des entrées TTL en RS-232. Ses fonctions ont facilité la réalisation du circuit des modules de transmission/réception.
6. Alimentations indépendantes
L’alimentation des circuits s'effectue par des alimentations indépendantes. Ainsi l’intégration est beaucoup simplifiée et les batteries d’alimentation du robot sont moins exploitées. Chaque module a sa propre batterie 9 V. Pour fournir l’alimentation 5 V aux modules ABACOM nous avons utilisé des régulateurs L7805CV.
7. Antenne "quart d'onde"
Des antennes de type "quart d’onde" sont utilisées. Leur longueur d'onde de 17,2 cm est très satisfaisante.
Contraintes
1. Dimension du boîtier
2. Longueur des fils et soudure
3. L'électro-aimant
4. Mode d’opération Full-duplex
Solution
Nous pouvons maintenant parfaitement communiquer entre deux ordinateurs par le biais de leur port série et de l'interface d'Hyper Terminal de Windows. Dans une telle communication le taux d'erreur est très faible et ne vaut pas la peine d'être considéré. Toutefois la dernière contrainte mentionnée ci-haut n'a pas été complètement surmontée. C'est notamment la seule qui nous a vraiment causé problème.
Pour la démonstration, avec l'équipe de programmation et de l'interface personne-machine, nous nous sommes préparés à communiquer uniquement du PC au Robot. Il nous faudrait un peu plus de temps pour réaliser la communication dans les deux directions.
Comme nous l'avons mentionné, nous savons parfaitement pourquoi ça ne fonctionne pas. Mais nous sommes limités dans le temps de réalisation et d'intégration. Malheureusement, si le blocage de la réception ne peut fonctionner dans les délais prévus, nous ne pourrons gérer la charge des batterie, partie qui fonctionne très bien.
La Figure 1 qui suit illustre de manière schématique les modules de transmission/réception qui ont été réalisés.
Figure 1 - Schéma bloc du lien de communication
Sur cette dernière, nous pouvons voir que le signal à transmettre (Tx), autant pour l'ordinateur que pour le robot, est converti du protocole RS-232 au TTL par le circuit intégré de MAXIM. Ce signal est ensuite inversé, c'est-à-dire que les 1 deviennent des 0 alors et vice-versa, pour ensuite être modulé en amplitude par le module ABACOM et finalement être transmis sur l'antenne. Sur la figure, nous pouvons très bien voir que la réception s'effectue exactement à l'inverse de la transmission.
Sur la figure 2, nous apercevons les versions finales des modules de transmission/réception qui sont reliés à l'ordinateur et au robot. Ils sont montés sur des plaques perforées.
![]() |
![]() |
Figure 2 - Illustration des modules de communication
Évaluation des solutions
Optimisation
Pour l'atteinte complète des objectifs, les trois points suivants nécessitent une amélioration :
Intégration avec la programmation
Pour optimiser la communication bidirectionnelle, il faudrait travailler davantage sur le logiciel. Le problème consiste au fait que le programme va lire ce qu'il transmet en pensant que ça vient de l'autre terminal. Ce problème est inévitable en utilisant deux liens de communications à la même porteuse.
La solution envisageable consiste à effacer toutes les données lues pendant une période de transmission. Ainsi, le programme communiquerait dans une direction à la fois, sans gêner le déroulement des autres aspects du projet. Une telle statégie nécessite toutefois une période d'intégration plus substantielle.
Immunité au bruit
Dans le but de limiter la perturbation engendrée par le champs magnétique de l'électroaimant, nous pourrions monter le module relié au robot dans un boîtier d'aluminium. De cette façon, les perturbations causées par les moteurs et la relâche de l'électroaimant auraient un effet plus minime.
Optimisation de l'espace sur les montages des modules
La réfection des modules sur d'autres plaques perforées améliorerait grandement l'esthétique du montage. Comme nous avons travaillé avec une porteuse à haute fréquence, nous avons réalisé les montages sur des plaques perforées pour en vérifier promptement le fonctionnement. Les ajouts successifs de composantes au long du projet sans planification d'ensemble ont conduit à une organisation peu optimale. Ainsi, cette réfection des modules en optimiserait la disposition.
Communiquer avec GéoRobot à l'adresse suivante