Grenoble|images|parole|signal|automatique|laboratoire
Perception embarquée sur GPU pour la robotique
École thématique "signal images : architecture et programmation des GPU"
Amaury Nègre
CNRS, GIPSA-lab 10 Novembre 2017
Introduction
Qu'est-ce que la perception embarquée Problématiques
Intérêts du GPU Cas d'études Conduite autonome
Application étudiée Estimation du sol
Grilles d'occupation dynamiques Prédiction de collision
Résultats
Navigation de drones Problématiques Stéréovision SLAM
Odométrie visuelle + cubemap Synthèse
gipsa-lab
[A. Nègre], [Perception embarquée] 2/ 34
Introduction
Qu'est-ce que la perception embarquée Problématiques
Intérêts du GPU Cas d'études Conduite autonome
Application étudiée Estimation du sol
Grilles d'occupation dynamiques Prédiction de collision
Résultats
Navigation de drones Problématiques Stéréovision SLAM
Odométrie visuelle + cubemap Synthèse
Perception embarquée
Perception embarquée
Traitement de données par un calculateur directement connecté aux capteurs en mouvement, pour la prise de décision.
Exemples
I Vision pour la robotique (reconnaissance de personnes, de visages, de couleurs)
I Localisation, reconstruction 3D
I Détection d'obstacles
gipsa-lab
[A. Nègre], [Perception embarquée] 4/ 34
Problématiques
I Complexité des traitements (capteurs en mouvement, quantité des données)
I Temps de calcul, réactivité
I Consommation énergétique
I Encombrement
I Fiabilité
Intérêt du GPU
I Natures des données adaptées (images, nuages de points, son)
I Bon rapport puissance/consommation
I Gamme de produits dédié à l'embarqué (Jetson Tegra K1, X1, X2)
I Facilité de programmation, outils de développement (par rapport aux autres solutions embarquées)
gipsa-lab
[A. Nègre], [Perception embarquée] 6/ 34
Cas d'études
1. Conduite autonome 2. Navigation de drône
Introduction
Qu'est-ce que la perception embarquée Problématiques
Intérêts du GPU Cas d'études Conduite autonome
Application étudiée Estimation du sol
Grilles d'occupation dynamiques Prédiction de collision
Résultats
Navigation de drones Problématiques Stéréovision SLAM
Odométrie visuelle + cubemap Synthèse
gipsa-lab
[A. Nègre], [Perception embarquée] 8/ 34
Conduite autonome
Application étudiée
Prédiction de collision
I Environnement ouvert et dynamique
→ calcul en temps réel
I Incertitude
→ approches probabilistes
I Limitation des capteurs
→ fusion multi-capteurs
I Intégration matérielle
→ contraintes embarquée (encombrement, energie)
Bayesian multi-sensors fusion +
Temporal Bayesian filtering
gipsa-lab
[A. Nègre], [Perception embarquée] 10/ 34
Application étudiée
Prédiction de collision
I Environnement ouvert et dynamique
→ calcul en temps réel
I Incertitude
→ approches probabilistes
I Limitation des capteurs
→ fusion multi-capteurs
I Intégration matérielle
→ contraintes embarquée (encombrement, energie)
Bayesian multi-sensors fusion +
Temporal Bayesian filtering
plateformes
© Inria. All rights reserved
C. LAUGIER – “Embedded Bayesian Perception and V2X communications for Autonomous Driving”
GTC 2017, McEnery Convention Center, San Jose, California, May 8-11 2017
&
© Inria. All rights reserved 20
Experimental Vehicles & Connected Perception Units
2 Lidars IBEO Lux cameras Toyota Lexus
Nvidia GTX Titan X Generation Maxwell
Nvidia GTX Jetson TK1 Generation Maxwell
Nvidia GTX Jetson TX1 Generation Maxwell
Connected Perception Unit Renault Zoé
cameras Velodyne 3D lidar
IBEO lidars
gipsa-lab
[A. Nègre], [Perception embarquée] 11/ 34
Données capteur
Télémètre laser Velodyne HDL-64E
I 2.2 Millions de points par seconde
I angle de vue 360°
I résolution angulaire 0.08°
I 64 canaux
Classication des points et estimation du sol
gipsa-lab
[A. Nègre], [Perception embarquée] 13/ 34
Modèle mathématique
Champ de Markov Conditionnel Gaussienavec 3 potentiels
I Potentiel de mesure : dépend des points observés
I Potentiel spatial : dépend du voisinage spatial
I Potentiel temporel : dépend des estimations passées
Résolution
I Discrétisation du plan horizontal sous forme de maillage uniforme
I Méthode itérative de type "Expectation-Maximization"
I Expectation : calcul des probabilité d'appartenance au sol pour chaque point
I Maximization : mise à jour de l'état de chaque noeud Xik+1 = α P
j∈MicjzjHijT +β P
j∈NiFijTXjk +γQiTXit−1 Pik+1 = α P
j∈MicjHijTHij+β P
j∈NiFijTPjkFij +γQiTPit−1Qi
gipsa-lab
[A. Nègre], [Perception embarquée] 15/ 34
Implémentation CUDA
1. Aectation de chaque point laser au noeud correspondant : 1.1 Calcul des indices pour chaque point en parallèle ("hash") 1.2 Tris des points et des indices (thrust::sort_by_key) 1.3 Récupération du premier/dernier point par noeud (en parallèle
pour chaque point)
Particle Simulation using CUDA
Note that this method was not possible on pre-CUDA architectures because of the lack of scattered memory writes and a binary search would have to be used instead [9].
Figure 3 demonstrates creating the grid using the sorting method.
Figure 3 – Uniform Grid using Sorting
As an additional optimization, we re-order the position and velocity arrays into sorted order to improve the coherence of the texture lookups during the collision processing stage.
Particle Collisions
Once we have built the grid structure we can use it to accelerate particle-particle interactions. In the sample code we perform simple collisions between particles using the DEM method [5]. This collision model consists of several forces, including a spring force which forces the particles apart, and a dashpot force which causes damping.
Each particle calculates which grid cell it is in. It then loops over the neighboring 27 grid cells (3x3x3 cells) and checks for collisions with each of the particles in these cells. If there is a collision the particle’s velocity is modified.
Performance
On most hardware the sorting-based algorithm achieves the highest performance. This is because the sorting improves the memory access coherency when performing the collisions, and also tends to reduce warp divergence (particles in the same warp tend to be close together in space and therefore have similar numbers of neighbors).
The atomic-based method is also more sensitive to the distribution of the particles, with random Index Unsorted list
(cell id, particle id) List sorted by cell id
Cell start
0 (9, 0) (4, 3)
1 (6, 1) (4, 5)
2 (6, 2) (6, 1)
3 (4, 3) (6, 2)
4 (6, 4) (6, 4) 0
5 (4, 5) (9, 0)
6 2
7 8
9 5
10 11 12 13 14 15
10
1 2 3
5 6 7
14 2
0 1 4
9 11
13 15
4
8
12 3 5 0
2. Itérer k fois :
2.1 Calcul des probabilité des points pour chaque noeud 2.2 Mise à jour de l'état de chaque noeud
gipsa-lab
[A. Nègre], [Perception embarquée] 16/ 34
Optimisations
I Utilisation de la mémoire partagée (copie des états précédant au voisinage de chaque noeud)
I Synchronisation globale (pour éviter de lancer k fois le kernel)
→possible uniquement si le nombre de block < nombre de multiprocesseurs
→impossible sur Tegra X1 (2 multi-processeurs)
I Real-time processing (>10Hz on Jetson X1)
gipsa-lab
[A. Nègre], [Perception embarquée] 17/ 34
Résultats
Construction de grilles d'occupation dynamiques
occupancy
velocity
Static Dynamic Empty Unknown
Représentation Hybride
I Grille pour représenter l'état (vide, statique, dynamique, inconnu)
I Particules pour représenter la distribution de vitesse des cellules dynamiques
Résolution
Pour chaque cellule, il faut estimer la distribution de l'état et la vitesse :
P(SV|ZC) = λ P
C−1S−1V−1P(C−1)P(S−1V−1|C−1) P(SV|S−1V−1)P(C|C−1V)P(Z|S,V,C)
gipsa-lab
[A. Nègre], [Perception embarquée] 19/ 34
Construction de grilles d'occupation dynamiques
Retrieve previous static grid
Retrieve previous dynamic particles
Apply motion model
Compute change of reference
frame
Compute change of reference
frame Merge sensor
observations
&
Compute occupancy grid
Evaluate static model
Evaluate dynamic particles
Generate jointly the new models:
grid evaluation and resampling
Sensor data
Implémentation Cuda
I Correction du mouvement propre : Transformation ane sur la grille et les particules
I Propagation des particules : parallélisation sur l'ensemble des particules
I Collection des particules par cellule : Hash + Sort
I Modèle capteur : parallélisation sur les cellules
I Prédiction et mise-à-jour :parallélisation sur les cellules
I Ré-échantillonnage des particules : Prex sum + binary searches (parallélisation par particule)
gipsa-lab
[A. Nègre], [Perception embarquée] 21/ 34
Estimation du risque de collision
t t+1 t+2
t t+1 t+2
Collision
I Simulation du déplacement du véhicule et des particules
I Calcul du temps avant collision (TTC) pour chaque cellule et chaque particule
I Probabilité de collision pour 3 horizons de temps
I Utilisation des grilles de risque ou du risque max (réduction)
Résultats
I Conguration avec 8 nappes lasers (2x4)
I Taille de grille 1400x600 (840000 cellules) et 65536 particules
Jetson TK1 : Grid fusion 17ms, grid ltering + object clustering 70ms
Jetson TX1 : Grid fusion 0.7ms, grid ltering + object clustering 17ms
gipsa-lab
[A. Nègre], [Perception embarquée] 23/ 34
Résultats
Introduction
Qu'est-ce que la perception embarquée Problématiques
Intérêts du GPU Cas d'études Conduite autonome
Application étudiée Estimation du sol
Grilles d'occupation dynamiques Prédiction de collision
Résultats
Navigation de drones Problématiques Stéréovision SLAM
Odométrie visuelle + cubemap Synthèse
gipsa-lab
[A. Nègre], [Perception embarquée] 25/ 34
Navigation de drones : problématiques
I Réalisation de tâches de vision en temps réel en vol
I Avec des contraintes forte en poids...
I Et en énergie
Solution :
I Implémentation Cuda sur plateforme jetson TX1/TX2 avec carte lle légère (auvidea J1XX, connect Tech ASG00X)
Navigation de drones : problématiques
I Réalisation de tâches de vision en temps réel en vol
I Avec des contraintes forte en poids...
I Et en énergie
Solution :
I Implémentation Cuda sur plateforme jetson TX1/TX2 avec carte lle légère (auvidea J1XX, connect Tech ASG00X)
gipsa-lab
[A. Nègre], [Perception embarquée] 26/ 34
Carte de profondeur stéréo
Evaluation des implémentationsVisionWorks (Nvidia) etOpenCV
NVBM SGM CVBM BP CSBP
1280 x 720 (128) 19 fps 4 fps 14 fps erreur 0,7 fps 640 x 360 (64) 90 fps 28 fps 62 fps 0,9 fps 3 fps 320 x 180 (32) 250 fps 125 fps 125 fps 6 fps 11 fps
SLAM
Localisation et construction de carte simultanée
I Evolution des algorithmes depuis une dizaine d'année 1. Méthodes "sparse" (basée sur des points d'intérêts)
2. Méthodes "semi-denses" (patchs centrés sur des points d'intérêts)
3. Méthodes "denses" (cartes complètes)
I Architectures GPU très adaptées aux méthodes denses
gipsa-lab
[A. Nègre], [Perception embarquée] 28/ 34
SLAM
Localisation et construction de carte simultanée
I Evolution des algorithmes depuis une dizaine d'année 1. Méthodes "sparse" (basée sur des points d'intérêts) 2. Méthodes "semi-denses" (patchs centrés sur des points
d'intérêts)
3. Méthodes "denses" (cartes complètes)
I Architectures GPU très adaptées aux méthodes denses
SLAM
Localisation et construction de carte simultanée
I Evolution des algorithmes depuis une dizaine d'année 1. Méthodes "sparse" (basée sur des points d'intérêts) 2. Méthodes "semi-denses" (patchs centrés sur des points
d'intérêts)
3. Méthodes "denses" (cartes complètes)
I Architectures GPU très adaptées aux méthodes denses
gipsa-lab
[A. Nègre], [Perception embarquée] 28/ 34
SLAM
Localisation et construction de carte simultanée
I Evolution des algorithmes depuis une dizaine d'année 1. Méthodes "sparse" (basée sur des points d'intérêts) 2. Méthodes "semi-denses" (patchs centrés sur des points
d'intérêts)
3. Méthodes "denses" (cartes complètes)
Architectures GPU très adaptées aux méthodes denses
SLAM
Temps de calculs de KinectFusion, d'après SLAMBench [Nardi et al. 2015]
gipsa-lab
[A. Nègre], [Perception embarquée] 29/ 34
Odométrie visuelle + cubemap
Introduction
Qu'est-ce que la perception embarquée Problématiques
Intérêts du GPU Cas d'études Conduite autonome
Application étudiée Estimation du sol
Grilles d'occupation dynamiques Prédiction de collision
Résultats
Navigation de drones Problématiques Stéréovision SLAM
Odométrie visuelle + cubemap Synthèse
gipsa-lab
[A. Nègre], [Perception embarquée] 31/ 34
Synthèse
I GPU bien adapté aux tâches de perception denses (sous forme de grilles, nuages de points ou les deux)
I Performance temps réel avec gros ux de donnée (Lidar3D, camera RGB-D, etc.)
I Cartes embarquées très performantes
I Principaux facteurs limitants : Allocations, Bandes-passante mémoire, synchronisation
Remarques de développeur
I Environnement embarqué très pratique (identique PC ubuntu)
I Utilisation de la librairie Thrust
I Allocateurs par défaut à redénir !
I Débugage pas toujours simple
I Penser à utiliser le proler Nvidia
I Nécessité de repenser tous les algorithmes !
gipsa-lab
[A. Nègre], [Perception embarquée] 33/ 34