Systèmes ordinés en temps réel Projet de session Robot mobile

Embed Size (px)

Citation preview

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    1/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 1 de 13

    ELE542 Systmes ordins en temps rel

    Projet de session

    Robot mobile

    1.0- Objectifs

    - Utiliser et programmer un microcontrleur dans un systme embarqu en temps rel.

    - Se familiariser avec larchitecture de base dun programme qui traite des vnements

    synchrones et asynchrones en temps rel.

    - Se familiariser avec un systme dexploitation multitche de systmes embraqus en

    temps rel (RTOS).

    - Se familiariser avec le fonctionnement dun microcontrleur et de ses priphriques

    internes.

    - Se familiariser avec les entres/sorties et protocoles de communication habituellement

    utiliss dans les systmes embarqus.

    2.0 DescriptionLe but du projet est dutiliser le microcontrleur ATMega32 pour faire fonctionner un

    petit robot mobile en mode tlguidage et avec dtection dobstacle. Les

    dplacements du robot sont dcids par des commandes de tlguidage tandis que le robot

    dtecte et vite les collisions avec les obstacles de faon autonome.

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    2/13

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    3/13

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    4/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 4 de 13

    Logiciel de tlguidage :

    Le logiciel de tlguidage est une application qui roule sur le PC et qui fait le lien

    entre une petite manette de jeu (Logitech Precision II) ou la souris et la carte de

    dveloppement qui contrle le robot. Le logiciel reoit les commandes en provenance

    de la manette de jeu ou la souris et les transmet la carte STK500 via le lien srie.

    En temps normal, le robot reoit les commandes par lien Bluetooth grce un module

    RS232-Bluetooth install sur lordinateur et un autre module RS232-Bluetooth

    connect au port srie de la carte STK500. Par contre, lors du dveloppement, le lien

    Bluetooth peut est remplac par un simple cble srie qui relie lordinateur

    directement la carte STK500.

    De plus, le logiciel de tlguidage fournit une petite console qui permet dafficher des

    messages transmis par le robot via le lien srie et qui peut servir pour transmettre desmessages de dverminage.

    Logiciel de simulation :

    Le logiciel de simulation mule le comportement du robot tels que le dplacement et

    la dtection dobstacles ainsi quun environnement virtuel compos dobstacles et/ou

    de parcours tel quun labyrinthe. Plus prcisment, le logiciel de simulation reoit les

    commandes des moteurs (PWM, direction) produit par la carte STK500 et les

    convertit en dplacement dans lenvironnement virtuel. Simultanment, le logiciel de

    simulation dtecte la prsence dobstacles virtuels et mule le fonctionnement des

    capteurs sonars en transmettant les signaux appropris vers la carte STK500 la

    place des vrais capteurs.

    Pour sinterconnecter la carte STK500, le logiciel de simulation utilise uniquement

    des priphriques quon retrouve sur la plupart des ordinateurs personnels. Par

    exemple, les commandes de vitesse des moteurs (PWM) sont lues par les canaux

    gauche/droite du microphone (Line In) de la carte de son de lordinateur. Tandis que

    les commandes de moteurs (commandes de direction) ainsi que la communication

    I2C avec les capteurs sonars sont obtenus laide du port parallle de lordinateur.

    Grce au logiciel de simulation du robot, le dveloppement au laboratoire est fait

    principalement laide dun ordinateur PC et de la carte de dveloppement STK500.

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    5/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 5 de 13

    3.0 Partie 1 : Systme embarqu avant-plan/arrire-plan

    Le but de cette partie du projet est de dvelopper un programme selon larchitecture

    avant-plan/arrire-plan qui gre les diffrentes composantes du robot. Selon cette

    architecture, tous les vnements synchrones ou asynchrones sont traits par des

    interruptions, tels que :

    - larrive dune commande, - acquisitions de lADC,

    - fin dun cycle du PWM, - communication I2C.

    Tandis que le gros du traitement est effectu dans le programme principal et les fonctions

    que celui-ci appelle. C'est--dire, larrire-plan sera responsable du traitement suivant :

    - la conversion des trames de tlguidage,

    - la conversion des acquisitions de lADC,

    - la conversion des commandes en PWM,- la gestion des sonars et dtection des obstacles,

    - gestion de laffichage du statut du robot par les LED,

    - gestion des interrupteurs de mise en marche et darrt durgence.

    La figure ci-dessous donne un aperu (incomplet) de larchitecture gnrale du

    programme.

    Dbut

    INITIALISATION

    Convertit la trame de tlguidageen commande pour les moteurs

    CommandeReue ?

    - Dmarre PING sur un sonar- Rcupre mesure sur lautre sonar- Alterne entre sonar gauche et droit

    Tick de50 ms ?

    - Convertit valeur de lADC en valeur de vitesse- Calcul valeur de PWM- Met jour les PWM et direction des moteurs

    Fin dun cycledu PWM ?

    Change le comportement durobot pour viter la collision

    Obstacle proximit ?

    Affiche le nouveau statut sur les LEDStatutchang ?

    - Reoit les trames de tlguidage- Transmet un cho des trames- Rinitialise le Watchdog

    - Accumule les acquisitions delADC sur le canal

    - Change de canal

    Lve un drapeau de fin de cycledu PWM

    Gre la transmission et larception I2C avec les sonars

    InterruptionUART

    InterruptionADC

    InterruptionTimer/Counter 1

    InterruptionTWI

    Arrire-plan Avant-plan

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    6/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 6 de 13

    3.1 Spcifications

    - Commandes de tlguidage :

    - Chaque trame de tlguidage est compose de 3 donnes de 1 Byte :

    Commande

    0xF1 commande normale

    0xF0 arrt obligatoire

    Vitesse

    Valeur = 0 200

    (vitesse = -100% 100%)

    Angle

    Valeur = 0 180

    (angle = 0 360o)

    - Les trames sont transmises continuellement par le tlguidage.

    - Le robot doit transmettre un cho de chaque donne de trame reue

    immdiatement.

    - La communication se fait par le UART selon le protocole suivant :

    - vitesse = 9600 Baud - 1 bit darrt - Mode : Interruption- 8 bits de donnes - pas de parit

    - Envoie dune trame de debug :

    - Le tlguidage permet de recevoir des trames de debug et de les afficher dans

    lespace blanc sous le contrle dangle et de vitesse. Pour ce faire, il suffit

    denvoyer une chaine de caractre dbutant par 0xFE et se terminant par 0xFF.

    - Pour viter les problmes lors de cette transmission, il faut cesser

    temporairement de transmettre lcho de chaque donne reue.

    - Dtection dun bris de lien de tlguidage :

    - Le robot doit dtecter ds que possible un bris de communication avec le

    tlguidage; c'est--dire, lorsque le robot ne reoit pas de commandes de

    tlguidage pendant un certain intervalle de temps.

    - Le module Watchdog est particulirement bien adapt pour cette tche de

    surveillance. Il est programm pour redmarrer le systme (RESET) aprs uncertain dlai moins quil ne soit rinitialis avant la fin du dlai.

    - Le Watchdog doit tre configur avec un dlai judicieusement choisit et devra

    tre rinitialis larrive de chaque commande de tlguidage. Ainsi, si les

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    7/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 7 de 13

    commandes de tlguidage tardent arriver, le Watchdog redmarrera le

    systme et le robot sera replac dans son tat initial, en attente dtre activ.

    - Affichage de ltat du robot par les LED :

    - Les LED de la carte STK500 servent afficher certaines informations sur ltat

    du robot.

    - La dfinition de chacune de ces LED est donne dans le tableau ci-aprs :

    # LED Signification

    0 Pas utilise

    1 Commande de tlguidage reue (clignote)

    2 Obstacle dtect par le sonar droit

    3 PING envoy par le sonar droit (clignote)

    4 Obstacle dtect par le sonar gauche

    5 PING envoy par le sonar gauche (clignote)

    6 Robot en attente (tat A voir interrupteurs)

    7 Robot actif (tat B voir interrupteurs)

    - Interrupteurs de mise en marche et darrt durgence :

    - Linterrupteur # 6 permet dactiv le robot

    - Linterrupteur # 7 force un arrt durgence du robot

    - La logique de fonctionnement de la mise en marche et de larrt durgence est

    donne par la machine tats finis ci-dessous :

    tat A : - Robot en attente

    - Tous les systmes sont inactifs

    tat B : - Robot actif

    - Tous les systmes sont en fonction

    - Calibration des moteurs :

    - cause de la variabilit des composantes du robot (tolrance des composantes,

    charge de la batterie, ), les mesures de vitesse des moteurs doivent tre

    calibres lors de linitialisation du systme.

    A BSW6

    SW6

    SW7

    SW7

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    8/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 8 de 13

    - La calibration se fait en mesurant les vitesses maximum (positive et ngative) et

    la vitesse nulle de chacun des deux moteurs (gauche et droite) de la faon

    suivante :

    CAL DIR2 DIR1 PWM Mesure

    1 0 1 0 Vmax+

    0 0 1 0 Vzero+

    0 1 0 0 Vzero-

    1 1 0 0 Vmax-

    o CAL = bit de calibration

    DIR1-DIR2 = bits de direction du moteur voir figure 1

    PWM = signal de PWM du moteur

    - La calibration est effectue en prenant la moyenne dune srie de mesure pour

    chaque vitesse.

    - Les deux signaux de PWM des moteurs doivent tre maintenus zro pendant la

    procdure de calibration.

    - Le bit de calibration (CAL) est maintenu zro pendant le fonctionnement

    normal du robot.

    - Mesure de la vitesse des moteurs :

    - La vitesse des moteurs gauche et droit est mesure par sur les canaux 0 et 1 de

    lADC, respectivement.

    - La configuration de lADC est la suivante :

    - Frquence de lhorloge de lADC = 125 kHz

    - Mode dopration = Freerun

    - Rfrence de voltage = AREF

    - Mode de traitement des acquisitions = Interruption

    - La routine dinterruption accumule les mesures dans une variable pour chaque

    moteur, dont la moyenne sera calcule plus tard lorsque la valeur de la vitesse

    sera utilise pour rguler le PWM (voir Rgulation de la vitesse des moteurs).

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    9/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 9 de 13

    - Puisque lADC fournit une valeur entre 0 et 1023 et que les bits A2 et A3 nous

    permettent dinterprter cette valeur comme positive ou ngative, le rapport

    entre les valeurs fournies par lADC et la vitesse du moteur est le suivant :

    - Rgulation de la vitesse des moteurs :

    - Les vitesses de rotation des moteurs sont contrles par deux signaux de PWM

    gnrs par le chronomtre/compteur # 1 (Timer/Counter # 1). En effet, ce

    chronomtre/compteur de 16 bits est en fait double et peut gnrer 2 signaux dePWM indpendants avec une excellente rsolution.

    - Le chronomtre/compteur # 1 doit tre configur de la faon suivante :

    fPWM = 200 Hz Mode dopration recommand :

    PWMB = moteur gauche - Fast PWM

    PWMA = moteur droit - Interruption de dbordement

    - Niveau haut au dbordement

    - Niveau bas la comparaison

    - Le sens de rotation des moteurs est contrl par 2 bits de direction (DIR 2, DIR1)

    pour chaque moteur, selon la logique suivante :

    - Pour que les mouvements du robot correspondent aux commandes de

    tlguidage, la vitesse des moteurs doit tre rgule par la fonction CalculPWM

    qui sera fournie. Le prototype de cette fonction est donn ci-dessous :

    DIR2 DIR1 Sens de rotation

    0 0 Neutre

    0 1 Marche avant

    1 0 Marche arrire

    1 1 Frein

    Vzero+ Vmax+

    0% 100%

    0 1023Marche avantMarche arrire

    Vmax- Vzero-

    vitesse

    ADC

    -100% 0%

    -1023

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    10/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 10 de 13

    void CalculPWM (float Vitesse, float Angle, float Vg, float Vd, float *PWMg, float *PWMd)

    o -1.0 Vitesse 1.0

    0.0 Angle 2

    -1.0 Vg 1.0

    -1.0 Vd 1.0

    -1.0 PWMg 1.0

    -1.0 PWMd 1.0

    Note : Les valeurs de vitesse et de PWM sont exprimes en %.

    - Ainsi, la procdure pour rguler le comportement du robot est la suivante :

    1 Calculer la moyenne des chantillons recueillit par lADC.

    2 Excuter la fonction CalculPWM.

    3 Mettre jour les PWM et les bits de direction des moteurs.

    - Dtection dobstacle avec les sonars :

    - La communication avec les sonars est tablie laide du module TWI et selon le

    protocole de communication I2C. Ainsi, le TWI devras tre configur de la

    faon suivante :

    Mode dopration = - Traitement par interruption fTWI = 10 kHz

    - Mode matre

    - pas dadresse esclave

    - Les deux sonars sont connects sur le mme bus TWI et ont leur adresse propre :

    Adresse

    En lecture En criture

    Sonar gauche 0xE1 0xE0Sonar droit 0xE3 0xE2

    Note : En fait, le bit LSB de ladresse dtermine si une opration

    dcriture (LSB = 0) ou de lecture (LSB = 1) sera effectue par le

    matre (TWI) vers lesclave (sonar).

    Provient des commandes de tlguidage

    Provient des mesures de lADC

    Valeurs de PWM retourns par la fonction

    tous les 5 ms

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    11/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 11 de 13

    - En plus de leur adresse personnelle, les sonars possdent les 4 registres internes

    suivants :

    FonctionNo. registre

    En lecture En criture

    0 # de rvision - logiciel Commande1 inutilis Gain max

    2 Mesure - MSB Porte

    3 Mesure - LSB inutilis

    Gain : La valeur du gain dtermine la sensibilit du micro du sonar. Un gain

    lev rend le sonar plus sensible des chos faibles tels que des chos

    lointains et des chos sur des surfaces molles. Par contre, cela rend

    aussi le sonar sujet aux mesures errones.

    La squence de communication pour modifier la valeur du gain est la

    suivante :

    Adresse du sonar Valeur du gain

    (Mode criture) # du reg. (0 16)

    de gain

    Porte : La valeur de la porte dtermine le temps maximum dcoute du

    sonar. Les chos qui reviennent aprs ce temps dcoute sont ignors.

    Ainsi, selon la vitesse du son dans lair (environ 350 m/s), ce temps

    dcoute dtermine une dure de vol aller-retour et donc une distance

    maximum. La formule de calcul de la porte est la suivante :

    Dure dcoute (en s) (Reg. de porte + 1) * 255 s

    ou

    Porte (en cm) = (Reg. de porte + 1) * 4.3 cm

    0xE0 0x01 0x08

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    12/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 12 de 13

    La squence de communication pour modifier la valeur de la porte

    est la suivante :

    Adresse du sonar Valeur de la porte(Mode criture) # du reg. (0 255)

    de porte

    Commande : Le registre de commande permet de dclencher un PIng du

    sonar et deffectuer une mesure selon un de 3 modes.

    La squence de communication pour modifier la valeur de la

    porte est la suivante :

    Adresse du sonar Commande :(Mode criture) # du registre 0x50 : mesure en pouce

    de commande 0x51 : mesure en cm0x52 : mesure en s

    Mesure : Le rsultat dun PING du sonar est fournit sous la forme dun

    nombre non-sign de 16 bits, rpartit dans 2 registres. Ces 2

    registres doivent tre lut sparment. La squence de

    communication pour lire des registres exige que le numro de

    registre soit transmit dabord au sonar, avant de lire sa valeur :

    Adresse du sonar Adresse du sonar Restart(Mode criture) # du reg. (Mode lecture) # du reg.

    de mesure de mesure(MSB) (LSB)

    - Puisque le robot possde 2 sonars et pour viter quils sinterfrent lun lautre,

    les sonars devront faire leur PING en alternance avec un dlai suffisant entre les

    0xE0 0x02 0x2F

    0xE0 0x00 0x51

    0xE0 0x02 0xE1 mesure 0xE0 0x03 0xE1 mesure

  • 8/7/2019 Systmes ordins en temps rel Projet de session Robot mobile

    13/13

    ELE542 Systmes ordins en temps rel Projet de session Robot mobile Page 13 de 13

    deux. Ainsi, la configuration et la gestion recommandes des sonars sont

    donnes ci-dessous :

    - Configuration : Gain = 8 12

    Porte = 1.5 m 3 m

    2 options : - porte fixe

    - porte proportionnelle la vitesse

    - Gestion :

    1 Dclenche un PING dans un sonar,

    2 Rcupre la mesure de lautre sonar,

    3 Alterne les sonars.

    tous les 50 ms