Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret

 
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Projet de semestre
                      Section Génie Mécanique
                      Automatic Control Laboratory

                  Babyfoot
              Vision et Stratégie

                       Yoann moret
                     EPFL - master II
                    Lausanne, 17 juin 2017

Responsable de projet : Dr Christophe salzmann
Assistant Doctorant : Luca fabietti
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

                                         ii
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

                                         iv
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Projet de semestre M2 - Févr/Juin 2017                                             Yoann moret

                                          Résumé

        Ce document présente les différentes avancées que j’ai pu mener durant mon projet
     de semestre sur le babyfoot robotisé du laboratoire d’automatique. Le procéssus
     d’acquisition de la position de la balle est présenté dans un premier temps, puis ses
     limitations sont identifiées. Un filtre de Kalman a ensuite été mis en place de manière
     à pallier les difficultés rencontrées lors du suivi de la balle.
        Malgré ces efforts l’amélioration de l’algorithme de tracking de la balle représente
     un véritable enjeu pour l’avancée du projet, et fait l’objet de la troisième partie de
     ce rapport. Pour finir, une dernière section est consacrée à une brève présentation
     des modifications apportées au VI de stratégie.
        Ce rapport se veut volontairement détaillé dans le but de transmettre au mieux les
     connaissances acquises aux prochains étudiants. Chacune de ces sections est munie
     d’un guide pour utlisateur permettant au lecteur intéressé de continuer le travail
     mené jusqu’ici.

                                               v
Babyfoot Vision et Stratégie - Lausanne, 17 juin 2017 EPFL - master II Yoann moret
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

                                         vi
Projet de semestre M2 - Févr/Juin 2017                                                                         Yoann moret

Table des matières
1 Vision de la balle                                                                                                                   1
  1.1 Obtention de la position . . . . . . . . . . . . . . . . .           . .     . . . . . .             .   .   .   .   .   .   .   1
  1.2 Analyse des positions mesurées . . . . . . . . . . . . .             . .     . . . . . .             .   .   .   .   .   .   .   2
  1.3 Explication des mesures . . . . . . . . . . . . . . . . .            . .     . . . . . .             .   .   .   .   .   .   .   4
  1.4 Amélioration du modèle de distorsion . . . . . . . . .               . .     . . . . . .             .   .   .   .   .   .   .   5
       1.4.1 Amélioration par re-calibration . . . . . . . . .             . .     . . . . . .             .   .   .   .   .   .   .   5
       1.4.2 Amélioration par création d’un nouveau modèle                 de      distorsion              .   .   .   .   .   .   .   5
  1.5 Conclusions sur la vision de la balle . . . . . . . . . .            . .     . . . . . .             .   .   .   .   .   .   .   7
  1.6 Guide pour utilisateur : ajuster le modèle de distorsion             . .     . . . . . .             .   .   .   .   .   .   .   8
       1.6.1 Régler les paramètres du filtre . . . . . . . . .             . .     . . . . . .             .   .   .   .   .   .   .   8
       1.6.2 Recalibrer la caméra . . . . . . . . . . . . . . .            . .     . . . . . .             .   .   .   .   .   .   .   8
       1.6.3 Améliorer le modèle de distorsion . . . . . . . .             . .     . . . . . .             .   .   .   .   .   .   .   8

2 Filtre de Kalman                                                                                                                      9
  2.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                    .   .   .   .   .   .   .   .   .    9
  2.2 Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . .                       .   .   .   .   .   .   .   .   .    9
  2.3 Théorie sur le filtre . . . . . . . . . . . . . . . . . . . . . . . . . .                    .   .   .   .   .   .   .   .   .   10
  2.4 Démarche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                       .   .   .   .   .   .   .   .   .   11
  2.5 Performances du filtre . . . . . . . . . . . . . . . . . . . . . . . .                       .   .   .   .   .   .   .   .   .   15
  2.6 Guide pour utilisateur : Comment travailler sur le filtre . . . . .                          .   .   .   .   .   .   .   .   .   16
       2.6.1 Analyser les sorties du filtre . . . . . . . . . . . . . . . . .                      .   .   .   .   .   .   .   .   .   16
       2.6.2 Code Matlab pour comprendre d’influence des paramètres                                .   .   .   .   .   .   .   .   .   17

3 Algorithme de tracking                                                                                                               17
  3.1 Premier algorithme . . . . . . . . . . . . . . . . . . . . . . .                 . . . .         .   .   .   .   .   .   .   .   17
  3.2 Deuxième algorithme . . . . . . . . . . . . . . . . . . . . . .                  . . . .         .   .   .   .   .   .   .   .   17
  3.3 Faiblesses de la méthode de tracking . . . . . . . . . . . . .                   . . . .         .   .   .   .   .   .   .   .   18
  3.4 Guide pour utilisateur : comment améliorer le tracking de la                     balle .         .   .   .   .   .   .   .   .   18
      3.4.1 Modifier la zone de recherche du 1er algorithme . . .                      . . . .         .   .   .   .   .   .   .   .   18
      3.4.2 Créer un algorithme intermédiaire . . . . . . . . . .                      . . . .         .   .   .   .   .   .   .   .   18
      3.4.3 Trouver une alternative au pattern matching . . . .                        . . . .         .   .   .   .   .   .   .   .   19

4 Modifications du VI stratégie                                                                                                        19
  4.1 Présentation du VI stratégie . . . .     . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
  4.2 Calibration des joueurs . . . . . . .    . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
  4.3 Tirs croisés . . . . . . . . . . . . .   . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
  4.4 Mécanique du tir . . . . . . . . . .     . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  4.5 Stratégie de défense . . . . . . . .     . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  4.6 Guide pour utilisateur : calibration     et futurs   travaux     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      4.6.1 Calibration des joueurs . .        . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      4.6.2 Prochains travaux . . . . .        . . . . .   . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23

                                                 vii
Projet de semestre M2 - Févr/Juin 2017          Yoann moret

                                         viii
Projet de semestre M2 - Févr/Juin 2017                                             Yoann moret

1     Vision de la balle
1.1    Obtention de la position
   Ce paragraphe présente les différentes étapes qui permettent à l’algorithme de trouver la
position de la balle (Fig 1.1).

                                          Figure 1.1

Etape 1
   En premier lieu la caméra située sous le babyfoot prend une photographie en couleur. Le
Laboratoire d’Automatique posséde plusieurs caméras dont les principales caractéristiques sont
présentées tableau 1.1 [1].

             Table 1.1 – Principales caractéristiques des caméras du laboratoire

            Caméra               Couleur              Résolution   Images par seconde
            MQ003CG CM           Couleur             648 x 488           >500
            MQ022CG CM           Couleur             2048 x 1048          170
            MQ022RG CM           Noir et blanc       2048 x 1088          170

   La caméra actuellement employée est la MQ003CG CM de la marque Ximea. Il semble
cependant préférable de favoriser la fréquence d’acquisition à la qualité de l’image, les autres
caméras n’ont donc pas été utilisées lors de ce projet.

                                                 1
Projet de semestre M2 - Févr/Juin 2017                                               Yoann moret

Etape 2
    De manière à identifier la balle plus facilement, un filtre est appliqué sur l’image acquise.
    Les paramètres de ce filtre sont ajustés manuellement par l’utilisateur lors du lancement
