Voitures autonomes — Mode d’emploi

Jeremy Cohen
France School of AI
10 min readSep 26, 2018
(source)

Le siècle précédent fut marqué par l’arrivée de la voiture qui transforma complètement notre société. Les villes ont été construites pour y intégrer les voitures. Un culte est né. Pendant plus de 100 ans, des milliers d’entreprises se sont créées autour de la voiture, du transport à la restauration rapide sur autoroute. La voiture est un objet du quotidien devenu essentiel dans nos vies. Cependant, cet objet incontournable est devenu l’une des principales causes de décès dans le monde et un objet particulièrement polluant dans les grandes villes.

Les voitures autonomes (sans chauffeur) suppriment l’erreur humaine responsable de la majorité des accidents et passent à un mode de consommation électrique ne rejetant pas de particules fines. Depuis quelques années, de plus en plus d’entreprises et de constructeurs décident d’investir dans les systèmes sans chauffeur. Simple mode ou disruption réelle de notre style de vie ? La question n’est plus là. A l’heure de l’intelligence artificielle, du Big Data et de la robotique, la voiture autonome est plus que jamais au cœur de l’innovation d’aujourd’hui pour transformer notre avenir.

(source)

Cet article conclut cette série basée sur les articles :
- l’IA…Et le véhicule fut autonome
- La fusion de capteurs
- Les voitures autonomes et la localisation
- Les voitures autonomes peuvent-elles penser ?
- La dernière étape : Contrôle

Si vous souhaitez avoir une parfaite compréhension des voitures autonomes, je vous recommande la lecture de ces articles qui approfondissent chaque brique d’un véhicule autonome.

Premièrement, revoyons chaque étape qui rend une voiture autonome. Nous en comptons 4 : La perception, la localisation, la navigation et le contrôle.

  • PERCEPTION — Cette étape permet de fusionner plusieurs capteurs différents (Caméra, LiDAR, RADAR, …) pour savoir où est la route et quel est l’état (type, position, vitesse) de chaque obstacle. Ceci permet de définir une compréhension du monde dans lequel roule notre voiture.
(source)
  • LOCALISATION — Cette étape utilise des cartes très précises (HD Maps) ainsi que des capteurs (GPS, caméra, LiDAR, …) pour comprendre où se situe la voiture dans son environnement au centimètre.
Résultat de recherche d'images pour "localization self driving car slam"
(source)
  • PLANNING —Cette étape utilise la connaissance de la position de la voiture et des obstacles pour planifier des trajectoires jusqu’à une destination. Le code de la route est appliqué ici et les algorithmes définissent des points de chemin. Ceci permet de prendre des décisions et de guider le véhicule à une destination.
(source)
  • CONTROL — En prenant en compte la route et le véhicule, et en y intégrant la physique, nous développons des algorithmes pour suivre les points de chemin efficacement. Ceci permet de déplacer le véhicule en actionnant le frein, l’accélération et le volant.
Udacity Self Driving Car Nanodegree Project

Dans ce dernier article de cette introduction aux véhicules autonomes, nous évoquerons l’intégration de toutes ces étapes dans une voiture. Nous verrons cela à travers le dernier projet du Nanodegree sur les voitures autonomes d’Udacity. Ce projet permet de former une équipe de 5 personnes et d’intégrer durant 1 mois toutes ces briques dans la voiture autonome d’Udacity.

Je remercie les contributeurs de ce projet Anil Dhole, Anurag Kankanala, Srikanth Mutyala et Vincent Wiart.

Avant de discuter du projet, un peu de matériel sur les voitures autonomes.

A quoi ressemble une voiture autonome ?

Une voiture autonome ressemble à n’importe quelle voiture à l’exception que des capteurs et ordinateurs sont ajoutés pour permettre une navigation sans chauffeur.

(source)

Quelles voitures ?

Toutes les voitures ne peuvent pas être rendues autonomes. Une voiture est contrôlée par la brique Contrôle, en charge de générer trois valeurs :

  • L’angle du volant
  • La valeur d’accélération
  • La valeur de frein

Pour être autonome, une voiture doit être capable de donner un accès électronique à ces trois valeurs. Dans les voitures anciennes, ces valeurs ne sont modifiables que manuellement (en tournant le volant par exemple). Dans les voitures récentes, il est possible de prendre contrôle du volant et des pédales avec des boutons.

