ACCUEIL ›BLOGS

Apprentissage de bout en bout pour la conduite autonome sur les routes non pavées - Une étude vers une patrouille automatisée de la faune
-

13 avril 2020

L'objectif de notre projet est d'étudier la faisabilité technologique du déploiement de véhicules terrestres sans pilote pour la patrouille automatisée de la faune, ainsi que d'effectuer une analyse préliminaire d'autres métadonnées collectées auprès des responsables d'un parc national au Kenya. À cette fin, nous cherchons à collecter et à publier un ensemble de données de conduite sur les sentiers de parcs nationaux au Kenya, le premier du genre, et à utiliser l'apprentissage en profondeur pour prédire l'angle du volant lors de la conduite sur ces sentiers.

Mise en place du système d'acquisition de données

La collecte de données exigeait qu'un véhicule équipé d'une caméra soit conduit sur les sentiers du parc national tout en enregistrant la vidéo du sentier ainsi que les principaux signaux de conduite tels que l'angle du volant, la vitesse et les positions des pédales de frein et d'accélérateur. Nous avons commencé la conception, l'installation et la configuration du système de collecte de données en novembre et décembre 2019.

La première idée était de se procurer et de fixer des capteurs au véhicule pour obtenir ces signaux de conduite. Mais après des recherches plus poussées, il a été découvert que la plupart de ces signaux de conduite peuvent être lus à partir du bus CAN qui est exposé sur le port OBD-II (On-Board Diagnostics) sur la plupart des véhicules fabriqués après 2008.

Cependant, ces informations sont regroupées et codées dans différents identifiants de paramètres, et il faut une ingénierie inverse pour identifier chacun de ces paramètres de conduite, ce qui prend beaucoup de temps, une activité qui prendrait des mois à elle seule.

Données de conduite codées vues sur le bus CAN du véhicule

De plus, tous les signaux de pilotage ne seraient pas exposés sur le bus CAN. Les paramètres exposés sur le bus varient selon les constructeurs et les modèles de véhicules, tout comme l'encodage. Après avoir échoué à comprendre les données lues à partir du bus CAN de nos véhicules personnels, nous avons décidé de trouver un modèle de véhicule qui avait déjà fait l'objet d'une rétro-ingénierie.

Nous avons pu identifier [1] et nous procurer une Toyota Prius 2012 pour la collecte de données, à partir de laquelle nous avons pu lire l'angle du volant, le couple du volant, la vitesse du véhicule, les vitesses individuelles des roues et les positions des pédales de frein et d'accélérateur. Nous avons utilisé un micro-ordinateur Raspberry Pi 3 avec le chapeau PiCan pour lire et enregistrer les signaux de conduite.

Afin de créer l'ensemble de données pour l'apprentissage et le test de l'algorithme d'apprentissage, chaque échantillon de données devrait contenir une image vidéo correspondant aux signaux de pilotage correspondants à cette instance. Cela signifie que toutes les images vidéo, ainsi que les signaux de conduite, doivent être horodatés.

Les signaux de conduite sont automatiquement horodatés lors de la journalisation sur le Raspberry Pi, mais la plupart des caméras n'horodatent pas les images individuelles. En outre, l'horloge interne de la caméra ne serait pas synchronisée avec celle des RPi, et entraînerait également une désynchronisation des images vidéo et des signaux de commande lors de la création des échantillons de données.

Cela signifie qu'une caméra qui pourrait s'interfacer avec l'ordinateur comme une webcam serait nécessaire, de sorte que chaque image puisse être lue et horodatée avant d'être écrite dans le fichier vidéo. Conduire sur des sentiers accidentés du parc national induirait également beaucoup de vibrations et nécessiterait une caméra avec une bonne stabilisation. Tels étaient quelques-uns des défis liés au choix d'une caméra pour enregistrer la vidéo de conduite.

Consultez la documentation du projet sur Github

Nous avons opté pour la caméra d'action Apeman A80 qui dispose d'une stabilisation gyroscopique, d'un enregistrement vidéo HD et peut également fonctionner comme une webcam. OpenCV a été utilisé pour lire et enregistrer des vidéos horodatées sur l'ordinateur.

Au départ, nous avons essayé de connecter la caméra au Raspberry Pi lui-même. Mais le RPi est un micro-ordinateur de faible puissance. Il y avait un retard significatif dans l'enregistrement et ne pouvait pas écrire la vidéo plus haut qu'une fréquence d'images de 8 ips. Nous avons donc décidé d'utiliser un ordinateur portable capable d'enregistrer confortablement en HD
vidéo à 30 ips pour se connecter à la caméra et le RPi pour enregistrer uniquement les signaux de conduite du bus CAN du véhicule.

Cela présentait cependant un défi différent d'être limité par la batterie de l'ordinateur portable. Alors que le RPi peut être chargé à l'aide d'une banque d'alimentation portable ou directement à partir du port de charge de la voiture, l'ordinateur portable ne le peut pas. Cela signifiait des cycles de collecte de données nettement plus courts. Nous ne pouvions conduire en continu que pendant 2 heures avant de devoir revenir charger l'ordinateur portable, ce qui a pris encore 2 heures.

Cela a forcé la révision à la baisse de nos projections globales de collecte de données de 50 heures à 20 heures, dont 25 heures qui devaient être sur les sentiers du parc national ont été révisées à 10 heures, et les 10 autres heures sur un mélange de routes goudronnées et autres routes rurales. les chemins de terre.

Des tests approfondis ont également été effectués sur différentes méthodes de codage vidéo pour déterminer le meilleur compromis entre la taille de fichier et la qualité, ainsi que l'optimisation du code de collecte de données pour garantir un décalage minimum lors de l'enregistrement des données.

