UE 3.1 : Introduction au C++ pour la robotique

C++ est un langage de programmation compilé permettant la programmation sous de multiples paradigmes (comme la programmation procédurale, orientée objet ou générique).
Ses bonnes performances et sa compatibilité avec le C en font un des langages de programmation les plus utilisés en robotique, où la performance est critique.

L'objectif de ce cours est d'apprendre les bases du C++ via des applications liées à la robotique.
Il aborde en particulier les notions de base telles que les structures de données, l'allocation dynamique, la programmation orientée objet, la lecture de fichiers. D'autres notions liées au développement logiciel, telles que la création de bibliothèques ou la compilation organisée par CMake, seront étudiées.

Intervenants :

- Lien vers le Moodle du cours pour les rendus de TD

Programmation 2024/2025 (36 créneaux)


  1. 1. Introduction au C++
    [4cr] Mar 17/09, 08h10-12h15

    CM 01 : Introduction au C++
    QCM du CM 01 prévu pour le 24/09

    TD 01 : Simuler une voiture sur une route circulaire
    TD 01 à rendre pour le 23/09 minuit
    TD 01 : correction

    Utiliser le type float ou le type double ?
    Pour utiliser le AppImage de VIBes sur Ubuntu 22.04 :
    sudo chmod u+x VIBes-0.2.3-linux.AppImage
    sudo apt install libfuse2
    En attendant Linux : instructions pour installer g++ sur Windows (slide venant du cours de F. Le Bars)
    [ nouveau ] Notice d'installation de WSL2 (merci à Hippolyte Lafrad)


  2. 2. Programmation orientée objet
    [4cr] Mar 24/09 08h10-12h15
    [4cr] Lun 30/09 08h10-12h15

    CM 02 : Programmation orientée objet
    1er QCM du CM 02 prévu pour le 30/09 (uniquement la partie vue en CM)
    2nd QCM du CM 02 prévu pour le 22/10 (intégralité du CM)

    TD 02 : Platooning (n voitures autonomes)
    TD 02 à rendre pour le 23/10 minuit

    Résultat attendu à la fin du TD :

    Vidéo de correction du TD 02 :


  3. Pour le cours sur CMake, Git, etc. voir la section 5. Outils de développement


  4. 3. Tableaux et pointeurs
    [4cr] Mar 22/10, 08h10-12h15
    [4cr] Jeu 14/11, 13h30-17h35

    CM 03 : tableaux et pointeurs
    QCM du CM 03 prévu pour le 14/11

    TD 03 : résoudre un labyrinthe
    TD 03 à rendre pour le 20/11 minuit
    TD 03 : correction

    Vidéo de correction du TD 03 :


  5. 4. Fichiers et conteneurs
    [4cr] Ven 15/11 08h10-12h15

    Cours 04 : fichiers et conteneurs
    QCM du CM 04 prévu pour le 28/11

    TD 04 : sérialiser un labyrinthe
    TD 04 à rendre pour le 27/11 minuit

    Labyrinthes à télécharger :


  6. 5. Outils de développement
    [1cr] Lun 18/11, 08h10-12h15

    Cours 05 : outils de développement
    QCM du CM 05 (slides 1-24) prévu pour le 12/12

    Exemple de CMakeLists à télécharger


  7. 6. Projet MNT : Modèle Numérique de Terrain
    [3cr] Jeu 28/11, 08h10-12h15
    [4cr] Jeu 05/12, 08h10-12h15
    [4cr] Jeu 12/12, 08h10-12h15

    Présentation du projet
    Deadline : dimanche 05/01/2025 (minuit)

    Proj :
    Proj : quick start
    Proj : configurer CMake (voir aussi : un autre CMakeLists.txt)
    Proj : une configuration possible pour WGS84 -> Lambert93

    Comprendre comment optimiser la recherche de triangles dans le maillage (slides)
    (optionnel) Infos pour ombrage (hillshading) (ArcGIS)
    Comprendre pourquoi les coordonnées Lambert93 sont grandes en Nord
    Configuration VSCode : exécuter votre programme avec arguments
    Delaunator : dépôt GitHub


    MNT d'une portion de la rade de Brest
    - réalisé par l'ENSTA Bretagne / Shom (Brest)
    - 2018, 1m, WGS84
    - rendu en HD avec ombrages

    MNT du Lac de Guerlédan
    - réalisé par l'ENSTA Bretagne (Brest)
    - février 2019, 0.5m, WGS84
    - rendu en HD avec ombrages


  8. 7. Évaluation
    [4cr] Jeu 19/12, 08h10-12h15

Annexes

Liens utiles

Enseignements

Ces cours sont enseignés dans les établissements suivants :

ENSTA Bretagne