Ces voitures sont ce qu’on appelle des voitures Drive-By-Wire.

Le coffre

La majorité des voitures autonomes ont un coffre similaire à celui-ci. Des ordinateurs sont reliés entre eux et aux capteurs du véhicule. Certains modules peuvent être vendus par des entreprises qui fournissent un ordinateur “boîte noire” qui se branche à l’ordinateur principal et envoie des trames CAN.

Le toit

Suivant le choix des constructeurs, une voiture autonome peut regrouper des LiDARs et caméras sur son toit, à l’avant, à l’arrière et ressembler à cela.

Toutes ne font pas ce choix et certaines privilégient le design.

La connectivité

Pour relier les ordinateurs du coffre à la voiture, nous branchons l’ordinateur central à la prise OBD du véhicule, permettant de prendre le contrôle des pédales et du volant.

L’intérieur

L’intérieur du véhicule pourra être redesigné pour atteindre un niveau de confort toujours plus élevé en masquant le plus possible la robotisation et en changeant l’actuelle configuration des voitures.

(source)

Comment marche l’ordinateur d’une voiture autonome ?

Généralement, l’ordinateur d’une voiture autonome fonctionne sous Linux. Linux est un OS (Operating System) très apprécié de la part des développeurs car performant, toujours mis à jour, et gratuit. Le fond d’écran ressemble souvent à cela.

Ubuntu

Couplé à cela, ROS (Robot Operating System) est généralement l’outil installé pour permettre de retranscrire l’architecture d’un véhicule autonome et la communication de paquets en temps réel.

L’architecture logicielle

Le logiciel fonctionne sous ROS (Robot Operating System). Il s’agit d’un système fonctionnant avec Linux pour gérer l’envoi de messages en temps réel.

Un des grands avantages de ROS est de permettre l’enregistrement de bags. Enregistrer un bag permet d’enregistrer tous les messages envoyés et de rejouer la scène plus tard et tester des algorithmes sans avoir à retourner sur le terrain. Un fichier bag de quelques secondes fait généralement plusieurs Gb suivant le type de message que l’on envoie.

ROS fonctionne comme dans le schéma suivant.

Fonctionnement de ROS

Un Node ROS est l’équivalent d’une fonction ou d’un mini programme. Son rôle est de publier des informations (obstacles, position, …) qu’on appelle des messages. Chaque message est publié sur un topic.

Un Node qui publie des informations est appelé Publisher. Ceux qui écoutent et utilisent ces informations sont appelés Subscriber. Généralement, un node est à la fois Subscriber et Publisher. Cette architecture permet de ne pas bloquer le système si un module ne répond pas. Les Nodes publient peu importe s’il y a des Nodes pour écouter.

L’ensemble des nodes forment un graphe.

Déroulement du Projet

Introduction

L’objectif de ce projet est de faire fonctionner un véhicule sans chauffeur sur un simulateur puis sur un parking. Le véhicule devra rouler plusieurs tours dans le parking et s’arrêter en cas de feu rouge.

Les capteurs et composants du véhicule d’Udacity sont les suivants :

  • Mémoire RAM — 31.4 GiB Memory
  • Processeur — Intel Core i7–6700K CPU @ 4 GHz x 8
  • Carte graphique — TITAN X Graphics
  • Architecture — 64-bit OS

Cette configuration permet une vitesse de processeur rapide. La carte graphique et la mémoire RAM rendent possible le traitement des images par des algorithmes de Deep Learning.

Architecture

Le graphe utilisé dans le projet Udacity est le suivant.

Architecture Projet Final

L’architecture contient trois sous-systèmes (Perception, Planning, Control) ainsi que le véhicule. Le véhicule publie l’image prise par la caméra, la vitesse du véhicule, la position du véhicule (remplaçant le module localisation) et une valeur indiquant si le mode autonome est activé.

Les sous-systèmes contiennent ensuite des nodes.

  • Waypoint Loader charge les points de chemin que le véhicule va suivre.
  • Traffic Light Detection détecte la couleur des feux de signalisation.
  • Waypoint Updater adapte les points de chemin à la situation (feu rouge).
  • Drive By Wire calcule les valeurs d’angle, accélération et frein au véhicule pour prendre le contrôle s‘il indique être en mode autonome.

