Formation Smart and Secure Life Semestre 8

 

 

Contact: Romain Bourdais (Romain.Bourdais@centralesupelec.fr)

 

Semestre 8

 

 

2 séquences thématiques sont proposées en ST7 :

 

►  Smart Grids et défi énergétique : gestion de l’énergie en site « isolé »

 

.

 

►  Le numérique au service du « facteur humain »

 

.

 

Au cours du semestre S8, les cours dispensés sur le campus sont :

 

►  Optimisation (cours commun ST7)

 

   A l’issue de ce cours, les élèves devront être en mesure de traiter une large gamme de problèmes concrets d’optimisation se posant dans un contexte scientifique ou industriel. Partant d’un tel problème, ils seront à même de le formuler de façon adéquate, de proposer une solution numérique à l'aide des méthodes existantes, et d’aller jusqu’à la validation et l’interprétation de la solution du point de vue du problème initial. Des aspects relevant aussi bien de l’optimisation continue que de l’optimisation discrète seront explorés. Plus précisément, les notions suivantes seront abordées et mises en oeuvre pratiquement : formulation des problèmes d’optimisation, conditions d’existence de minimiseurs globaux et locaux, convexité, dualité, multiplicateurs de Lagrange, méthodes du premier ordre, programmation linéaire, programmation linéaire entière, approche « branch and bound » (séparation-évaluation), introduction à l’optimisation stochastique.

 

►  Programmation Système sous Linux et Windows

 

   Cet électif s’adresse à des étudiants désireux d’approfondir leur pratique de la programmation au travers de l’apprentissage du langage C, en écrivant des applications proches du système d’exploitation en utilisant les interfaces standards d’un système Unix (norme POSIX, gestion des entrées-sorties, communications interprocessus, programmation multiprocessus et multithreads, gestion des signaux systèmes, déverminage et mise au point d’une application) et leurs équivalents pour l’API Win32/Win64 de Microsoft Windows.

   Le langage C reste un des langages les plus utilisés pour programmer des applications dans les couches basses du logiciel telles que des systèmes d’exploitation ou des applications proches de celui-ci. En particulier, il est encore très largement utilisé pour programmer les services tournant en tâche de fond dans les systèmes GNU/Linux et Microsoft Windows (serveurs Web, serveurs de bases de données, serveur de messagerie électronique, serveurs de fichiers, etc). Bien que de conception très ancienne (années 70), cet état de fait s’explique par les performances inégalées des programmes écrits dans ce langage grâce aux progrès constants des chaînes de compilation disponibles actuellement. Les inconvénients d’écrire dans un langage peu abstrait sont donc (partiellement) compensés par des performances quasiment optimales au prix d’un effort substantiel lors de la mise au point des programmes.

   Ce cours sera aussi l’occasion de se rendre compte des difficultés inhérentes à la programmation en langage C (notamment la gestion explicite de la mémoire et les conséquences de choix de conception discutables sur l’implémentation des tableaux et des chaînes de caractères) et des problèmes de fiabilité et de sécurité qu’elles engendrent.

   Nous profiterons de cette expérience pour introduire un nouveau langage de programmation qui permet de garantir à la fois plus de sécurité et de fiabilité par la conception même du langage (qui fait usage des derniers progrès en matière de système de typage) et qui dans le même temps permet d’obtenir les mêmes performances qu’un programme écrit en langage C. À notre connaissance, c’est la première fois que cette synthèse est assurée par un langage de programmation (les autres tentatives butant toujours sur soit des problèmes de performances à l’exécution, soit des erreurs durant le fonctionnement aboutissant généralement à des mises en défaut de la sécurité de l’application pouvant se répercuter sur celle de la plateforme qui l’exécute). Nous introduirons donc le langage Rust qui est déjà actuellement utilisé par les équipes de Mozilla pour refondre entièrement le code de leur navigateur Web Firefox.

   L’électif permettra aux étudiants de mettre en pratique les connaissances acquises au cours de travaux de laboratoires, qui consisteront en la programmation de services systèmes sous Unix et Windows en C. De plus les étudiants pourront explorer et enrichir un petit système d’exploitation totalement écrit en Rust.

 

►  Serious Game

 

   Les « Serious games » ou jeux sérieux ont pour objectif de diffuser des informations, de faire acquérir des connaissances ou un savoir-faire en utilisant les aspects ludiques des jeux vidéos avec une intention sérieuse. De nombreux domaines nécessitant des entraînements et des mises en situation sont concernés (transports, médical, conduite de processus industriels, éducation, défense,...). Après une introduction générale sur la construction des jeux vidéo, des intervenants extérieurs présenteront des cas d’usages spécifique au serious game. Les outils de conception de tels jeux seront mis en pratique.

 