du programme. Ce dernier devra alors faire en sorte que seule la balle apparaisse en blanc sur
l’image filtrée.
    Cette étape était fortement influencée par la luminosité de la pièce, et les faibles variations
de luminosité sur la surface du terrain s’avéraient être problématiques. Un dispositif de LED a
alors été mis en place par Bartélémy tremeau afin d’obtenir une lumière forte et homogène sur
l’ensemble de la surface du terrain.

Etape 3
    Arrivé à ce stade, l’algorithme possède une image noire sur laquelle la balle ressort en blanc.
Cette 3ème étape consiste alors à reconnaître la balle sur la photographie en la comparant au
motif sélectionné par l’utilisateur, au moment du lancement de l’algorithme.
    Le programme va alors chercher le motif correspondant dans une zone restreinte autour d’une
position estimée. S’il ne la trouve pas, il cherchera la balle sur l’ensemble du terrain à l’aide
d’un 2nd algorithme de suivi.
    Cette étape est fondamentale au bon fonctionnement de l’algorithme et ses limitations
peuvent ralentir fortement le programme. La 3ème partie de ce rapport est alors consacrée à
l’étude de ces deux algorithmes de tracking qui méritent d’être optimisés.

Etape 4
    Après avoir détecté le motif de la balle, son centre est identifié mais ne correspond pas à la
position physique de la balle.
    La 4ème étape consiste alors à compenser le biais que cause la distorsion de l’image sur la
position mesurée. Pour celà, le VI « IMAQ Convert Pixel to Real World » de National Instrument
est employé. Son fonctionnement est détaillé section 1.4.1.

Etape 5
    Un dernier VI est appelé afin de prendre en compte de changement de direction de la lumière
lorsqu’elle traverse la plaque de plexiglass. Après cette correction, la position finale de la balle
est obtenue.

1.2    Analyse des positions mesurées
    Dans cette section la qualité de l’acquisition des positions de la balle est étudiée. Les mesures
issues d’un tir le long d’une diagonale du babyfoot sont présentées Fig.1.2.
    Lorsque l’on zoom sur ces données, il apparaît que les positions sont disposées en escalier.
Ce phénomène vient du fait qu’aucune valeur des ordonnées n’est prise en deux pixels, chaque
marche correspond donc à une succession de mesures ou la balle à été identifiée à la même
ordonnée.

                                                 2
Projet de semestre M2 - Févr/Juin 2017                                                   Yoann moret

    La différence entre les données receuillies et la trajectoire physique de la balle vient donc de
la pixelisation du terrain, qui demeure inévitable. L’algorithme permettant de trouver la balle
est donc jugé performant lors d’un tir en diagonale.

             (a) Aperçu global des mesures                    (b) zoom sur les mesures

         Figure 1.2 – Mesures receuillies lors tir le long d’une diagonale du babyfoot

    Plusieurs mesures ont ensuite été prises à différentes abscisses lors d’un tir droit le long de
la largeur du babyfoot, elles sont présentées Fig.1.3.

          Figure 1.3 – Mesures prises lors d’un tir le long de la largeur du babyfoot.

                                                 3
Projet de semestre M2 - Févr/Juin 2017                                                  Yoann moret

    Le lecteur est invité à se pencher sur l’échelle graphique adoptée, à échelle réelle les données
semblent tracer une droite. La trajectoire receuillie peut être surprenante car elle est consti-
tuée d’une succession d’arcs de cercle alors que la trajectoire physique était rectiligne. Lorsque
les mêmes tests sont effectués dans la longueur du babyfoot, les résultats sont obtenus sont
semblables.

1.3    Explication des mesures
   Les mesures de la position de la balle semblent donc être cohérentes lors d’un tir en diagonale,
mais correspondent mal à la trajectoire physique lors d’un tir droit.
   Pour expliquer ce phénomène, il faut retracer les différentes étapes permettant d’obtenir les
mesures. Ces étapes sont illustrées Fig.1.4 et sont détaillées ci-dessous.

Figure 1.4 – Illustration du processus d’acquisition des mesures. Les valeurs sur ce graphique
ne correspondent pas à des mesures réelles.

   — La trajectoire physique de la balle est une ligne droite, représentée en bleu Fig.1.4.
   — L’effet de distorsion fait que la trajectoire vue par la lentille est courbée. Cette trajecoire
       est représentée en rouge.
   — Une fois la photographie prise, chaque point de l’espace est pixelisé. La courbe rouge est
       alors discrétisée et adopte cette structure en escalier, représentée en jaune.
   — L’étape n°4 du processus d’acquisition permet de corriger l’effet de distorsion de la lentille.
       Appliquée aux mesures discrétisées, cette correction permet d’obtenir les mesures qui ont
       été observées, en violet Fig.1.4.
Par ailleurs, cet effet ne se fait pas ressentir lorsque la trajectoire de la balle est diagonale sur le

                                                   4
Projet de semestre M2 - Févr/Juin 2017                                                Yoann moret

terrain. Cela s’explique par le fait que dans ce cas, les vitesses de la balle selon chaque axe sont
élevées : entre chaque mesure la balle aura changé de pixel selon ~x et ~y . La trajectoire pixélisée
sera alors beaucoup plus fidèle à la trajectoire analogique et en particulier, ne contiendra que très
peu cette structure en escalier. Lorsque le VI corrigeant la distorsion sera appelé, il retournera
alors des données correctement alignées.

1.4     Amélioration du modèle de distorsion
    Les mesures observées section 1.2 sont, à faible échelle, et seulement dans le cas de tirs droits,
de faible qualité. Lorsque le robot les utilise pour jouer, les quelques millimètres d’erreur sur la
position ne l’empêche pas de se placer devant la balle. Cependant, si ces mesures ne sont pas
améliorées, l’ordinateur sera toujours limité en précision et sera incapable de réaliser les mêmes
actions qu’un joueur humain.
    Le but de cette section est donc d’améliorer la qualité des mesures de la position. L’effet
de distorsion dépend seulement de la lentille et la pixelisation est pour sa part régulée par la
résolution de la caméra. L’algorithme de correction de la distorsion est alors étudié dans le but
de pouvoir l’optimiser.

1.4.1   Amélioration par re-calibration
    Le VI « IMAQ Convert Pixel to Real World » [2] est employé dans le programme afin de
redresser l’image retournée par la caméra. De manière à compenser la disorsion causée par la
lentille, une correction ∆→
                          −
                          x est alors appliquée à chaque position →
                                                                  −
                                                                  x :
                                    →
                                    −
                                    x corrigé = →
                                                 −
                                                 x mesuré + ∆→
                                                              −
                                                              x
    National Instrument fournie le VI « IMAQ Get Camera Parameters VI » [3] permettant de
déterminer la correction à appliquer en chaque point de l’image. Ainsi plusieurs modèles de
correction ∆→ −x sont disponibles dont les coefficients sont déterminés expérimentalement. Pour
celà une image à priori connue est comparée avec une photographie de cette même image ayant
subi une distorsion.
    Cette étape de calibration a été réalisée avec les différents modèles possibles. Il en ressort que