Ces sous-systèmes permettent de faire rouler le véhicule sans chauffeur et de s’arrêter en cas de feu rouge. Beaucoup de paramètres entrent déjà en jeu. Pour fonctionner sur route ouverte, un véhicule doit être plus sophistiqué pour prendre en compte la détection de la route, des panneaux, la prise de décision, l’implémentation du code de la route, la carte…

Chargement de points de chemin

Le parcours étant prévu à l’avance, nous savons exactement où aller et n’avons pas besoin de calculer ces points. Les points de chemins fournis par Udacity sont des messages contenant les coordonnées que le véhicule doit suivre.

Ce que nous communiquons aux autres nœuds est en réalité une ligne. Une ligne est composée de points de chemins. Chaque point est traduit par des coordonnées (x,y) une orientation, la vitesse linéaire et la vitesse angulaire.

Ceci permet de traduire comment le véhicule devra rouler.
La vitesse à adopter est la vitesse maximale autorisée dans l’environnement où nous sommes. Les points sont ensuite prévus pour permettre une accélération puis un maintien à vitesse constante.

Détection de feux rouges

La détection de feux rouges est une étape de Perception qui se développe en deux étapes.

La première étape est l’entraînement d’un modèle permettant de reconnaître les feux et leur couleur (rouge, orange, vert). Le modèle choisi est Faster RCNN et a du être entraîné sur des images du simulateur ainsi que sur des images réelles pour pouvoir fonctionner dans les deux cas.

Faster-RCNN est un modèle de détection d’objets sur des images comme le sont YOLO (You Only Look Once) ou SSD (Single Shot Detector).

Une fois l’entraînement terminé, nous avons pu tester notre modèle et implémenter un node publiant position et état des feux.

Résultat de recherche d'images pour "udacity final project self driving car traffic light"

Publication des points finaux

Cette étape consiste à modifier les points dans le cas où un obstacle ou un feu rouge serait sur notre chemin. Si l’on rencontre un feu rouge, nous devrons modifier les points pour qu’ils s’arrêtent au niveau du feu. La voiture devra décélérer de manière agréable pour le conducteur.

Comment connaître la position des feux ?
La position des feux est donnée par Udacity dans un fichier. Ce fichier peut être assimilé à la carte de l’environnement. Dans le cas du parking, nous n’avions qu’un seul feu dont nous connaissions aussi la position.
Dans le cas où la position est inconnue, des algorithmes de SLAM et l’utilisation de LiDARs permettra de placer précisément le feu.

Drive By Wire : Contrôle

Ce dernier node calcule angle du volant, accélération et frein en utilisant des régulateurs comme le PID.

Résultats

Projet Final Udacity

Sur la vidéo, on peut voir que le véhicule charge les points de chemin qui lui ont été donné grâce au node Waypoint Loader. Si un feu rouge est détecté par le node Traffic Light Detection, le véhicule met à jour ses points de chemin grâce au node Waypoint Updater. Enfin, le véhicule suit les points de chemin par le node Drive By Wire.

Dans la vidéo, le véhicule ne s’arrête pas au feu rouge en raison d’une faible robustesse à l’éclairage. Bien que ce ne soit pas un point bloquant pour passer le projet, l’entraînement devrait être mieux optimisé et couplé à d’autres systèmes de détection comme le V2I (véhicule to Infrastructure) pour une version en production.

L’outil RViz permet ensuite d’afficher les résultats obtenus et de travailler dessus. A gauche, on peut voir l’image caméra. A droite, le résultat du LiDAR dans le parking.

Conclusion

Les véhicules autonomes sont omniprésents dans l’actualité tech. Chaque jour, une entreprise fait une annonce dans ce secteur. Comprendre comment un véhicule autonome marche est essentiel à ceux qui souhaitent entrer dans l’univers de la robotique ou plus précisément des systèmes autonomes. Les transports de demain ne nécessiteront plus de chauffeurs, mais des algorithmes très bien optimisés et des ingénieurs compétents. Cette série d’articles aide à comprendre quelles sont les briques techniques qui permettent le développement du véhicule autonome. Le monde de demain passe par les véhicules autonomes et arrivera à des transports aériens d’ici quelques années. Beaucoup de choses sont à prévoir, restez à l’écoute !

Jeremy Cohen.

Partageons nos LinkedIn et n’hésitez pas à me suivre !

Discover this article in English

Références

Projets GitHub final

  • Implémentation d’une voiture autonome : capstone

--

--

Jeremy Cohen
France School of AI