La sécurité avant tout : tout est sous contrôle
Chaque jour, nous utilisons d'innombrables systèmes complexes sans penser à leur fonctionnement. Qu'il s'agisse de petites actions comme appuyer sur un interrupteur ou de décisions plus importantes comme passer une commande auprès d'un détaillant en ligne ou même prendre un vol, nous pensons généralement à ce dont nous avons besoin, mais pas à ce qui pourrait mal tourner. Nous nous attendons simplement à ce que les avions dans lesquels nous montons ne s'écrasent pas, à ce que les lumières fonctionnent et à ce que les articles marqués comme devant être livrés le lendemain arrivent effectivement le jour suivant. Pourtant, si ces événements ne se produisent pas, les conséquences peuvent aller d'un léger désagrément (colis en retard) à un véritable désastre (accident d'avion).
Ces attentes peuvent être décrites comme formant notre concept de sécurité. Si les attentes sont satisfaites, nous sommes en sécurité ; si elles ne sont pas satisfaites, le système n'est plus sûr. La sécurité, dans ce sens, est une mesure de confort et de confiance dans la capacité d'un dispositif ou d'un système à faire ce que nous voulons qu'il fasse ; elle peut couvrir la sécurité psychologique ou environnementale, et pas seulement la sécurité physique. Voyons comment les ingénieurs définissent (et garantissent) la sécurité, et comment nous équilibrons les différents types de contraintes. Dans un second billet, nous approfondirons les aspects techniques du contrôle de la sécurité.
Qu'est-ce que la sécurité ?
Pour les concepteurs et les opérateurs de systèmes, la sécurité doit être prise en compte à tous les niveaux, de la conception à la mise en œuvre et au-delà, y compris la détection et la correction des défaillances (et les interventions d'urgence). Il s'agit d'un problème de gestion, pas seulement d'ingénierie, mais les ingénieurs de contrôle sont essentiels pour créer des systèmes de sécurité à chaque étape.
Il y a de nombreux aspects à prendre en compte. Dans le contexte d'un vol, l'avion doit atterrir à sa destination, arriver à l'heure, décharger tous les passagers et bagages, rester à une distance acceptable des autres objets en vol (le sol, les tours et les autres avions), conserver son intégrité structurelle, maintenir un niveau de carburant acceptable, assurer le confort des passagers tout au long du vol (en ce qui concerne la température, la pression et les niveaux d'oxygène), faire en sorte que son logiciel s'exécute de manière fiable et prévisible, et être en bon état de fonctionnement pour son prochain vol.
Certaines de ces exigences sont manifestement plus importantes que d'autres. Si la température à l'intérieur de l'avion tombe un peu trop bas, les passagers peuvent être mal à l'aise mais ne seront pas blessés ; il n'en va pas de même en cas de rupture totale de la pression ou de crash de l'avion. De même, l'objectif est d'arriver à destination, mais dans une situation d'urgence (comme un moteur endommagé), l'avion doit atterrir en toute sécurité dès que possible, partout où il le peut, pour permettre les réparations.
Il existe donc une hiérarchie des spécifications de sécurité, en particulier dans le cas de défaillances inévitables. Si l'avion est certain de s'écraser, il doit le faire de manière à minimiser le nombre de victimes et les dégâts, par exemple en s'écrasant au-dessus d'un plan d'eau plutôt que dans une ville à forte densité de population. En fonction de l'application, les priorités peuvent être fixées par de nombreuses parties prenantes : organismes de normalisation, agences (inter)gouvernementales, entreprises, chercheurs, ingénieurs et utilisateurs (dont vous faites partie).
En outre, les spécifications de sécurité doivent être équilibrées avec la stabilité : la tendance du système à revenir à un point, à un modèle ou à une région. La sécurité et la stabilité sont des principes complémentaires qui s'influencent mutuellement. Pour un avion, par exemple, la stabilité pourrait consister à revenir à une trajectoire de vol nominale après une perturbation, tandis que la sécurité consisterait à ne pas s'écraser ou décrocher en cours de route.
Qu'est-ce qu'un espace sûr ?
Pour déterminer si un système est sûr, nous commençons par définir des régions sûres - bien que, comme nous le verrons, cela ne se limite pas à la géographie.
Prenons un nouvel exemple : la circulation routière. Pour une voiture roulant sur une route, la zone sûre (au sens de la position) est la partie de la route qui n'est pas occupée par d'autres usagers (piétons, cyclistes et véhicules) tant que la voiture respecte le code de la route (emprises, feux de signalisation, accotements, etc.). Tout le reste est la zone dangereuse. Cela inclut les situations où la position de la voiture chevauche celle d'autres voitures (oups - c'est une collision), ou peut-être celle d'un bâtiment (crash !). Mais il est clair qu'en matière de sécurité, la position seule ne dit pas tout. Nous devons également tenir compte des vitesses et d'autres états.
Imaginez une voiture en train d'entrer en collision avec un mur. Si l'on ne tient compte que de la position, on pourrait dire que les passagers de la voiture se trouvent dans une zone sûre - après tout, ils n'ont pas encore percuté le bâtiment. Mais si la voiture roule suffisamment vite pour qu'un freinage agressif n'empêche pas la collision, elle n'est déjà plus en sécurité. Lors de la conception des systèmes de contrôle des véhicules autonomes, la zone dangereuse doit donc être définie de manière à inclure la position et la vitesse initiales de la voiture, ainsi que l'efficacité de ses freins. De plus, les spécifications de sécurité dépendent souvent du temps et de l'ordre des tâches. Une voiture électrique doit être suffisamment chargée, débranchée de la station de recharge, puis conduite : le fait de laisser la voiture branchée tout en commençant à rouler entraîne généralement la rupture du câble ou de l'appareil de recharge.
En d'autres termes, il ne suffit pas de dire à la voiture « ne pas s'écraser ». L'ingénierie de contrôle doit transformer cette spécification de haut niveau (éviter la zone dangereuse !) en tâches réalisables avec des priorités correctement ordonnées. Les conducteurs humains obéissent à un ensemble d'instructions tacites mais universellement comprises : « Allez à votre destination à une vitesse sûre, en maintenant des niveaux de carburant ou de charge sûrs, tout en respectant toutes les lois de la route et en évitant les autres usagers de la route, même s'ils ne respectent pas eux-mêmes le code de la route. Il est probable qu'ils suivent également un autre enseignement, moins souvent nécessaire : « Si vous ne pouvez pas rester en sécurité, choisissez d'infliger le moins de dommages possible à vous-même, à vos passagers et aux autres usagers de la route. Choisissez d'abord d'éviter les usagers de la route les plus vulnérables ». Les ingénieurs doivent en quelque sorte traduire tout cela en code... et la définition des parties les plus floues de ces conseils, comme la vulnérabilité, peut dépasser la portée de l'ingénierie seule.
L'essentiel de la programmation de la voiture peut être exprimé sous la forme d'une tâche d'évitement : (TOUJOURS PAS dans l'ensemble dangereux) ET (ÉVENTUELLEMENT dans l'ensemble de destination). Les tâches d'évitement d'atteinte ont des applications dans la planification des chemins : par exemple, un robot d'entrepôt doit arriver et déposer son colis dans la zone de chargement tout en évitant les collisions avec les étagères et les autres agents. La navigation des véhicules n'est qu'un sous-ensemble de ce type de planification de trajectoire.
Ensuite, la dépendance vis-à-vis du temps et des tâches peut être exprimée sous la forme d'une logique temporelle, qui se compose des opérations logiques standard (NOT, AND, OR) et des opérations temporelles (ALWAYS, UNTIL, EVENTUALLY). La logique temporelle peut être utilisée pour élaborer des spécifications pour des systèmes, y compris ceux comprenant des agents multiples tels qu'un essaim de drones dans un spectacle de lumière. Mais, comme vous pouvez l'imaginer, il devient de plus en plus difficile de vérifier et d'obéir aux spécifications de la logique temporelle au fur et à mesure que la taille et la complexité des systèmes augmentent. De plus, les autres facteurs liés à la sécurité - de la vitesse aux interventions d'urgence - exigent une logique de plus en plus complexe.
Il existe des méthodes formelles qui peuvent être utilisées pour vérifier si les spécifications de sécurité sont respectées. Dans l'analyse d'accessibilité, par exemple, tous les états accessibles possibles sont explorés (ou approximés) pour s'assurer que l'ensemble dangereux n'est jamais atteint. Les contrôleurs logiciels des voitures et des avions (entre autres applications) sont rigoureusement vérifiés pour s'assurer que, dans tous les scénarios possibles, le programme sera exécuté conformément aux spécifications logiques. Les lois de contrôle comprennent également des instructions sur la manière d'équilibrer les spécifications de sécurité dans les situations inévitables, car toutes les violations des spécifications de sécurité ne sont pas égales. (Il convient de noter que, bien entendu, un certificat de sécurité pour le logiciel seul ne garantit pas la sécurité de l'ensemble du système. Un algorithme de contrôle certifié correct pour un avion peut toujours provoquer l'écrasement de l'avion s'il manque des vis ou des attaches).
C'est grave, mais est-ce fatal ?
Revenons à l'exemple de l'avion et considérons deux événements possibles : s'écraser contre une montagne ou arriver avec une demi-heure de retard à destination. Il s'agit dans les deux cas de violations des spécifications de sécurité, mais leur gravité est loin d'être comparable.
Les infractions aux règles de sécurité peuvent être divisées en deux catégories fondamentales : les infractions fatales et les infractions non fatales. Le terme « fatalité » se réfère ici à l'arrêt du système, pas nécessairement à la vie humaine - le système cesse immédiatement d'évoluer. Les violations fatales de la sécurité doivent être évitées à tout prix, tandis que les violations non fatales sont acceptables, mais non préférées. Dans le cas de l'avion, l'écrasement est une violation fatale de la sécurité, tandis que l'arrivée tardive est une violation non fatale.
D'autres exemples de violations fatales de la sécurité incluent un piéton écrasé par une voiture ou une panne de réseau électrique. Elles sont assorties de sanctions sévères (perte de santé humaine, dommages financiers importants ou autres conséquences) et doivent être évitées à tout prix.
Les violations non mortelles de la sécurité peuvent être coûteuses, mais elles n'empêchent pas le système de continuer à fonctionner. La politique de contrôle peut permettre des violations de contraintes, par exemple en autorisant la température de l'air à dépasser les limites de confort définies (peut-être pour économiser de l'énergie).
Ça se complique. Les contraintes actuelles du réseau électrique donnent lieu à des violations de sécurité couplées, fatales et non fatales. Un moteur à turbine (par exemple, un générateur de gaz) peut produire 5 à 10 fois son courant nominal de sécurité en courtes rafales tout en restant sûr ; mais le maintien de cette surintensité pendant plus longtemps peut entraîner la rupture du moteur, ou l'affaissement d'une ligne électrique, voire sa fonte. Ces composants ont des spécifications de sécurité fatales en termes de chaleur et de contraintes physiques. Ces contraintes peuvent être considérées comme des violations de sécurité non fatales en termes de courant, ce qui incite le contrôleur à revenir dans la zone de sécurité et à évacuer la chaleur/réduire le stress.
Au fur et à mesure que la transition vers les sources d'énergie renouvelables progresse, des violations de sécurité plus fatales entrent en jeu. L'énergie solaire est généralement générée en courant continu et doit être convertie en courant alternatif par un dispositif électronique de puissance appelé onduleur. Les onduleurs ont une contrainte de sécurité fatale en ce qui concerne leur limite de courant : une surintensité pourrait faire fondre les composants du circuit. Les ingénieurs spécialisés dans les systèmes électriques et l'électronique de puissance travaillent sur des méthodes permettant de maintenir la sécurité et la stabilité du réseau dans les limites de courant rigoureuses imposées par les onduleurs.
Quel est notre niveau de sécurité ?
Un résultat sûr n'est peut-être pas suffisant en soi. Si deux avions volant dans des directions opposées se croisent sans s'écraser, est-il important qu'ils se manquent de 30 km ou de 10 cm ? Les passagers et le personnel à bord se sentiraient très différents dans ces deux situations !
C'est pourquoi nous parlons de quantification de la sécurité. Les quantificateurs possibles pourraient inclure la distance d'approche la plus proche, la perturbation minimale susceptible de provoquer un accident, la probabilité d'accident dans le pire des cas, l'altération minimale des données susceptible de provoquer l'accident d'un modèle du système cohérent avec les données, ou la moyenne/le quantile/le risque de cette distance (ou d'une autre quantité) en cas d'incertitude.
Les quantificateurs pour des applications spécifiques pourraient inclure la vitesse maximale d'un avion, la hauteur d'un drone, la concentration d'une substance toxique dans l'eau ou le nombre de personnes infectées au cours d'une pandémie. Quel que soit le contexte, il arrive que l'on veuille abaisser la valeur maximale, plutôt que de se contenter de veiller à ce qu'elle ne soit pas dépassée. En d'autres termes, il ne suffit pas de rater l'autre avion dans le ciel. Il faut une marge de sécurité suffisante.
Tout ceci devrait vous avoir permis de bien comprendre ce que signifie la sécurité dans le contrôle, et comment les ingénieurs doivent formuler la logique pour fournir des contraintes vitales à un système automatisé. Si vous souhaitez savoir comment les différents types de contrôleurs mettent en œuvre ces contraintes, et en particulier comment ils gèrent l'incertitude, nous y reviendrons dans un deuxième article plus technique.