le modèle polynomial à 3 termes est le plus adapté à notre problème. En recalibrant la caméra,
les coefficients du polynôme ont été recalculés mais la qualité des mesures n’a cependant pas pu
être améliorée.

1.4.2   Amélioration par création d’un nouveau modèle de distorsion
    Malgré la calibration du VI de national Instrument, l’effet de la distorsion sur les mesures
reste prononcé et mériterait d’être minimisé. Le modèle implémenté dans ce VI étant de faible
degré, plusieurs essais ont été menés afin d’établir un modèle plus complet qui permettrait
d’améliorer la qualité des mesures.
    Pour celà, les mesures d’un tir droit ont été extraites et une régression linéaire (qui correspond
supposément à la trajectoire physique) à été tracée. Pour un certain modèle de distorsion, tous

                                                  5
Projet de semestre M2 - Févr/Juin 2017                                                     Yoann moret

les coefficients du modèle ont été essayés. Sont conservés les coefficients qui minimisent l’erreur
entre les mesures corrigées et la régression linéaire.
    Cette procédure a été répétée pour de nombreux modèles de distorsion à savoir :
    — Des modèles de distorsion radiale :
                                                 n
                                                 X
                                        ∆~x =          ki ri         n = 1, 2....6
                                                 i=1

   Avec :
                p
            r = (x − x0 )2 + (y − y0 )2
   — Des modèles de distorsion elliptique :
                                              n                   i
                                   ∆x           X              r/l
                                            =         ki                   n = 1, 2....6
                                   ∆y                          r/L
                                                i=1

    Avec :     l : longueur du babyfoot
               L : largeur du babyfoot
    — D’autres modèles variés (logarithmiques, correction multiplicative ect ...).
Le meilleur modèle de correction est comparé avec celui du VI de National Instrument Fig.1.5.
Il apparaît que la différence est à peine perceptible, et donc que la distorsion de l’image était
correctement corrigée.

                                                           6
Projet de semestre M2 - Févr/Juin 2017                                               Yoann moret

Figure 1.5 – Comparaison des mesures corrigées par le VI de National Instrument et de celles
corrigées avec nos modèles

1.5    Conclusions sur la vision de la balle
    Le processus d’acquisition de la position de la balle, bien qu’imparfait, permet au robot
d’aopter une stratégie relativement simple. Des imprécisions de l’ordre de quelques millimètres
empêchent cependant le robot de jouer avec la même justesse qu’un joueur humain. À l’avenir,
lorsque des stratégies plus poussées seront mises en place, il sera intéressant d’affiner la mesure
de la position de la balle.
    Pour celà, il est tout d’abord possible de choisir une caméra avec une meilleure résolution, à
condition que le temps de traitement de l’image reste toutefois raisonnable. Une autre possibilité
pourrait être de trouver une lentille qui impose une plus faible distorsion. Les algorithmes utilisés
semblent quand à eux être déjà performants. En particulier la correction de la distorsion basée
sur une comparaison expérimentale n’a pas pu être améliorée.
    Une ultime solution serait de repenser entièrement le système de vision en remplaçant par
exemple, la caméra par des capteurs laser.

                                                 7
Projet de semestre M2 - Févr/Juin 2017                                                           Yoann moret

1.6     Guide pour utilisateur : ajuster le modèle de distorsion
1.6.1   Régler les paramètres du filtre
   Lors du lancement du programme, les paramètres du filtre doivent être entrés manuellement
par l’utilisateur. Le système « Hue/Saturation/Lightness » doit alors être ajusté de manière
à faire ressortir au mieux la balle sur le terrain. Des valeurs typiques de ces facteurs sont
présentées ci-dessous. Il est vivement conseillé d’utiliser les LED et de les alimenter avec un
courant d’environ 0.7 ampères.

1.6.2   Recalibrer la caméra
    La calibration de la caméra permet d’ajuster le modèle de distorsion en se basant sur la
comparaison d’une image à priori connue, et d’une image ayant subi la distorsion. Il est important
pour l’utilisateur de réajuster ce modèle en suivant la procédure de calibration à chaque fois que
la table de jeux ou la caméra est déplacée.
    La procédure à suivre est décrite par National Instrument [4] mais est notamment détaillée
étape par étape dans le rapport « Upgrade of the babyfoot vision control system » [5]. Le
laboratoire d’Automatique possède la grille d’étalonnage nécessaire à cette calibration.

             (a) Grille d’étalonnage avant distorsion       (b) Grille d’étalonnage après distorsion

                             Figure 1.6 – Grille d’étalonnage à utiliser

1.6.3   Améliorer le modèle de distorsion
    La procédure décrite section 1.4.2 peut être répétée si l’utilisateur pense connaître un meilleur
modèle de distorsion. Pour celà, il peut utiliser le code Matlab fourni en annexe en corrigeant
les données selon un nouveau modèle. Le code Matlab retournera alors les meilleures valeurs des
coefficients multipliant chaque terme du modèle.

                                                        8
Projet de semestre M2 - Févr/Juin 2017                                               Yoann moret

2     Filtre de Kalman
2.1    Objectifs
     A l’heure actuelle, l’algorithme a accès à la position de la balle mais ne connaît pas son
vecteur vitesse. Cette information permettrait d’anticiper les positions futures de la balle, et
donc d’augmenter la réactivité du robot. Connaître la direction qu’emprunte la balle ouvrirait
également la porte à de nouvelles stratégies plus avancées que celles actuellement implémentées.
     Le calcul de la vitesse n’est toutefois pas si commode. En se penchant sur les mesures de la
position, il est aisé de se convaincre que des différences finies ne peuvent pas être adoptées. Un
filtre de Kalman a alors été mis en place de manière à pallier cette difficulté.

2.2    Cahier des charges
    Le filtre de Kalman devra remplir le cahier des charges suivant pour pouvoir être efficace :
    — Ne pas être sensible à la structure particulière des données qu’il reçoit. Le filtre doit être
       robuste aux changements brusques de direction qui sont intrinsèques aux mesures de la
       position.

    — Être capable de s’adapter aux multiples discontinuités que contient la trajectoire d’une
      balle de babyfoot. Le filtre doit cette fois être souple lorsqu’il détecte un changement de
      direction réel.

                                                 9
Projet de semestre M2 - Févr/Juin 2017                                              Yoann moret

   — Le filtre doit savoir comment se comporter lorsq’il perd la balle. Cette situation apparaît
     si la balle se situe sur les rebords du terrain (zone en rouge).

   — Il arrive fréquemment que la caméra renvoie plusieurs fois d’affilé la même position.
     Le filtre doit pouvoir identifier cette situation et la différencier du cas où la balle est
     physiquement arrêtée.

2.3    Théorie sur le filtre
   Le filtre de Kalman est un estimateur récursif permettant de traiter des mesures bruitées.
Une des hypothèses nécessaire à l’utilisation de ce filtre est que le bruit de mesure soit blanc
et gaussien. Cette hypothèse n’est cependant pas respectée car les positions de la balle sont
disposées « en escalier ». Le filtre de Kalman sera tout de même utilisé puisque l’expérience
montre qu’il est malgré tout capable de converger correctement. Son fonctionnement se déroule
en deux étapes.
   La première d’entre elles consiste à établir une prédiction de la position mesurée et de la
