Enseignant: |
Jérôme Collin, responsable (local M-4013, poste 5060) |
|
Support technique supplémentaire: | Laurent Tremblay (local M-4011, poste 7181) | |
Chargés de laboratoire: | Section 1: |
Kais Fallouh (Lundi AM) Romain Lebbadi-Breteau (Mercredi PM) |
Section 2: |
Tristan Rioux (Mardi PM) Gaëtan Florio (Jeudi AM) |
|
Section 3: |
Luciano Garin-Iriarte (Lundi PM) Ely-Cheikh Abass (Jeudi PM) |
|
Section 4: |
Dorine Dantrun (Mardi AM) Meriam Ben Rabia (Vendredi AM) |
|
Section 5: |
Amélie Simard (Mercredi AM) Abdul-Wahab Chaarani (Vendredi PM) |
|
Section 6: |
Marc-Antoine Manningham (Mardi soir) Laurent Bourgon (Jeudi soir) |
Introduction au robot et à sa programmation
Le
cours INF1900 est un projet intégrateur qui vise à mettre en
pratique des notions acquises dans d'autres cours de première année
en génie informatique et en génie logiciel. Ce projet consiste à
programmer un robot qui est, en réalité, un petit mobile pouvant
suivre des parcours variés selon ce que ses capteurs détectent dans
son environnement immédiat.
Le robot
Un robot possédant deux roues motrices et deux roues libres représente une application de base de la robotique. Généralement, un tel robot suit un parcours plus ou moins complexe déterminé par une ligne noire tracée sur un grande table, une source de lumière ou de son, ou encore par de petits murs qui forment un labyrinthe par exemple.
La figure montre un schéma simplifié du profil du robot. Il est formé d'une base à laquelle se greffe les composantes principales à l'aide de vis et de bagues d'espacement (spacers) représentées en noir.
L'ensemble moteurs à courant continu (CC), engrenages et roues motrices: il s'agit d'un ensemble disponible commercialement. Ces pièces forment un tout bien intégré qui permet une réduction des coûts.
La roue libre: une bille encastrée dans un boîtier de plastique mais qui conserve sa mobilité (roulette boule ou roulette pivotante de type boule en français ou encore «ball caster» en anglais).
La carte microcontrôleur: il s'agit d'une plaque de circuit imprimé sur laquelle prends place un microcontrôleur Atmel AVR ATMega324PA ayant 4 ports numériques de 8 bits dont un peut être converti en port analogique. Cette carte mère est un petit ordinateur autonome qui est programmable par port USB.
La carte du pont en H: c'est une carte de circuit imprimé sur laquelle repose un circuit classique d'amplificateur appelé pont en H utilisé couramment pour le contrôle des moteurs CC. Il n'est cependant pas essentiel de comprendre son fonctionnement pour arriver à programmer le robot.
Les capteurs: cette partie pourra être très différente selon le type de parcours effectué par le robot puisque différents types de capteurs pourront être utilisés. Ce pourra donc être un sonar ou encore un détecteur de distance ou de couleurs. Dans d'autres cas, il pourra même s'agir d'une plaque de métal qui sert de support à un capteur et son boîtier.
Les piles: deux types de piles sont requis sur le robot. Une pile 9 Volts alimente la carte microcontrôleur et les capteurs, et un ensemble de 6 piles AA fournit la puissance exclusivement aux moteurs.
Programmation
La programmation demeure l'aspect le plus important du projet étant donné que le cours s'adresse à des étudiants en génie informatique et en génie logiciel. Le robot sera programmé en C et C++. Du code assembleur pourra également être inclus au besoin. La lecture et l'écriture sur des ports analogiques et numériques, le contrôle du comparateur PWM et des minuteries (timers) et l'adressage d'une mémoire seront les principales notions introduites. Il faudra donc appliquer certains principes de fonctionnement des microprocesseurs et des systèmes numériques. Une boucle infinie effectuera continuellement une lecture des capteurs pour réajuster la vitesse et la direction des moteurs et ainsi créer un système en boucle fermée. De plus, des notions de mathématiques pourront éventuellement être nécessaire pour résoudre certains problèmes de calculs de trajectoires et de distances.
Pour ce qui est des outils de programmation des microcontrôleurs Atmel AVR, il y a un ensemble GCC, Binutils, AVRLibC (pour la compilation), et AVRDude (pour le chargement sur la carte mère). La programmation par port USB simplifie grandement le chargement des programmes sur le robot. Des notions de C/C++, de même que des méthodes de génie logiciel, seront constamment utilisées pour arriver à un bon guidage du robot.