La programmation

Pour la programmation du robot RATP, nous avons utilisé le microcontroleur (µC) Espressif ESP32-S3 possédant un microprocesseur de deux coeurs cadencés à 240 Mhz, 4 MB de mémoire flash additionnelle, une connectivité wifi et bluetooth et 36 ports GPIO. Nous avons choisi ce µC sous les conseils des étudiants de troisième année et de M. Bracq, qui eux-mêmes l’ont choisi pour son accessibilité, sa compatibilité, sa polyvalence, ses performmances, sa documentation mais surtout pour unifier les outils utilisés : chaque équipe a le même µC donc si l’une d’entre elle recontre un problème, elle peut être aidée par une autre équipe d’UniMakers plus facilement.

La première étape de la programmation de ce µC est la configuration de l’environnement de développement. De nouveau sous les conseils des autres équipes, nous utilisons Visual Studio Code (vscode) muni de l’extension PlatformIO. Cette dernière est un environnement de développement intégré convivial compatible avec beaucoup d’appareils embarqués (Arduino, Espressif, ST…) dans lequel on peut facilement gérer les projets, les librairies et les cartes de développement.

Après avoir installé cet environnement de développement, nous pouvons créer un nouveau projet en utilisant le framework Arduino en prenant soin de spécifier la carte utilisée. PlatformIO ouvre automatiquement le projet et nous propose la structure suivante :

.
├── 📁 include
├── 📁 lib
├── 📂 src
│   └── 📄 main.cpp
├── 📄 platformio.ini
└── 📄 README.md

Le dossier include accueille les fichiers d’en-tête du projet, lib prévoi de recevoir les librairies spécifiques au projet et src, comme son nom l’indique, comporte les sources du projet dont le fichier main.cpp qui est le coeur du programme final du robot : sans ce dernier aucun autre programme ou aucune autre librairie ne peuvent être utilisés. platformio.ini est propre aux projets PlatformIO et dicte la configuration de la cible du projet. Enfin README.md est facultatif et permet de présenter le projet dans le répertoire de la platefrome distante, ici GitHub.

Nous utilisons PlatformIO pour simplifier et accélerer les étapes relatives au développement. On peut cependant utiliser d’autres IDE tels que ESP-IDF ou encore l’IDE Arduino.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
        'primaryColor': '#fccfcf',
        'primaryTextColor': '#000',
        'primaryBorderColor': '#e04750',
        'lineColor': '#000',
        'secondaryColor': '#fff',
        'tertiaryColor': '#fff'
    }
  }
}%%

flowchart LR
    A((Début)):::green -->
    
    B["Bouton
    d'équipe"]:::red --

    "team = y
    OU
    team = b" --> 
    
    C{Tirette}:::blue -- Vrai --> C -- Faux -->
    
    D[Stratégie]:::red -->

    F[Arrêt Robot]:::red -->

    G((Fin)):::green

    classDef red stroke:#e04750, fill:#fcc7cb
    classDef green stroke:#4bbd4b, fill:#b5ebb5
    classDef blue stroke:#384cc9, fill:#c5cdfc

    D <-.-> Detection

subgraph Detection["Detection"]
    direction LR
        X{Lidar detecte}:::red --Faux --> X -- Vrai -->
        Y[Arrêt robot]:::red --> X
end

Algorigramme du programme executé par le robot

Maintenant que nous avons préparé notre environnement de développement, nous pouvons passer à la programmation du robot. Pour ce faire nous commençons par les fonctions les plus importantes aux fonctions moins importantes : nous nous penchons donc d’abord sur les déplacements du robot qui sont primordiaux pour passer l’homologation dynamique.


Table des matières