matrice P [6] :
                                  →
                                  −
                                  x      =F →−x          + B ~u                              (1)
                                    k|k−1     k   k−1|k−1     k k

                                  Pk|k−1 = Fk Pk−1|k−1 FkT + Qk                                 (2)
    Ici, la notation Ai|j désigne la valeur de la matrice A à l’instant i, estimée avec les informa-
tions connues à l’instant j. L’indice « k | k − 1 » correspond donc à une prédiction.
    La 2nde étape, dite de mise à jour, est la suivante [6] :
                                    →
                                    −
                                    yk=→
                                       −
                                       z k − Hk →
                                                −
                                                x k|k−1                                         (3)

                                    Sk = Hk Pk|k−1 HkT + Rk                                     (4)

                                    Kk = Pk|k−1 HkT Sk−1                                        (5)
                                    →
                                    −
                                    x k|k = →
                                            −
                                            x k|k−1 + Kk →
                                                         −
                                                         yk                                     (6)

                                    Pk|k = [I − Kk Hk ] Pk|k−1                                  (7)

                                                  10
Projet de semestre M2 - Févr/Juin 2017                                              Yoann moret

   Avec   pour notations :
    ~x     Estimation de l’état. Dans notre cas c’est un vecteur contenant les positions et les vitesses.
    F      Matrice qui relie l’état au temps k − 1 à l’état au temps k.
    ~u     Entrée de commande.
    B      Matrice qui relie l’entrée de commande → − u à l’état →
                                                                 −
                                                                 x.
    P      Matrice de la covariance de l’erreur.
    Q      Matrice de covariance du bruit de process.
     ~z    Mesures du process au temps k.
    H      Matrice qui relie l’état →
                                    −
                                    x à la mesure ~z.
    R      Matrice de covariance du bruit de mesure.
   Cet algorithme compare donc une prédiction de l’état avec une mesure qu’il reçoit et estime
a posteriori le vecteur d’état en question. Les matrices de covariance de l’erreur lui permettent
de pondérer ces deux informations en fonction de leur fiabilité respective.

2.4    Démarche
Etape de prédiction
    L’étape de prédiction (equations 1 & 2) nécessite un modèle de la trajectoire de la balle. Ce
modèle est cependant difficile à déterminer étant donné que les rebonds sur le terrain ne sont
pas modélisables (géométrie des joueurs complexe et précision insuffisante sur la position).
    Il a donc été choisi de considérer que la trajectoire de la balle était une succession le lignes
droites interrompues par des rebonds. Les entrées de commande ne sont alors pas modélisées
(~u = 0, B = 0) et la matrice F prend pour valeur :
                                                           
                                             1 0 δt 0
                                           0 1 0 δt 
                                      F = 0 0 1 0 
                                                            

                                             0 0 0 1
   Où δt désigne le temps écoulé entre deux mesures.

Initialisation du filtre
    Le filtre de Kalman étant   un estimateur   récursif, a besoin d’une première valeur de l’état.
Puisque    l’état contient   x y ẋ ẏ tandis que la mesure ne contient que les positions
                                         

   x y , enclencher le filtre après la prise de la 2ème mesure n’est pas suffisant. Bien que
        

les valeurs de xk−1 et yk−1 seront connues, il faudra aussi fournir les valeurs des vitesses.
    Cette étape qui peut paraître anecdotique est en réalité importante car elle aura lieu à
chaque fois que la balle quitte la surface visible du terrain. De plus, fournir une vitesse initiale
erronnée altérera fortement le filtre car il la considérera comme acquise et prendra du temps à
s’en détacher.
    À ce stade il est nécessaire de garder à l’esprit que les mesures retournées par la caméra ne
permettent pas d’estimer une première vitesse par différences finies. Deux solutions sont alors
envisageables :

                                                11
Projet de semestre M2 - Févr/Juin 2017                                              Yoann moret

   — Fixer →
           −
           v 0 = 0.
       Ce choix neutre permet de ne pas donner une direction préférentielle au filtre mais lui
       fait sous-estimer l’avancée de la balle pour les premières estimations.

   — Donner une incertitude quasi-infinie à → −
                                              v 0.
     →
     −v 0 est calculé par différences finies mais le filtre comprend que cette information n’est
     pas fiable
   Ces deux possibilités ont été essayées sur les mêmes mesures, Fig 2.1.

Figure 2.1 – Filtre de Kalman appliqué lors d’un tir droit avec les deux méthodes d’initialisa-
tion.

   Il apparaît alors que fixer →
                               −
                               v 0 = 0 est préférable car cela permet au filtre de ne pas suivre
aveuglément la structure « en escalier » des premières mesures qu’il reçoit. Ce choix a donc été
adopté.

Doublons des mesures
    Il arrive fréquemment que l’algorithme de vision retourne plusieurs fois la même position alors
que la balle est en mouvement. Cette situation peut être détectée simplement en comparant
les positions au temps k et au temps k − 1. Si elles sont identiques, aucune opération n’est
appliquée sur le filtre mais le temps écoulé entre deux mesures doit en revanche être accumulé.
Cette solution revient donc à ne pas considérer une mesure si elle est identique à la précédente
car l’algorithme la considère comme erronnée.

                                                12
Projet de semestre M2 - Févr/Juin 2017                                                   Yoann moret

     Celà peut cependant poser problème dans le cas où la balle est physiquement arrêtée. Le
filtre devrait alors pouvoir identifier ce cas précis et se réinitialiser car les données avant et après
l’arrêt de la balle ne sont pas corrélées.
     Pour cette raison une condition a été ajoutée au VI. Si la position mesurée reste la même
pendant plus d’un certain temps (appelé Reset Time), alors le filtre se réinitialisera au prochain
changement de position.
     La valeur de ce Reset Time peut être ajustée par l’utilisateur.

Sortie de la partie visible du terrain
    Lorsque la balle est poussée sur les rebords du terrain elle sort du champ de vision de la
caméra. L’algorithme de détection de la balle renvoie alors sa dernière position visible jusqu’à
ce qu’elle réapparaisse. On observe ainsi un large saut dans les valeurs des positions.
    Dans ce cas de figure, les trajectoires de la balle avant et après sa disparition ne sont que
très rarement corrélées. Il est en effet très fréquent que la balle heurte le rebord du terrain et
qu’elle change de direction.
    Cette situation étant facile à identifier, le filtre est réinitialisé à chaque fois que la balle sort
du terrain visible. Pour celà, la réinitialisation a lieu si la différence entre la position prédite et
la mesure est jugée trop élevée. Cette condition se traduit par :

                                xk|k−1 − xmesuré
                                                        > Reset distance
                                xk|k−1 − ymesuré

   La valeur de Reset distance peut être ajustée par l’utilisateur.

   Attention : Dans le programme du babyfoot, le booléen « ball found » est faux si le 1er
algorithme de suivi n’a pas trouvé la balle, mais aucune information n’est donnée sur le 2ème .
Ce booléen ne peut donc pas être directement utilisé pour détecter la perte de la balle.

Rebond sur le terrain
    L’étape de prédiction du filtre nécessite d’établir un modèle de trajectoire de la balle. Il a été