►  Réalité virtuelle & augmentée

 

   La réalité virtuelle est actuellement en plein essor mais elle n’est que le prémisse d’un domaine qui va envahir notre quotidien : la réalité augmentée. Que ce soit dans l’industrie, les loisirs, la santé ou les transports, la réalité augmentée proposera des services inégalés.

   Les problématiques liées à l’asservissement et le tracking des utilisateurs, la création de contenus et l’interaction seront étudiées. Des projets personnels seront conçus et mis en œuvre sur les plateformes de réalité virtuelle du campus : plusieurs HTC Vive, Fove et Samsung Gear seront mis à disposition des élèves.

 

►  Model based Predictive Control

 

   La commande prédictive, de l’anglais Model Predictive Control (MPC), est la technique de commande avancée la plus utilisée dans l’industrie. Son utilisation industrielle est en plein essor, car elle permet d’optimiser le fonctionnement d’un process industriel, son efficacité énergétique tout en intégrant des contraintes de fonctionnement. Pour autant, elle fait encore l’objet d’un grand nombre de publications scientifiques, même si les dernières préoccupations de la communauté scientifique restent très théoriques.

   Cet électif présente les grands principes de la commande prédictive dans un formalisme mathématique clair, lisible et intuitif et qui n’est pas réservé aux ingénieurs automaticiens - La commande prédictive sera traitée en profondeur et sous tous les aspects de l’automatique dans la mention de 3ème année « Control Engeneering » - Après une introduction aux concepts de base du MPC, l’électif est construit autour de nombreux cas d’étude, où ils seront appliqués tant en simulation qu’en pratique pour différents processus industriels. Il est donc question dans cet électif d’apporter des outils de décisions et de commande qui exploitent un modèle du système afin d’en améliorer son efficacité. Les attentes en termes d’efficacité sont traduites en un multicritère mathématique qu’il faut chercher à minimiser. Le modèle peut être issu d’une représentation mathématique du système considéré, auquel cas des méthodes classiques (déterministe, programmation linéaire par exemple, ou résolution explicite) d’optimisation peuvent être utilisées. Le process d’optimisation peut aussi exploiter un simulateur du système étudié, celui-ci doit alors utiliser des techniques heuristiques.

   Les applications seront focalisées sur la gestion de l’énergie dans un écoquartier et sur l’exploitation de telles techniques pour le dimensionnement de systèmes de production ou de stockage de l’énergie.

 

►  Système d'exploitation

 

   Dans le cadre de cet électif, nous supposons que l’étudiant comprend le fonctionnement d’un processeur et possède les outils permettant de générer un exécutable pour ce processeur. Ainsi, il est fortement recommandé d’avoir suivi l’électif Architecture des calculateurs, et la ST7 Compilation afin d’être en mesure de comprendre pleinement l’électif Système d’Exploitation.

   L’objectif de cet électif est de donner les connaissances et les compétences pour réaliser un système d’exploitation multitâche gérant la mémoire des différents processus, gérant des interruptions et capable de réaliser des entrées-sorties. Afin d’atteindre cet objectif, cet électif contient l’ensemble des notions qu’il est nécessaire de comprendre pour réaliser un système d’exploitation, à savoir :

       •   Histoire des systèmes d’exploitation.
       •   Gestion des processus, algorithmes d’ordonnancement.
       •   Gestion mémoire virtuelle/réelle.
       •   Traitement des interruptions, appels systèmes, gestion des Entrées/Sorties.
       •   Système de gestion de fichiers.
       •   Mécanismes de protection dans un OS.
       •   Présentation de différents systèmes (Linux, Windows, Mac OS X, Android). Comparaison.
       •   Virtualisation/Machines virtuelles/Emulation.

 