Collecte de données

Nous avons commencé la collecte de données en janvier 2020 sur les routes goudronnées et rurales en terre battue. L'idée derrière cela était de former l'algorithme sur un ensemble de données plus simple, puis d'utiliser l'apprentissage par transfert pour obtenir de meilleurs résultats plus rapidement sur les sentiers du parc national. Les données ont été collectées à différents moments de la journée: tôt le matin, midi et tard le soir afin d'obtenir un ensemble de données varié dans différentes conditions d'éclairage.

Bien que nous ayons pu collecter en douceur les données sur les routes goudronnées, la conduite sur les chemins de terre ruraux s'est avéré impossible car ils étaient marqués de nids de poule. Non seulement il était difficile de conduire un véhicule surbaissé sur un terrain accidenté, mais les manœuvres constantes effectuées pour contourner les nids-de-poule signifiaient que la plupart de ces données seraient inutilisables car elles présenteraient un défi tout à fait différent à l'entraînement.

Le défi de conduire un véhicule surbaissé sur des chemins de terre a également limité nos choix de parcs nationaux, car nous devions sélectionner avec soin ceux avec des pistes de conduite souples. Notre plan de collecte de données de la réserve nationale du Masai Mara a dû être abandonné en raison du mauvais état des routes, et nous avons choisi de collecter des données du parc national de Nairobi (8 heures) et du parc national de Ruma (2.5 heures) à la place. Cependant, même ceux-ci n'étaient pas sans revers impliquant une crevaison et des dommages au pare-chocs.

Un autre défi rencontré dans les parcs était la connectivité Internet. Alors qu'une connexion Internet stable n'était pas nécessaire pour la collecte de données qui a été effectuée hors ligne, une connexion à Internet était nécessaire lors du démarrage du Raspberry Pi pour lui permettre d'initialiser la valeur datetime correcte.

En effet, le micro-ordinateur RPi n'a pas d'horloge interne. Cela signifie qu'à moins qu'il ne soit connecté à Internet, il reprendra l'horloge à partir de la dernière heure enregistrée avant son arrêt, ce qui finira par afficher la mauvaise heure. Cela a entraîné des horodatages incorrects sur les données de conduite enregistrées qui ne pouvaient pas être mis en correspondance avec les horodatages vidéo.

Cela a été observé lors de l'analyse des journaux de données de conduite de l'une des courses du parc national de Ruma. Heureusement, la connectivité Internet a été rétablie vers la fin de l'exécution et le reste des horodatages a pu être calculé correctement en utilisant les débits en bauds des messages.

D'autres problèmes mineurs rencontrés pour obtenir des données de bonne qualité impliquaient de garder le pare-brise propre tout en conduisant sur des sentiers de parc poussiéreux où l'on n'est pas autorisé à descendre du véhicule, et de monter solidement la caméra à l'intérieur du véhicule tout en conduisant sur un terrain accidenté.

Préparation et formation des ensembles de données

Une partie importante des données recueillies comprenait la conduite autour des nids-de-poule, les dépassements, les arrêts, les demi-tours, etc., ce qui ne serait pas utile pour prédire l'angle du volant dans le cadre de cette étude. Tous ces segments devaient être visuellement identifiés et supprimés avant
préparer l'ensemble de données.

Initialement, nous avons proposé d'utiliser un modèle simple de réseau neuronal convolutif (CNN) pour la formation comme dans [2], où l'angle du volant est prédit indépendamment sur chaque image vidéo comme entrée. Cependant, l'angle de braquage dépend également largement de la vitesse du véhicule. La conduite est également un processus avec état, où l'angle actuel du volant dépend également de la position précédente du volant.

Nous avons donc étudié l'utilisation d'un modèle CNN temporel plus sophistiqué comme dans [3] en utilisant des unités récurrentes telles que LSTM et Conv-LSTM qui pourraient donner des résultats plus prometteurs. Le modèle ci-dessus est cependant très coûteux en calcul et nécessiterait un cluster de GPU très coûteux et prendrait encore des jours à s'entraîner.

L'utilisation de ce modèle s'est avérée impossible à réaliser dans les délais et le budget donnés. Nous avons donc décidé de poursuivre notre proposition initiale en utilisant un modèle CNN statique [2].

Actuellement, nous sommes en train de créer l'ensemble de données et le modèle d'apprentissage pour le projet. Nous travaillons également à la préparation d'une analyse préliminaire sur la faisabilité d'une patrouille automatisée de la faune [4] basée sur d'autres métadonnées recueillies auprès des responsables du parc.

Nous sommes reconnaissants de l'immense soutien que nous recevons toujours de notre mentor Billy Okal qui, malgré son emploi du temps chargé, a le temps de mettre en place des appels chaque fois que nous avons besoin de consulter et propose toujours de bonnes idées qui répondent à la plupart de nos préoccupations.

Références

[1] C. Miller et C. Valasek, Adventures in Automotive Networks and Control Units, IOActive
Inc., 2014, p. 92-97.
[2] M. Bojarski et al., Apprentissage de bout en bout pour les voitures autonomes, 2016, arXiv: 1604.07316.
[3] L. Chi et Y. Mu, Deep Steering: Apprentissage du modèle de conduite de bout en bout à partir de
repères visuels temporels, 2017, arXiv: 1708.03798.
[4] L. Aksoy et al., Etude de faisabilité opérationnelle des véhicules autonomes, Turquie International
Congrès de la logistique et de la chaîne d'approvisionnement, 2016.