choisi précédemment de considérer que la balle se déplace selon une succession de lignes droites.
Cependant, si un rebond a lieu sur le terrain, le filtre va essayer de corréler les mesures d’avant
et d’après le rebond comme si elles faisaient partie d’une même droite, Fig.2.2.

                                                   13
Projet de semestre M2 - Févr/Juin 2017                                                Yoann moret

Figure 2.2 – Filtre de Kalman initial appliqué à une trajectoire avec rebond. La balle s’est
déplacée de la droite vers la gauche du terrain. Le filtre est donc biaisé après le rebond.

    Il est nécessaire dans ce cas de relaxer le modèle de prédiction en informant le filtre qu’il doit
faire d’avantage confiance aux mesures acquises plutôt qu’à sa prédiction. Pour celà, la matrice
de covariance de l’erreur est corrigée :

                                           P ∗ = P + Padd
    Un rebond sur le terrain n’est cependant pas facile à détecter car il n’y a pas de saut distinct
entre deux mesures consécutives de la position. Une déviation de la trajectoire pourrait tout à
fait provenir de la structure des données.
    La solution adoptée est alors d’appliquer une correction sur la matrice P lorsque la différence
entre la position prédite et la mesure est jugée trop élevée. Cette condition se traduit par :

                              xk|k−1 − xmesuré
                                                  > Incertitude distance
                              xk|k−1 − ymesuré

    La valeur du paramètre Incertitude distance peut être ajustée par l’utilisateur mais doit
être inférieure à celle de Reset distance.
    Il est à présent nécessaire de choisir quelle matrice Padd permettra de relaxer la prédiction.
Deux constatations ont permis de faire ce choix :
    — L’incertitude sur les vitesses doit être plus élevée que sur les positions : lors d’un rebond,
        le vecteur vitesse change fortement de direction tandis que les positions restent proches
        les unes des autres.
    — Lors d’un rebond sur une paroie horizontale, seule la vitesse et la position verticale
        changent. Il est donc préférable que l’incertitude sur le modèle soit calculée indépendam-
        ment de la différence entre prédiction et observation sur chaque axe.
La matrice Padd est alors calculée de cette façon 1 :
  1. L’indice mes signifie mesuré

                                                  14
Projet de semestre M2 - Févr/Juin 2017                                                          Yoann moret

                                                                                                           
          | xk|k−1 − xmes |· α                   0                      0                       0
                  0                    | yk|k−1 − ymes |· α            0                       0           
Padd   =                                                                                                   +Pf ixe
                  0                             0             | xk|k−1 − xmes |· β             0           
                   0                             0                      0              | yk|k−1 − ymes |· β

   Avec pour notations :

       α          Facteur d’incertitude position
       β          Facteur d’incertitude vitesse
       Pf ixe     Une incertitude indépendante de ces différences est ajoutée.
   La valeur de ces 3 paramètres peut être modifiée. Il est tout de même conseillé de garder
α < β.

2.5      Performances du filtre
    Le filtre implémenté à été testé sur une séquence de mesures où la balle est tout d’abord
sortie du terrain visible, puis a rebondi sur un joueur. Les résultats sont présentés Fig.2.3. Les
points où la matrice Padd est ajoutée au modèle sont appelés « Relaxation » sur la figure.

              (a) Positions du filtre et des mesures                   (b) Vecteur vitesse calculé par le filtre

Figure 2.3 – Analyse de la fiabilité du filtre de Kalman. La balle est sortie du terrain en x = 100
et a renbondi sur un joueur en x = −200.

   Le choix des paramètres du filtre présentées a été fait de manière empirique et est présenté
Tableau 2.1.

                                                        15
Projet de semestre M2 - Févr/Juin 2017                                                          Yoann moret

                      Table 2.1 – Valeurs des paramètres du filtre de Kalman

                                                    40 mm
                                                                                                 
             Reset distance                                                     2   0    0   0
             Incertitude distance                   12 mm                      0   2    0   0    
                                                                   Pf ixe
                                                                                                 
             Facteur d’incertitude position           0.5
                                                                                                 
                                                                               0   0   10   0    
             Facteur d’incertitude vitesse             6                        0   0    0   10

     Il apparaît alors que la position calculée par le filtre n’a pas de difficultés à suivre les mesures
(Fig 2.3.a). La distance les séparant ne dépasse d’ailleurs 1cm qu’une seule fois sur cette séquence.
     L’objectif du filtre de Kalman étant d’obtenir le vecteur vitesse, nous porterons un plus grand
intérêt aux résultats Fig 2.3.b. Il apparaît alors que le vecteur vitesse reconnaît la direction de
la balle après avoir convergé. La première discontinuité (en x = 100 ) ne pose pas de problèmes
au filtre car il identifie que la balle est sortie du terrain et se détache des anciennes mesures
en se réinitialisant 2 . En revanche, en x = −200, un rebond dévie la trajectoire de la balle et le
filtre a besoin de plusieurs mesures avant de converger.
     Pour pallier cette difficulté, une option a été ajoutée au filtre. Si l’utilisateur active le booléen
« différences finies », les vitesses calculées après chaque relaxation seront évaluées par différences
finies. Le risque étant que la structure des données fausse le résultat, la vitesse est calculée sur
une moyenne des 3 derniers schémas d’Euler centrés.

2.6     Guide pour utilisateur : Comment travailler sur le filtre
2.6.1    Analyser les sorties du filtre
    L’utilisateur cherchant à optimiser les paramètres du filtre peut extraire les valeurs des
mesures de la caméra et des estimations du filtre. Pour celà, il est nécessaire d’ouvrir le VI
« KalmanVisionTestKalman » dans lequel un tableau contient les valeurs suivantes :
    — Les positions x et y mesurées par la caméra
    — Les positions x et y estimées par le filtre
    — Les vitesses ẋ et ẏ estimées par le filtre
    — Un booléen pouvant être choisi, tel que : les points de réinitialisation, les points de
       relaxation du filtre ect...
Une fois les données acquises, elles doivent être copiées, puis collées dans un tableau (ayant
la même structure) présent dans le VI « DisplayPositions ». L’utilisateur exécute ensuite le
programme et les données sont affichées dans les graphes du même VI. Depuis ces graphiques,
les données sont exportées à l’aide de la commande : Data operations - Export data - Export
to Clipboard. Il est alors possible de les récupérer en dehors de Labview en les collant dans le
bloc-notes.
  2. La réinitialisation n’est pas visible Fig 2.3.1 car elle est cachée par un point de relaxation qui a lieu au
même moment

                                                       16
Projet de semestre M2 - Févr/Juin 2017                                             Yoann moret

2.6.2    Code Matlab pour comprendre d’influence des paramètres
   Un code Matlab permettant de réaliser les opérations du filtre de Kalman (eq. 1 à 7) est
donné en annexe. Ce code ne permet pas de gérer les discontinuités sur le terrain mais constitue
un outil pour que l’utilisateur prenne connaissance de l’influence des paramètres du filtre.

3       Algorithme de tracking
    L’algorithme de tracking permet de détecter le motif de la balle sur l’image en noir et blanc
(3ème étape, Fig.1.1). Cette courte section présente son fonctionnement car cette partie du
programme est particulièrement coûteuse en terme de temps de calcul. Il semblerait en effet
qu’à ce jour, ce soit cet algorithme qui limite les performances du robot.