►  Systèmes embarqués et internet des objets

 

   Ce cours a pour objectif de découvrir les spécificités du développement d’applications sur des systèmes embarqués et des objets connectés de différentes natures.

   Les contraintes pour développer ces objets connectés sont variés : limite énergétique, capacités de calcul, connectivité réseau, déluge de données, temps réel, etc. Ainsi, l’électif s’attachera dans un premier temps à dégager les grands principes qui sont communs à ces objets connectés, par exemple, le déport des données dans le cloud, l’économie des traitements logiciels, la gestion de la connectivité réseau par intermittence.

   Dans un second temps, l’électif illustrera ces principes en choisissant certains systèmes embarqués pour lesquels on approfondira le développement logiciel. En particulier, nous détaillerons l’écosystème informatique qui est propre à chacun de ces systèmes embarqués. Cet écosystème informatique a pour objectif de répondre aux contraintes particulières et de faciliter le développement des applications. D’un point de vue des langages, il peut s’agir de l’utilisation d’un langage très proche du système d’exploitation comme le C, ou bien d’un langage de plus haut niveau s’exécutant sur une machine virtuelle comme Java. Dans certains cas, des langages plus dédiés permettent de simplifier davantage la programmation. D’un point de vue des données, il peut s’agir de fournir des solutions de stockage local ou bien une API de programmation permettant de déporter ces données dans le cloud.

   Précisons que les systèmes étudiés pourront s’enrichir avec l’évolution de l’électif et avec la participation d’intervenants extérieurs.

 

►  Radiocommunications

 

   Les systèmes de communication sur fréquence porteuse en transmission hertzienne ou en transmission par câble connaissent un développement nouveau et très important, aussi bien dans la vie quotidienne de chacun que dans l’industrie. Tous les secteurs de l’économie sont en effet désormais concernés par l’intégration des technologies radio au niveau système : télécoms, énergie, informatique, robotique, transports, agriculture, etc. Les nouvelles approches industrielles, dites intelligentes, le deviennent grâce aux communications qui y sont intégrées : réseaux électriques intelligents (smart grids), transports intelligents, maisons intelligentes, smart cities, etc. A titre personnel, toute personne est en outre de plus en plus confrontée à l’utilisation des communications radio, et il est primordial à un ingénieur de les comprendre. Les applications radio mises en œuvre sont par exemple la téléphonie mobile, les réseaux locaux, la radiodiffusion, la télévision, la transmission de données, les RFID, les objets communicants (internet des objets). Le traitement des signaux à fréquence élevée pour véhiculer une information numérique implique l'emploi de techniques spécifiques et la compréhension des phénomènes physiques dont la présentation fait l'objet de ce cours.

 

►  Compilation

 

   Ce cours abordera les notions suivantes :

       •   Analyse lexicale et syntaxique : grammaire de langage, analyse LALR(k), LL, LL(k).
       •   Arbre de syntaxe abstraite : transformation de l’arbre en code intermédiaire.
       •   Sémantique des langages.
       •   Analyse statique : ordre partiel, treillis, calcul de point fixe, analyse Kill/Gen, interprétation abstraite.
       •   Production de code et optimisation : allocation de registres, détection de code mort, optimisation de graphes de flots de contrôle, simplification, propagation de contraintes.
       •   Sécurité des langages.

   Le cours de compilation est accompagné d’un projet dont l’objectif est la réalisation d’un prototype de compilateur, intégrant de nouveaux mécanismes d’optimisation dans le cadre de la phase de finalisation. Selon les partenariats industriels choisis, le compilateur créé optimisera différents critères (consommation d’énergie, taille mémoire de l’exécutable, vitesse d’exécution, etc.). Par exemple, ST Microelectronics peut fournir des contraintes sur les composants matériels. Morpho peut amener des contraintes sur les temps d’exécution de certaines parties du code (par exemple temps d’exécution d’un mécanisme d’authentification). Apple peut fournir des illustrations d’objets connectés (comme les montres connectées) pour optimiser la gestion de l’énergie.

 

►  Micro-grid

 

   La production d’électricité sur les sites isolés tels que les îles, mais aussi des quartiers autonomes en énergie dans des projets « Smart City », présente un certain nombre de spécificités que sont en particulier la limitation des sources primaires d’énergie disponibles et la petite taille du réseau de distribution desservi. Par ailleurs, l’intérêt écologique et économique pousse à intégrer dans ces réseaux des sources renouvelables (éolien, solaire) et, pour sécuriser leur caractère incertain et fluctuant, des moyens de stockage (batteries). Le pilotage d’un micro-réseau, vu la diversité de ses composants, est donc un problème à la fois difficile et crucial pour son bon fonctionnement. C’est cette problématique de conduite et de régulation que ce cours-projet électif propose d’aborder.

   Ce cours-projet permet donc à la fois de découvrir globalement la modélisation et le fonctionnement d’un micro-réseau avec ses composants (éoliennes, panneaux solaires…) et en même temps de s’initier au pilotage d’un système complexe.

 

►  Analyse d’image & son 2D-3D

 

.

 

►  Energies renouvelables

 

.

Facebook Twitter Linkedin Instagram Youtube