VT2018 Apollo

=Auteur=
 * Nom : Julien COURTIAL
 * Mail : julien.courtial07@gmail.com
 * Sujet : Apollo

=Résumé= Apollo est une plateforme open-source pour la conduite automatisé. Elle est mise à disposition pour leurs partenaires qui sont plus d'une centaine que ce soit des constructeurs automobile ou des acteurs technologiques majeurs. Le principe de la plateforme est que tous les partenaires puissent partager leur données et étant donné que la plateforme utilise des algorithme de machine learning et de deep learning, plus il y aura d'utilisateurs plus la plateforme deviendra efficace et précise.

=Abstract= Apollo is an open-source platform for autonomous driving. It is given to their partners who are more than a hundred wether they are automotive constructors or major technological actors. The purpose of the platform is that every partners can share their data and since the platform uses machine learning and deep learning algorithm, the more users, the more efficient and accurate the platform will be.
 * Mots clés : Apollo, Open-source, Conduite Automatisé


 * Keywords : Apollo, Open-source, Autonomous Driving

=Synthèse=

Principaux modules
La plateforme est décomposé en différents modules, certains sont situé dans la partie cloud de la plateforme et d'autres directement dans le software qui sera placé dans la voiture.

Carte HD
La carte HD est l'un des principaux modules qui démarque Apollo de ses concurrents. C'est une carte très haute définition est très précise. Elle contient notamment :
 * Routes
 * Limites de la route
 * Types de routes (Autoroute, voie d'accélaration, ...)
 * Limite de vitesse
 * Intersections
 * Lignes virtuels
 * Signalisation (Position exacte et hauteur)
 * Feux de signalisation
 * Panneaux
 * Autres
 * Batiments
 * Passage piétons
 * Barrière
 * Lignes de stop

La carte est construite à l'aide de véhicule Baidu, publié sur le cloud pour la mise à disposition. Elle est ensuite mise à jour au fur et à mesure de son utilisation afin d'avoir une carte à jour ce qui extrêmement important pour la conduite automatisé.

Simulation
Apollo possède aussi un service de simulation ouvert qui permet aux partenaires de pouvoir tester leur logiciel modifié à partir d'Apollo. Il y a des scénarios prédéfinis qui sont disponibles mais il y a aussi la possibilité de créer des scénarios spéciaux si nécessaire. Les données récupérées pendant la simulation servent ensuite à agrandir la base de données destiné à l'entrainement pour les algorithmes de machine learning et de deep learning.

Perception
Le module de perception utilise la caméra, le radar et le LiDAR afin de percevoir l'environnement autour de la voiture. La caméra permet d'avoir des images hautes définitions et en couleurs ce qui permet notamment pour les panneaux de signalisations ou les feux tricolores d'être reconnus plus facilement. Mais il n'y a pas profondeur ou de distances. La caméra est donc couplé avec le radar et LiDAR afin de rajouter une perception 3D aux images. Le LiDAR va donc nous donner des distances ainsi qu'une vue en 3D de l'environnement. Le module de perception permet de détecter les différents objets et de les classifier, ainsi que de connaitre leur trajectoire en détectant leur direction, leur vitesse et leur accélération.

Localisation
Le GPS n'étant pas assez précis pour la conduite automatisé car il possède une précision au mètre près. Mais une précision au centimètre près est nécessaire, pour cela on couple le GPS avec un système de triangulation reposant sur des points d’intérêt repéré par le module de perception et en les comparant avec les points d'intérêt sur la carte HD. Et on utilise aussi un IMU, un système de navigation inertiel pour avoir une meilleure information sur notre vitesse et accélération.

Planification
Une fois que l'on sait où on se situe on peut donc planifier notre trajectoire vers notre destination. Pour cela la carte est transformée en graphe avec coût et ensuite un algorithme A* est appliqué afin de déterminer la meilleure trajectoire pour atteindre la destination sans avoir à calculer tous les trajets possibles ce qui serait trop lourd pour une voiture automatisé. Ensuite il faut pouvoir prévoir notre trajectoire plus en détails en fonction de ce qui se passe autour de nous. Par exemple, pour doubler une voiture il faut trouver la trajectoire avec un moindre coût qui est aussi douce pour les passagers et légales.

Contrôle
Quand la trajectoire a été planifié, il faut alors contrôler la voiture pour suivre cette trajectoire du mieux qu'elle peut. Il y a différents types de contrôleur implémenté par Apollo et que le constructeur peut choisir d'utiliser. Par exemple, il y a un contrôleur PID qui est un contrôleur simple et qui fonctionne dans beaucoup de cas. Il utilise la déviation de notre parcours comparé avec la trajectoire prévu afin de faire une manœuvre pour repositionner la voiture. Mais ce contrôleur a ses limites car ne fonctionne pas sur des cas trop complexes et peut échouer si il y a un délai trop grand pour une réponse. Pour cela il y a le contrôleur MPC, qui utilise un modèle plus précis du véhicule et qui ensuite applique un moteur d'optimisation afin de sortir toutes les commandes à effectuer pour la prochaine étape. Il est plus complexe à implémenter que le PID mais est souvent plus rentable

Matériel
Au niveau matériel, il est nécessaire tout d'abord d'avoir un véhicule contrôlable par électronique ainsi que des composants supplémentaires :
 * Perception
 * Caméra
 * Radar
 * LiDAR
 * Localisation
 * GPS
 * IMU
 * PC industriel qui contiendra Apollo ainsi que des modules supplémentaires

Futur
La première version étant sorti milieu 2017, la plateforme évolue rapidement et en est déjà à la version 3.0 et prévoie pour 2020 de fonctionner de partout en autonomie complète.