3.1     Premier algorithme
  Une fois l’image filtrée obtenue, un premier algorithme de tracking est appelé (IMAQ Track
Objects VI) [7].

   Ce VI cherche à identifier la balle sur une zone de recherche restreinte par pattern matching.
Celà signifie qu’il va comparer une partie de l’image acquise avec le motif sélectionné au lance-
ment du programme et, si le « score de corrélation » dépasse la tolérance « Minimum Score »,
va considérer que la balle est trouvée.
   L’information indiquant à l’algorithme dans quelle zone chercher est contenue dans l’entrée
« Object Tracking Session ». Il semblerait que la balle soit recherchée autour de son ancienne
position, ou autour d’une position estimée.
   Chercher la balle dans une zone restreinte permet au VI de s’executer en environ 2ms mais
implique que si la balle a trop bougé d’une image à l’autre, l’algorithme ne la trouve plus.
   Ce VI est donc un outil très rapide permettant de trouver la balle, mais ne la détecte pas
dans tous les cas.

3.2     Deuxième algorithme
   Lorsque la balle se déplace trop vite sur le terrain, elle sort donc de la zone d’inspection du
VI présenté ci-dessus, et un 2nd algorithme de tracking est appelé.

                                               17
Projet de semestre M2 - Févr/Juin 2017                                                Yoann moret

    Le VI « IMAQ Match Pattern 4 VI » [8] utilise également la méthode de pattern matching,
mais cette fois-ci sur tout le terrain. Son fonctionnement est donc plus coûteux en puissance de
calcul, il nécessite au minimum 30ms pour trouver la balle.
    Une fois identifiée, la position est transmise au VI « IMAQ Set Initial Object Tracking
Position VI » afin d’ajuster la zone de recherche du 1er algorithme pour la prochaine itération.

3.3     Faiblesses de la méthode de tracking
    La méthode utilisée pour identifier le motif de la balle est efficace dans la mesure où elle
permet de trouver sa position dans la plupart des cas. Cependant, l’expérience montre que
lorsque le robot joue, la balle est presque toujours trop rapide pour le 1er algorithme. La position
est alors détectée par le 2nd VI et n’est obtenue que 30 fois par seconde avec un délai de 30ms
entre la capture de l’image et l’acquisition de la position.
    En pratique le robot est donc très peu réactif et encaisse des buts facilement (voir vidéo
fournie avec le rapport).
    Le tracking de la balle mériterait fortement d’être amélioré car, de part ses limitations, il
empêche d’exploiter la rapidité de la caméra et des moteurs.

3.4     Guide pour utilisateur : comment améliorer le tracking de la balle
   Cette section présente des suggestions sur lesquelles les prochains étudiants pourraient se
pencher dans le but d’améliorer la méthode de tracking de la balle. Acune de ces solutions
n’ayant été implémentée, il est possible que certaines d’entre elles se révèlent être utopistes.

3.4.1   Modifier la zone de recherche du 1er algorithme
    Le principal défaut de la méthode de tracking utilisée est que le 1er algorithme perd la balle
trop facilement. Pour y remédier, il serait intéressant de mieux définir la zone de recherche du
1er algorithme.
    En agrandissant cette zone de recherche et en la centrant sur la position prédite par le filtre de
Kalman, le 2ème algorithme serait employé moins souvent. Il serait donc nécessaire de modifier
l’entrée « Object Tracking Session In », ce qui n’est peut être pas possible.

3.4.2   Créer un algorithme intermédiaire
   Cette solution consisterait à ne pas passer directement au 2ème algorithme (peu viable en
terme de temps d’exécution) lorsque la balle n’est pas trouvée par le 1er . Ainsi, un VI inter-
médiaire serait utilisé pour chercher dans une zone plus large autour d’une position prédite.

                                                 18
Projet de semestre M2 - Févr/Juin 2017                                              Yoann moret

Cette méthode serait donc utilisée dans le cas où la solution proposée section 3.4.1 ne serait pas
implémentable.
   La mise en place de cet algorithme pourrait se faire à l’aide du 2ème VI de tracking. L’entrée
« Region Of Interest » permet en effet d’ajuster directement la zone de recherche.

3.4.3    Trouver une alternative au pattern matching
    Jusqu’ici, seuls des algorithmes utilisant le pattern matching ont été présentés. Bien que très
fiable, cette méthode s’avère être coûteuse en temps de calcul, et ralentie donc le robot.
    Etant donné que la balle ressort très nettement sur l’image filtrée, d’autres algorithmes
pourraient se montrer efficaces. Au lieu de calculer de nombreuses corrélations entre l’image
de référence et l’image acquise, il pourrait être possible d’identifier les pixels blancs sur la
photographie. Le logiciel NI Vision Builder propose par exemple la fonction « Detect Objects ».

    Il est possible d’ajuster des paramètres de manière à ce qu’un seul objet soit détecté. Le
temps d’exécution de cet algorithme a été évalué à 7ms pour une recherche sur l’intégralité de la
photographie. Il serait donc envisageable de remplacer le 2ème VI de tracking par cette fonction,
si elle s’avère fiable et peu coûteuse en temps de calcul.

4       Modifications du VI stratégie
4.1     Présentation du VI stratégie
   Le VI de stratégie permet, à partir des positions de la balle et des joueurs sur le terrain,
de déterminer les consignes à donner au controlleur. La stratégie implémentée à ce jour reste
simple et mérite d’être améliorée. Les étudiants se penchant sur ce VI sont invités à tout d’abord
prendre connaissance des limitations liées à la vision de la balle.

4.2     Calibration des joueurs
   Le VI de stratégie permet aux joueurs de chaque rangée de se placer devant la balle. Le choix
de ce joueur dépend de la position de la balle le long de l’axe ~y ( dans la largeur du babyfoot ).
Une fois que ce choix est fait, la position du joueur sélectionné est obtenue selon la formule :

                                      yjoueur = ybarre + ∆y                                    (8)
    Ici, ∆y correspond à la position de joueur sur la barre, et est donc propre à chaque joueur.
Il est alors nécessaire de réajuster cette valeur manuellement à chaque fois que la barres sont

                                                19
Projet de semestre M2 - Févr/Juin 2017                                                   Yoann moret

 retirées des accouplements. Si ce ∆y n’est pas exacte, les joueurs seront légérement décallés par
 rapport à la balle.
     La deuxième valeur nécessitant d’être calibrée est la position de chaque barre selon l’axe
~x (dans la longueur du babyfoot). Le VI compare cette position à celle de la balle et, si elles
 sont est assez proches, décide d’enclencher un tir. Il est donc nécessaire cette l’information soit
 correcte afin que le robot tire lorsqu’il en a la possibilité.

4.3    Tirs croisés
   En positionnant chaque joueur exactement devant la balle, le robot réalisera un tir droit
même s’il n’est pas en face des cages adverses. De manière à ce qu’il cadre plus souvent ses tirs,
un petit offset a été ajouté à la commande sur la position linéaire des joueurs :
                                                          yballe
                                        0
                                       yjoueur = yjoueur +                                      (9)
                                                            k
    Cet offset permet de décaller les joueurs vers l’extérieur du terrain et, au moment de tirer,
de taper la balle avec le coin de la figurine (Fig.4.1) de manière à réaliser un tir croisé.
    L’offset augmente donc linéairement avec la position de la balle (pour croiser d’avantage son
tir si la balle et plus loin des cages) et dépend d’un facteur k propre à chaque barre. Plus une
barre est loin du but adverse, moins l’angle de tir doit être important, et plus la valeur de k est
élevée.

         (a) Position du joueur sans offset                  (b) Position du joueur avec offset

                     Figure 4.1 – Offset permettant de réaliser un tir croisé

    En implémentant ce VI, il nous a semblé que le robot n’était pas capable de réaliser un
mouvement en translation et en rotation en même temps. L’offset permettant de croiser les
tirs du robot ne peut alors pas être appliqué qu’au moment de tirer, sinon le déacallage serait
appliqué après le tir.

                                                  20
Projet de semestre M2 - Févr/Juin 2017                                                 Yoann moret

4.4    Mécanique du tir
    Jusqu’ici lorsque le robot tirait, il faisait un mouvement de va-et-vient vers l’avant. Il arrivait
cependant que de façon imprévue, le robot tape la balle vers son camp au moment où il ramenait
ses joueurs à la verticale. Cette situation menait alors très fréquemment à des auto-goals.
    Il a alors été décidé de changer sa mécanique de tir en faisant toujours tourner les joueurs
vers l’avant. Celà signifie que lors d’un tir, le robot revient à sa position verticale en faisant un
tour entier. Le fait de faire un tour est autorisé par les règles du babyfoot à condition que le
robot ne fasse qu’un tour. Il est possible de régler manuellement le nombre de tours maximal
que le robot exécute.
    Cette mécanique de tir a été appliquée à tous les joueurs sauf au goal. Il était en effet
intéressant de garder ce mouvement de va-et-vient pour le gardien car il permet d’incliner le
joueur vers l’arrière dans le cas où la balle viendrait de côté, et donc de l’empêcher d’entrer dans
les cages.

4.5    Stratégie de défense
    Lorsque le joueur adverse possédait la balle avec ses attaquants, il était aisé de marquer
contre le robot. Sa stratégie de défense a donc été adaptée de manière à éviter les buts facilement
encaissés.
    La première situation étudiée permet de se défendre si le joueur adverse détient la balle avec
un des attaquants latéraux. Le robot essayait de positionner tous ses joueurs devant la balle
(Fig.4.2.a) et il suffisait de réaliser un tir croisé quelque peu rapide pour marquer systématique-
ment. Il a donc été décisé de décallé le défenseur vers l’intérieur du terrain de manière à fermer
l’angle de tir (Fig.4.2.b). La position du défenseur est ajustée selon la formule :
                                                                yballe
                                     y déf enseur = yballe +                                     (10)
                                                                 k2
   Où la valeur de k2 a été déterminée empiriquement. Cette stratégie semble être très efficace
indépendamment du style de jeu de l’attaquant.

                                                   21
Projet de semestre M2 - Févr/Juin 2017                                                           Yoann moret

      (a) Ancienne position de défense, mal adaptée.        (b) Nouvelle position de défense, plus performante.

                                                Figure 4.2

    La deuxième situation analysée consiste à se défendre lorsque la balle est possédée par l’at-
taquant central de l’adversaire. Ici, le risque n’est pas d’encaisser des tirs croisés, mais est que
l’attaquant décalle la balle rapidement et tire dans les buts avec son joueur central. Dans ce
cas précis, il est fréquent que le 1er algorithme de tracking perde la balle et que le robot ne
réagisse pas assez vite à ce décallage. De manière à bloquer ces tirs tout en étant en retard sur
la position de la balle, il a été décidé que le défenseur suive l’attaquant adverse. La position de
la barre adverse étant mesurée avec des lasers, le robot est très réactif et ne se laisse pas prendre
de vitesse. Afin d’éviter toute sorte de feintes, le gardien se positionne quand à lui devant la
balle.
    Cette 2ème stratégie s’est révélée être très efficace lorsque le robot a affronté le champion.
Elle n’est cependant pas très utile contre un joueur débutant qui n’effectuera pas de décallage,
et préférera tirer sans controller la balle. Il est donc envisageable qu’à l’avenir, le robot adapte
sa stratégie en fonction de son adversaire.

4.6     Guide pour utilisateur : calibration et futurs travaux
4.6.1     Calibration des joueurs
    La valeur de la position des joueurs sur la barre présentée section 4.2 doit être ajustée à
chaque fois que les accouplements sont enlevés. Sans celà, les joueurs ne seront plus positionnés
correctement par rapport à la balle, et les tirs croisés ne seront plus cadrés.
    Pour celà, il est tout d’abord nécessaire de désactiver l’offset permettant de réaliser ces
tirs croisés. Les joueurs sont alors sensés se positionner exactement en face de la balle, ce qui
permet de savoir s’ils sont ajustés. Les seules valeurs à changer sont les décallages ∆y (eq.8), les
conditions sur la valeur de la position de la balle n’étant pas successibles d’évoluer. Une fois les
∆y ajustés indépendamment sur chaque joueur, il est possible de réactiver l’offset pour croiser
les tirs du robot.

                                                       22
Projet de semestre M2 - Févr/Juin 2017                                               Yoann moret

4.6.2   Prochains travaux
     L’amélioration du VI de stratégie présente un grand intérêt pour l’avancée du projet mais
doit se faire en connaissance des limitations du robot. De nombreuses possibilités deviendraient
réalisables en augmentant par exemple la vitesse d’exécution de l’algorithme de tracking.
     Il serait premièrement possible de réaliser un contrôle de la balle au cours du jeu. Cette
technique a été étudiée par Bartélémy tremeau et semble implémentable pour peu que la
réactivité du robot soit améliorée. À partir de cette étape, il serait intéressant d’apprendre
différents tirs au robot (présentés dans les vidéos jointes à ce projet), qui s’avéreraient être très
efficaces grâce à la rapidité des moteurs.
     Sans avoir recours au contrôle de la balle mais en admettant que le robot soit plus réactif,
il serait également très utile de pouvoir contrer les tirs du défenseur adverse. En orientant
l’attaquant correctement et en implémentant un tir « à la volée » (qui se différenciera du tir
en tour complet), l’adversaire aura beaucoup de mal à dégager la balle lorsqu’il la possède en
défense.

    Remerciements - Je souhaitais remercier le Dr. Christophe salzmann, qui m’a proposé
ce projet, m’a accueilli dans son laboratoire, et m’a apporté son très précieux soutien ainsi que
son enthousiamse contagieux. Je remercie également l’ensemble du Laboratoire d’Automatique,
et plus particulièrement M. Luca fabietti pour m’avoir guidé tout au lond de ce semestre.

                                                 23
Projet de semestre M2 - Févr/Juin 2017                                                  Yoann moret

Bibliographie

 [1]   https ://www.ximea.com/files/brochures/xiQ-USB3-Vision-2015-brochure.pdf

 [2]   http ://zone.ni.com/reference/en-XX/help/370281P-01/imaqvision/imaq_convert_pixel_to_real_world/

 [3]   http ://zone.ni.com/reference/en-XX/help/370281AC-01/imaqvision/imaq_get_camera_parameters/

 [4]   http ://zone.ni.com/reference/en-XX/help/370281M-01/nivisionlvbasics/perspective_and_nonlinear_distortion_calibration/

 [5]   Léo Sibut, Upgrade of the babyfoot vision control system, EPFL.

 [6]   https ://fr.wikipedia.org/wiki/Filtre_de_Kalman

 [7]   https ://zone.ni.com/reference/en-XX/help/370281AC-01/imaqvision/imaq_track_objects/

 [8]   http ://zone.ni.com/reference/en-XX/help/370281AC-01/imaqvision/imaq_set_initial_object_tracking_position/

                                                    24
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

                                 Annexes

                                         25
Projet de semestre M2 - Févr/Juin 2017                                     Yoann moret

Code Matlab pour optimiser un modèle de distorsion

x=[......]; % Positions x extraites de Labview
y=[......]; % Positions y extraites de Labview

%% Suppression des doublons
xnew(1)=x(1); ynew(1)=y(1); j=2;
for i=2:length(x)
    if x(i)~=x(i-1) || y(i)~=y(i-1)
        xnew(j)=x(i);
        ynew(j)=y(i);
        j=j+1;
    end
end

%% Paramètres géométriques
xc=0;                 % Position x du centre de la caméra (différent de 0 si mal calibrée)
yc=0;                 % Position y du centre de la caméra (différent de 0 si mal calibrée)

%% Initialisation des   paramètres de la   boucle
Meilleurbruit=10^9;     % Initialisation   du meilleur bruit
k1=0;                   % Coefficient de   distorsion en r^2 à optimiser
k2=0;                   % Coefficient de   distorsion en r^4 à optimiser

%% Boucle permettant de tester les coefficients du modèle de distorsion
for k=1:1:15
    for l=1:1:15
        k1 = 10^-k;   % Les paramètres sont testés sur une échelle logarithmique
        k2 = 10^-l;

         %%   Calcul des positions corrigées pour un modèle défini
         r    = (((xnew-xc)).^2+((ynew-yc)).^2).^(0.5);
         dx   = (xnew-xc).*(k1*r.^2+k2*r.^4);
         dy   = (ynew-yc).*(k1*r.^2+k2*r.^4);
         xf   = xnew+dx;
         yf   = ynew+dy;

         %% Régression linéaire
         p   = polyfit(xf,yf,1);
         fit = (p(2)+xf*p(1));

         %% Calcul de l'erreur
         erreur = yf-fit;
         Sommeerreur = sum(abs(erreur));

         %% Vérification : les coefficients sont-ils optimaux?
         if Sommeerreur < Meilleurbruit
             Meilleurbruit = Sommeerreur;
             k1opt = k1;
             k2opt = k2;
         end
   end
end

                                              26
Projet de semestre M2 - Févr/Juin 2017                                        Yoann moret

Code Matlab du Filtre de Kalman (sans gestion du cahier des charges)

%% Données des positions mesurées

x = [...];
y = [...];
dt = [...];

%% Suppression des doublons

x_new(1)    = x(1) ; y_new(1)   = y(1) ; dt_new(1) = dt(1);
j=2;

for i=2:length(x)
    if x(i)~=x(i-1) || y(i)~=y(i-1)
        x_new(j)=x(i);
        y_new(j)=y(i);
        dt_new(j)=dt(i);
        j=j+1;
    end
end

%% Opérations de Kalman

Z(1,:)=x_new;             % Mesure du process pour x
Z(2,:)=y_new;             % Mesure du process pour y
H=[1 0 0 0; 0 1 0 0];     % Matrice qui relie l'état x à la mesure

R=[2.25 0;0 2.25];      % Covariance du bruit de mesures (à optimiser)
P_old=[2 0 0 0;0 2 0 0;0 0 5 0;0 0 0 5]; % Initialisation de P (à optimiser)
X_filtre(:,2)=[Z(1,2);Z(2,2);0;0];       % Initialisation du filtre (voir section 2.4)

for k=3:length(x_new)

      % Etape 1 : Prédiction
      F=[1 0 dt(k) 0; 0 1 0 dt(k); 0 0 1 0; 0 0 0 1];   % Matrice reliant les états k et k-1
      X_pred(:,k)=F*X_filtre(:,k-1);                    % Etat prédit
      P_pred=F*P_old*F.';                               % Prédiction de la covariance

      % Etape 2 : Mise à jour
      e2(:,k)=Z(:,k)-H*X_pred(:,k);                     %   Innovation
      S=H*P_pred*H.'+R;                                 %   Covariance de l'innovation
      K=P_pred*H.'*inv(S);                              %   Gain de Kalman
      X_filtre(:,k)=X_pred(:,k)+K*e2(:,k);              %   Etat mis à jour
      P_new=(eye(4)-K*H)*P_pred;                        %   Covariance mise à jour
      P_old=P_new;                                      %   Préparation à l'itération suivante
end

figure (1)
plot(x_new,y_new,'+'); hold on ; plot(X_filtre(1,2:end),X_filtre(2,2:end),'linewidth',3);
legend('Mesures','Filtre de Kalman'); xlabel('x') ; ylabel('y')
set(gca,'FontSize',15)
title('Filtre de Kalman sans gestion du cahier des charges'); hold off

                                             27
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

VI général du filtre de Kalman

                                         28
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

Sous VI « Kalman operations »

Sous VI « Uncertainty Pos »

                                         29
Projet de semestre M2 - Févr/Juin 2017        Yoann moret

Sous VI « Finite Differences »

                                         30
Projet de semestre M2 - Févr/Juin 2017                              Yoann moret

Filtre de Kalman : Différents choix de la matrice P0

                                              
                                λ    0   0   0
                               0    λ   0   0 
                         P0 = 
                               0
                                                , λ = 0.1, 1, 10
                                     0   λ   0 
                                0    0   0   λ

                                             31
Projet de semestre M2 - Févr/Juin 2017                                      Yoann moret

Filtre de Kalman avec Padd fixe : Premier choix de Padd

                                           
                            5   0    0    0
                           0   5    0    0 
                  Padd   =
                           0
                                             , Incertitude distance = 12
                                0   10    0 
                            0   0    0   10

                                             32
Projet de semestre M2 - Févr/Juin 2017                                      Yoann moret

Filtre de Kalman avec Padd fixe : Deuxième choix de Padd

                                           
                            5   0    0    0
                           0   5    0    0 
                  Padd   =
                           0
                                             , Incertitude distance = 15
                                0   20    0 
                            0   0    0   20

                                             33
Projet de semestre M2 - Févr/Juin 2017                                          Yoann moret

Filtre de Kalman avec Padd dépendant de la mesure : Premier choix de
Padd

    α = 0.5      Facteur d’incertitude position
    β=3          Facteur d’incertitude vitesse
    Pf ixe = 0   Une incertitude indépendante de ces différences est ajoutée.

                                              34
Projet de semestre M2 - Févr/Juin 2017                                          Yoann moret

Filtre de Kalman avec Padd dépendant de la mesure : Deuxième choix
de Padd

    α = 0.5      Facteur d’incertitude position
    β=6          Facteur d’incertitude vitesse
    Pf ixe = 0   Une incertitude indépendante de ces différences est ajoutée.

                                              35
Vous pouvez aussi lire