Académique Documents
Professionnel Documents
Culture Documents
INGÉNIEUR D'ÉTAT
Stage eectué à :
Encadré par :
M. BELKEBIR Hicham, Encadrant à l'ENSAF
M. LAMRABET Abdellah, Encadrant à ALTEN
Ce travail est l'aboutissement de cinq années de formation en ingénierie des systèmes embar-
qués et informatique industrielle. C'est avec la gratitude la plus profonde que je trace ces lignes,
que j'exprime ma vive reconnaissance à tous ceux qui m'ont épaulé dans tous les moments de
mon projet. Son avènement vient pour couronner leurs eorts.
Les plus grandes leçons ne sont pas tirées d'un livre mais d'un enseignant. Je témoigne,
ainsi, ma sincère reconnaissance à mes professeurs et particulièrement mon encadrant pédago-
gique, Mr. BELKEBIR Hicham, pour avoir accepté de me superviser et de suivre les détails de
l'avancement de mon travail, ainsi que son aide et ses conseils durant les diérentes étapes du
projet. Je remercie particulièrement Mr. MANSOURI Anass, coordinateur de la lière systèmes
embarqués et informatique industrielle pour ses conseils précieux, son dynamisme, sa patience,
son soutien continu et ses eorts considérables an de garantir la qualité de la formation consa-
crée à cette lière. Merci aux membres du jury pour l'honneur qu'ils me font en acceptant
d'examiner et de juger ce travail.
Nul ne peut nier que trouver un stage de n d'études n'est pas une chose aisée, c'est pour-
quoi je remercie en premier lieu ALTEN Maroc qui ore d'innombrables opportunités de ce
genre, et qui m'a bien accueilli durant ce stage. Acquérir une expérience professionnelle dans
une entreprise telle qu'ALTEN est non seulement un plaisir, mais par-dessus tout un réel abou-
tissement dans mon cursus universitaire.
Mes remerciements les plus sincères vont aussi à M. BOUHADDA Mohamed, le Directeur du
département Systèmes d'Information et Systèmes Embarqués (SISE), qui a eu la bienveillance
de m'accueillir dans son équipe.
Il m'est aussi agréable d'exprimer ma gratitude envers mon tuteur industriel; Mr. LAMRA-
BET Abdellah, chef de projet au sein d'Alten Delivery Center (ADC), pour son encadrement,
son précieux suivi, ses remarques pertinentes, ses recommandations fortes enrichissantes et son
partage continu de son incontournable expérience dont j'ai bénécié tout au long de ce stage.
Puisse ce travail être à la hauteur de ses attentes.
Enn, mes remerciements les plus profonds vont vers mes parents, mes frères et soeurs qui
m'ont toujours soutenu et encouragé à donner le meilleur de moi-même. Je leur dédie le fruit
de ce travail comme preuve de respect, de gratitude et de reconnaissance.
2
RÉSUMÉ
Les études montrent que l'une des causes fréquentes des traumatismes mortels lors d'un
accident de la circulation est le cas classique du conducteur distrait. Ce dernier ne réagit pas
au changement brusque du véhicule qui le précède, et le percute à l'arrière. De tels accidents
peuvent occasionner des blessures aux occupants des deux voitures.
Confort, sécurité et assistance au conducteur, constituent donc les points focaux de l'indus-
trie automobile actuelle. An d'honorer son engagement à enrichir l'industrie automobile par
des solutions innovantes y aérant, ADC Maroc met au point son laboratoire de développement
interne an de réaliser des projets dans le domaine automobile, dont le présent est le projet
DeinAuge qui est en liaison avec les systèmes d'aide à la conduite automobile (Advanced Driver
Assistance Systems (ADAS)).
DeinAuge est un boîtier électronique à plusieurs fonctionnalités tant sur le plan visuel :
Détection des lignes de la voie, Détection et reconnaissance des panneaux de signalisation,
personnes, animaux, obstacles, véhicules, etc. Ainsi que sur le plan mécanique : Freinage au-
tomatique d'urgence et régulateur de vitesse adaptatif. Pour assurer le bon fonctionnement du
système et le rendre le plus sûr possible, l'équipe de développement applique et implémente
quelques pratiques dictées par le cadre de la norme ISO 26262.
DeinAuge, doté d'une intelligence articielle et d'une capacité d'interaction avec le conduc-
teur, est monté sur une carte de développement Jetson TX2, lui orant une puissance de calcul
adaptée pour le travail en temps réel. Ainsi, faire une étude comparative de l'environnement
technique du système, choisir son niveau de sécurité et suivre tout le cycle en V pour ses dif-
férentes fonctionnalités, sont les tâches qui m'ont été désignées dans la réalisation de ce projet
et qui sont discutées plus en détails dans ce présent rapport.
Mots clés : DeinAuge, ADAS, Vision par ordinateur, ISO 26262, Intelligence Articielle,
Jetson, Python, Cycle en V.
3
ABSTRACT
Studies show that one of the common causes of fatal injuries in trac accidents is the classic
case of the distracted driver. The driver does not react to the sudden change of the vehicle in
front of it, and hits it in the back. Such accidents can cause injuries to the occupants of both cars.
Comfort, safety and driver assistance are the focal points of the current automotive industry.
In order to honor its commitment to enrich the automotive industry with innovative solutions,
ADC Morocco is developing its internal development laboratory to carry out projects in the
automotive sector. The present project is DeinAuge which is linked to the Advanced Driver
Assistance Systems (ADAS).
DeinAuge oers several features both visually : Lane lines detection, Detection and recog-
nition of trac signs, persons, animals, obstacles, vehicles, etc, and mechanically : Automatic
Emergency Braking and Adaptive Cruise Control. In order to ensure the proper functioning of
the system and make it as safe as possible, the development team applies and implements some
practices dictated by the ISO 26262 standard.
DeinAuge, equipped with articial intelligence and a driver interaction capability, is moun-
ted on a Jetson TX2 development board, oering it computing power suitable for working in
real time. Thus, make a comparative study of the technical environment of the system, choose
its level of safety and follow the whole V-Model for its various functionalities, are the tasks that
have been assigned to me in this project and which are discussed in more details in this report.
Keywords : DeinAuge, ADAS, Computer vision, ISO 26262, Articial Intelligence, Jetson,
Python, V-Model.
4
5
TABLE DES MATIÈRES
REMERCIEMENTS 2
RÉSUMÉ 3
ABSTRACT 4
RÉSUMÉ(Arabe) 5
TABLE DES MATIÈRES 6
LISTE DES TABLEAUX 8
TABLE DES FIGURES 9
LISTE DES ACRONYMES 12
INTRODUCTION GÉNÉRALE 13
1 CADRE GÉNÉRAL DU PROJET 14
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Organisme d'accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Présentation générale du groupe ALTEN . . . . . . . . . . . . . 15
1.2.2 Présentation d'Alten Delivery Center Maroc . . . . . . . . . . . 15
1.3 Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.1 Problématique et objectif . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.2 Description du système DeinAuge . . . . . . . . . . . . . . . . . . 17
1.3.3 Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.4 Planication du projet . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 MÉTHODOLOGIE DE TRAVAIL ET ENVIRONNEMENT TECHNIQUE
DU PROJET 22
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Méthodologie de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1 Le cycle de développement en V . . . . . . . . . . . . . . . . . . . 23
2.2.2 La méthode Agile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.3 Gestion de versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Environnement technique du projet . . . . . . . . . . . . . . . . . . . . . 29
2.3.1 Environnement matériel . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.1.1 Carte électronique . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.1.2 Caméra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.1.3 Lidar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6
2.3.1.4 Capteur ultrason . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.2 Environnement logiciel . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2.1 Langage de programmation . . . . . . . . . . . . . . . . . . . . 33
2.3.2.2 Environnement logiciel des tests unitaires . . . . . . . . . . . . 33
2.3.2.3 Environnement logiciel des tests système . . . . . . . . . . . . 34
2.3.3 Choix du niveau de criticité du projet . . . . . . . . . . . . . . . . 35
2.3.3.1 Norme ISO 26262 . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.3.2 Les niveaux d'intégrité ASIL . . . . . . . . . . . . . . . . . . . 36
2.3.3.3 Niveau ASIL du projet . . . . . . . . . . . . . . . . . . . . . . 37
2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 RÉALISATION DU SYSTÈME DeinAuge 39
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2 Flux descendant du cycle en V . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.1 Ingénierie des exigences . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.1.1 Élicitation des exigences . . . . . . . . . . . . . . . . . . . . . 40
3.2.1.2 Spécication des exigences . . . . . . . . . . . . . . . . . . . . 40
3.2.1.3 Vérication et validation des exigences . . . . . . . . . . . . . 43
3.2.1.4 Gestion des exigences . . . . . . . . . . . . . . . . . . . . . . . 43
3.2.2 Architecture matérielle du système . . . . . . . . . . . . . . . . . . 43
3.2.3 Conception du système . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.3.1 Diagramme de cas d'utilisation du système . . . . . . . . . . . 45
3.2.3.2 Diagramme d'activité . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.4 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.4.1 Développement de la fonction LD . . . . . . . . . . . . . . . . 48
3.2.4.2 Développement de la fonction OD : . . . . . . . . . . . . . . . 50
3.3 Flux ascendant du cycle en V . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.1 Test unitaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.1.1 Création des spécications de test . . . . . . . . . . . . . . . . 57
3.3.1.2 Développement des cas de tests . . . . . . . . . . . . . . . . . . 59
3.3.1.3 Résultats des tests unitaires . . . . . . . . . . . . . . . . . . . 60
3.3.2 Test système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.2.1 Création des spécications de test . . . . . . . . . . . . . . . . 64
3.3.2.2 Création des scénarios des vidéos de test . . . . . . . . . . . . 64
3.3.2.3 Génération des vidéos de test . . . . . . . . . . . . . . . . . . . 65
3.3.2.4 Résultats du test système . . . . . . . . . . . . . . . . . . . . 66
3.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
CONCLUSION ET PERSPECTIVES 69
RÉFÉRENCES 71
A DIFFÉRENCE ENTRE LIDAR 1D, 2D ET 3D 72
B LES CARACTÉRISTIQUES D'UNE BONNE EXIGENCE 73
C LA VISION PAR ORDINATEUR 74
D RÉSEAUX DE NEURONES CONVOLUTIONNELS 75
E RÉSULTATS DES TESTS DE LA FONCTION LD 77
7
LISTE DES TABLEAUX
8
TABLE DES FIGURES
9
3.19 Commande d'exécution des tests unitaires . . . . . . . . . . . . . . . . . . . . . 61
3.20 Extrait du chier de détection des bugs des tests unitaires . . . . . . . . . . . . 61
3.21 Commande de génération du rapport de test unitaire . . . . . . . . . . . . . . . 61
3.22 Extrait 1 du rapport des tests unitaires . . . . . . . . . . . . . . . . . . . . . . . 62
3.23 Extrait 2 du rapport des tests unitaires . . . . . . . . . . . . . . . . . . . . . . . 62
3.24 Commande 1 de génération du chier de couverture du code . . . . . . . . . . . 63
3.25 Commande 2 de génération du chier de couverture du code . . . . . . . . . . . 63
3.26 Fichier de couverture du code de la fonction TSR . . . . . . . . . . . . . . . . . 63
3.27 Extrait du document des spécications de tests niveau système de la fonction TSR . . 64
3.28 Extrait du document des scénarios des vidéos de test de la fonction TSR . . . . . . . 65
3.29 Exemple de l'environnement d'une vidéo sous Unity . . . . . . . . . . . . . . . . 66
3.30 Exemple de l'environnement d'une vidéo sous CARLA . . . . . . . . . . . . . . 66
3.31 Rapport de test système de la fonction TSR . . . . . . . . . . . . . . . . . . . . 67
3.32 Résultat du test d'une vidéo sous Unity . . . . . . . . . . . . . . . . . . . . . . . 68
3.33 Résultat du test d'une vidéo sous CARLA . . . . . . . . . . . . . . . . . . . . . 68
10
LISTE DES ACRONYMES
12
INTRODUCTION GÉNÉRALE
Le secteur automobile est en pleine évolution et ne cesse de croître. Les systèmes mécaniques
dans l'automobile ont été largement remplacés par des systèmes électro-mécaniques. Aujour-
d'hui, l'industrie automobile intègre des systèmes embarqués partout, partant des essuie-glaces
jusqu'aux airbags et systèmes ADAS. Ces technologies s'articulent autour d'un réseau de com-
munication, sur lequel repose une architecture véhicule comportant une multitude d'unités de
commande électronique (Electronic Control Unit (ECU)) gérant les fonctions principales du
véhicule.
Selon les statistiques, 80% des accidents de la route sont à cause du facteur humain. En
eet, le non-respect de la limitation de vitesse, la fatigue, l'utilisation du téléphone, la somno-
lence et d'autres facteurs peuvent entrainer des dégâts matériels et humaines très graves. En
2017, les accidents ont coûté à la société marocaine près de 20 milliards de dirhams. Selon les
estimations de la Banque mondiale, les pertes liées aux accidents de la circulation représentent
près de 2% du PIB (Produit Intérieur Brut) marocain [1]. Sans oublier que le Maroc enregistre
chaque année presque 4000 morts sur les routes.
Dans ce contexte, les systèmes d'aide à la conduite ont pour objectif pas seulement de pro-
téger les passagers en cas d'accident, mais surtout de prévenir ces derniers et de les empêcher
de se produire. C'est pourquoi les systèmes d'aide à la conduite sont toujours en alerte et
contrôlent en permanence l'environnement dans lequel se trouve la voiture, grâce à des données
produites par diérents types de capteurs. Ces informations permettent à la voiture de réagir
lorsqu'un obstacle se présente sur la route ou lors d'un mouvement soudain des autres véhicules.
La voiture est alors capable de déclencher les assistances de conduite adéquates, d'alerter le
conducteur d'une situation dangereuse ou de minimiser le risque ou les conséquences en cas
d'accident.
Au sein de la société ADC Maroc, le but de ce présent projet est la réalisation d'un prototype
de système d'aide à la conduite pour le compte de la même société. Ce rapport de projet de n
d'études décrit l'essentiel du travail réalisé dans le cadre d'une expérience à la fois pédagogique
et professionnelle. En eet, il est structuré en quatre chapitres: Le premier chapitre présente
l'organisme d'accueil, ADC Maroc, discute le contexte du projet en présentant la problématique
traitée, les objectifs visés, ainsi que la planication du projet. Le deuxième chapitre présente la
méthodologie de travail adoptée tout au long du projet, ainsi son environnement technique. Et
nalement, le dernier chapitre s'intéresse à la mise en oeuvre du système et illustre les étapes
de sa réalisation.
13
CHAPITRE 1
CADRE GÉNÉRAL DU PROJET
1.1 Introduction
Ce travail a été éectué au sein d'ALTEN Maroc dans le cadre d'un stage de n d'études.
Ce chapitre introductif met le point sur le cadre général du projet et son environnement. La
première partie introduit l'organisme d'accueil, ses domaines d'activités ainsi que sa structure
interne. La deuxième partie met l'accent sur le contexte du projet : Les enjeux et objectifs du
projet ainsi que le cahier des charges régulant l'accomplissement de ce travail.
14
1.2 Organisme d'accueil
15
Nom de la société ALTEN MAROC
Tout système allégeant et facilitant la tâche du conducteur peut être considéré comme une
aide à la conduite automobile. Au stade ultime de l'évolution des aides à la conduite, nous
arrivons au véhicule autonome.
16
ADC Maroc propose chaque année un projet interne lié à l'activité de l'automobile an de
donner des opportunités aux étudiants de pratiquer leurs acquis académiques dans un monde
professionnel en respectant des standards. Dans ce cadre, et vu l'importance des ADAS à l'heure
actuelle, vient ce projet de n d'études qui a pour but de développer un prototype de système
ADAS qui englobe plusieurs fonctionnalités diversiées. L'objectif de ce système est d'assister le
conducteur, assurer sa sécurité et rendre son véhicule intelligent. Le déroulement de ce projet a
été au sein du département SISE dans lequel j'ai eu le privilège d'exercer les diérentes activités
et les tâches professionnelles conées.
Détection des lignes de voie (Lane Detection (LD)): Cette fonction est conçue en
utilisant une caméra qui est placée derrière le pare-brise du véhicule pour capturer les images
de la route, ainsi les lignes sur la route sont interprétées et les voies sont identiées. Elle permet
donc de guider le conducteur en lui fournissant des avertissements pour adapter sa position une
fois le véhicule quitte involontairement une voie. La détection des marqueurs de voie est l'étape
initiale des deux sous-systèmes suivants :
• L'aide au maintien de voie (Lane Keeping Assist (LKA)): L'objectif principal
de cette fonctionnalité est d'avertir le conducteur lorsque son véhicule franchit un mar-
quage de ligne de voie sans que cette action n'ait fait l'objet d'une communication visuelle
(activation des clignotants) de la part de l'usager. Les capteurs intégrés au véhicule consi-
déreront alors la modication de la direction suivie par le véhicule comme une inattention
ou un manque de vigilance. Le système envoie donc une alerte à l'intention de l'usager
an de corriger sa direction ce qui permet de garder toujours la voiture centrée dans sa
voie.
• Système d'avertissement de changement de voie (Lane Changing Warning
(LCW)): Ce système combine entre plusieurs paramètres qui sont pris en compte an
de décider de la possibilité de changement de voie. Il permet de créer des conditions de
conduite plus sûres en avertissant le conducteur qu'un changement de voie peut s'avérer
dangereux. L'avertissement laisse susamment de temps au conducteur pour pouvoir
interrompre le changement de voie.
Reconnaissance des panneaux de signalisation (Trac Sign Recognition (TSR)):
Les panneaux de signalisation contiennent des informations utiles qui pourraient être ignorées
par les conducteurs pour diérentes raisons. Ces conducteurs sont également susceptibles d'ac-
corder moins d'attention aux signes de circulation lors de la conduite dans certaines conditions
météorologiques. Par conséquent, un système de reconnaissance des panneaux de signalisation
devient indispensable pour aider à réduire le nombre de morts sur les routes.
L'objectif de cette fonction est donc de lire et de reconnaître les diérents panneaux sur la
route. Lorsque le panneau est reconnu par le système, celui-ci lance l'achage d'un symbole
le représentant sur un écran. Cette représentation graphique restera achée jusqu'à ce que
le conducteur entre dans une nouvelle zone. En plus de l'achage, cette fonction permet d'in-
former le conducteur en lui fournissant des alertes en cas des panneaux de signalisation critiques.
17
Détection et suivi des objets (Object Detection - Object Tracking (OD - OT)):
Il s'agit de la tâche de détecter des instances d'objets d'une certaine classe dans une image
et prédire son mouvement. Elle représente la fonction la plus importante de notre système vu
son rôle important dans la surveillance du trac, ainsi elle regroupe plusieurs fonctionnalités
comme : la détection des véhicules, des piétons, des animaux, etc. Elle permet aussi d'estimer
la distance entre le véhicule ego et l'objet détecté, ainsi estimer la direction de cet objet.
Cette fonction représente un domaine de recherche actif dans de nombreux pays développés
pour améliorer la sécurité routière, vu qu'elle représente la base de nombreuses applications
importantes et essentielles dans les nouveaux véhicules. Le dé principal de la détection des
objets est le développement d'un système able qui répond à plusieurs contraintes par exemple :
les vêtements diérents des piétons, leurs changements de taille et de forme, les conditions rou-
tières et environnementales variables. C'est ce qui rend cette fonction primordiale permettant
d'augmenter la robustesse de notre système [3].
Le régulateur de vitesse adaptatif est équipé d'un RADAR (RAdio Detection And Ranging)
ou d'un laser logé soit dans la calandre de la voiture, soit sur le haut du pare-brise. Lorsque
l'on enclenche le régulateur de vitesse, le radar détecte les autres véhicules dans la circulation
et permet d'adapter la vitesse de la voiture en permanence, de façon à rester à une distance
déterminée de la voiture précédente.
Après que nous avions choisi les fonctions que nous souhaitons intégrer dans notre système, la
tâche qui m'a été conée est de :
Faire une étude comparative du matériel et logiciel que nous devrons utiliser pour choisir
ce qui répond le mieux à nos besoins.
Choisir un niveau de sécurité de notre système.
Suivre le ux descendant du cycle en V pour la fonction de "Détection des lignes de voie".
18
Passer au ux ascendant du cycle en V pour la fonction de "Reconnaissance des panneaux
de signalisation".
Suivre le cycle en V pour la fonction de "Détection et suivi des objets".
Toutes ces tâches ont été faites suivant une certaine partition, entre les membres du projet, qui
sera décrite dans le prochain chapitre.
Planier est le meilleur moyen de gagner beaucoup de temps, contrôler l'avancement des dié-
rentes étapes lors de l'exécution, ainsi se focaliser sur les tâches les plus importantes. En eet,
le manque de préparation représente l'une des principales raisons qui fait que certains projets
échouent, prennent du retard et dépassent la date limite. Ainsi, le fait de planier ses tâches à
l'avance constitue un élément de maîtrise essentiel dans l'organisation du temps. Pour s'y faire,
nous avons adopté le diagramme de Gantt.
Nos encadrants de stage ont mis en place un diagramme de Gantt préliminaire qui trace
toutes les tâches qui nous sont conées et qui s'étale sur la période du stage. Il se présente
comme-suit :
De ce fait, nous avons établi un nouveau plan qui répond aux nouvelles conditions tout en
19
maximisant le rendu de l'équipe. La liste des tâches suivante représente la répartition des dif-
férentes tâches et les dates de début et de n respectives de leurs réalisations:
20
1.4 Conclusion
21
CHAPITRE 2
MÉTHODOLOGIE DE TRAVAIL ET
ENVIRONNEMENT TECHNIQUE DU
PROJET
2.1 Introduction
An d'assurer le bon suivi des diérentes étapes du projet, il est nécessaire d'adopter une
méthode de travail convenable. Ainsi, la première partie de ce chapitre vise à exposer l'ensemble
des méthodes et outils de gestion qui ont été mis en place an d'assurer le bon déroulement du
projet.
22
2.2 Méthodologie de travail
Il existe diérents modèles de cycle de vie dénis et conçus qui sont suivis pendant le pro-
cessus de développement logiciel. Chaque modèle de processus suit une série d'étapes uniques
à son type pour assurer le succès dans le processus de développement logiciel. Voici les modèles
SDLC les plus populaires suivis dans l'industrie :
Cycle en Cascade (Waterfall Model).
Cycle itératif (Iterative Model).
Cycle spiral (Spiral Model).
Cycle en V (V-Model).
23
Comme le montre la gure ci-dessus, le cycle en V se caractérise par un axe horizontal représen-
tant le temps et par un axe vertical représentant le niveau d'intégration du système. Le cycle
se décompose comme suit :
La branche descendante du cycle en V, appelée la phase de dénition et construction
du système. Elle représente la macro-phase de conception et de codage où le système
est graduellement décomposé en ses divers sous-systèmes et modules jusqu'au niveau
composant.
Le sommet du cycle en V représentant la phase de mise en oeuvre et implémentation du
code.
La branche ascendante du cycle en V, appelée la phase de Vérication & Validation (V
V) du système, où les composants une fois réalisés sont intégrés dans des ensembles et des
sous-systèmes graduellement plus grands, jusqu'à ce que le système complet soit construit.
Cette branche vise à valider le produit jusqu'à son acceptation par le client. Elle comprend
principalement une série de tests jusqu'à pouvoir valider que le produit répond au besoin
et aux exigences.
Les phases du cycle en V, comme présentées sur la gure 2.1, sont les suivantes:
• Exigences de l'utilisateur (User requirements): il s'agit de la première étape qui
consiste à créer le cahier des charges, contenant les diérentes exigences demandées par
le client, qui dénit généralement le besoin et les attentes par rapport au projet.
• Exigences du système (System requirements): les exigences du système sont re-
cueillies en analysant les besoins de l'utilisateur. Cette phase détermine ce que le système
idéalement devrait accomplir, mais ne spécie pas comment le logiciel sera conçu et sera
maintenu.
• Conception d'architecture (Architecture design): c'est la phase dans laquelle les
ingénieurs systèmes étudient les besoins spéciques des utilisateurs, analysent et com-
prennent les tâches du système proposé. Si l'analyse montre que l'une des exigences n'est
pas réalisable, l'utilisateur est informé du problème, une solution est trouvée et partagée,
et le document d'exigences est modié en conséquence.
Dans cette phase, une architecture logicielle est conçue pour déterminer les composants
dans le logiciel et l'établissement des relations entre ces composants. La phase de concep-
tion matérielle et logicielle est souvent appelée conception ou architecture de haut niveau
(Top level design/architecture).
• Conception de module (Module design): appelée également conception ou architec-
ture de bas niveau (Low level design/architecture (LLD)). Le système conçu est divisé
en très petites unités, appelées modules, où l'implémentation détaillée de chacun d'eux
est spéciée. Elle peut être un début de code ou une documentation qui dénit chaque
module.
• Implémentation (Implementation): c'est dans cette phase que nous avons fait le
codage et l'implémentation des modules conçus.
• Tests unitaires (Unit Testing): c'est une méthode par laquelle des unités individuelles
de code source sont testés pour déterminer si elles sont utilisables. L'unité est la plus petite
partie testable, généralement une fonction ou une procédure. Les tests unitaires sont créés
par des programmeurs et sont généralement réalisés par des tests de type "white box"
an de tester la logique interne du code et chaque branche possible dans la fonction pour
assurer la qualité du logiciel développé. C'est une étape où l'on teste que chaque module
développé durant la phase du LLD respecte le cahier des charges.
• Intégration logicielle et test (Software integration and testing): cette étape vise
à tester le comportement de l'application en intégrant progressivement toutes les briques
du logiciel. Les modules sont testés ensemble pour détecter les erreurs dans les interfaces
et l'interaction entre les composants intégrés.
24
• Tests système ou de validation (System Testing): sont des tests eectués sur un
système complet et intégré et sont conçus pour évaluer la conformité du système aux
exigences spéciées. Le test du système est un test de "black box" et ne nécessite aucune
connaissance de la conception interne du code ou de sa logique.
• Tests d'acceptation par l'utilisateur (User acceptance Testing): c'est la phase
utilisée par le client pour déterminer s'il accepte le système. Ces tests permettent de tester
le logiciel dans le monde réel des utilisateurs.
Dans ce projet, nous avons travaillé sur tout le ux descendant jusqu'à l'implémentation, ainsi
que les phases de test unitaire et test système dans le ux ascendant.
La méthode Agile recommande de se xer des objectifs à court terme. Le projet est donc
divisé en plusieurs sous-projets. Une fois l'objectif atteint, nous passons au suivant jusqu'à l'ac-
complissement de l'objectif nal. Cette approche est plus exible et laisse la place aux imprévus
et aux changements puisqu'il est impossible de tout prévoir et de tout anticiper.
Cette méthode repose sur une relation privilégiée entre le client et l'équipe projet. La sa-
tisfaction du client étant la priorité, l'implication totale de l'équipe et sa réactivité face aux
changements du client comme aux imprévus sont nécessaires. Le dialogue avec le client est
privilégié, c'est lui qui valide chaque étape du projet. L'évolution de ses besoins est prise en
compte et les ajustements sont eectués en temps réel an de répondre à ses attentes.
Le principe de base consiste à proposer une version minimale du logiciel puis à intégrer
des fonctionnalités supplémentaires à cette base, par processus itératif qui consiste à découper
le projet en plusieurs étapes d'une durée d'une à quatre semaines (deux semaines dans notre
cas ce qui fait 10 jours); ce sont les itérations (Sprints). Au cours d'une itération, une version
minimale du produit attendu est développée puis soumise, dans sa version intermédiaire, au
client pour validation. Les fonctionnalités sont ainsi intégrées au fur et à mesure du cycle de vie
sur un mode incrémental, le système s'enrichissant progressivement pour atteindre les niveaux
de satisfaction et de qualité requis.
25
Avec l'approche Agile, rien n'est gé. L'équipe projet doit être capable de se remettre sans
cesse en cause et de chercher continuellement à évoluer. Dans notre cas, le client est à la fois
les encadrants qui nous ont choisi le thème du projet, ainsi que l'équipe projet qui a déni elle
même les exigences.
Pour la bonne implémentation de la méthode agile, il s'est avéré nécessaire de répartir notre
équipe en deux groupes, comme illustré dans le gure ci-dessous:
Durant le projet, nous avons déterminé un certain nombre de réunions dans la perspective
d'organiser le travail, assurer une communication continue entre tous les membres, et faire le
point sur l'avancement du projet:
• Sprint Planning meeting: nous organisons au début de chaque sprint une réunion de
planication, une sorte de négociation entre les Product Owners(PO)/les encadrants et
l'équipe technique. Durant cette réunion, les objectifs, tâches et travaux du sprint actuel
sont dénis.
• Stand up meeting: cette réunion est réalisée tous les jours à horaire régulier. Lors
de ce bref point quotidien, les membres d'équipe relatent les faits précédents, partagent
les actions actuelles et expriment les obstacles et dicultés rencontrés. Les product ow-
ners/encadrants ne sont pas présents lors de ce point.
• Sprint Retrospective meeting: durant cette réunion, qui vient à la n du sprint,
l'équipe prend le recul sur le sprint terminé et le processus de travail. Elle s'autoévalue
sur ce qui a bien fonctionné, ce qui doit se faire autrement et les axes d'amélioration.
• Open issues meeting: souvent au cours du sprint, il est tout à fait probable que l'on
rencontre un problème lié à une ou plusieurs tâches liées aux objectifs du sprint. Pour
cela, une réunion est organisée avec les Product Owners pour discuter ces problèmes et
essayer de trouver une solution dans les plus brefs délais.
26
• Alignment meeting: c'est une réunion qui se tient entre les function owners et les
product owners dans le but d'aligner les points de vue et de s'assurer que le travail
eectué par léquipe est en conformité avec les objectifs du sprint et qu'il n'y ait pas de
déviement ou divergence.
Lorsque l'on travaille seul sur un projet sans utiliser de système de gestion de versions,
le processus de travail (Workow) consiste généralement à créer un répertoire de travail, puis
modier graduellement les données dans ce répertoire en faisant des modications successives,
jusqu'à obtenir une version nale (Release).
Cependant, lorsque l'on travaille à plusieurs sur le même projet, comme est le cas pour notre
système DeinAuge, ce workow atteint ses limites, donc un logiciel de gestion de versions de-
vient obligatoire car il permet de stocker un ensemble de chiers en conservant la chronologie
de toutes les modications qui ont été eectuées dessus.
Chez Alten, nous avons eu une petite formation an d'utiliser SVN (ou Subversion), mais
vu les conditions du télétravail, nous étions obligés de chercher une alternative puisque SVN
nécessite la connexion avec un serveur commun central.
SVN est un logiciel de gestion de versions qui fonctionne sur le mode client-serveur avec [10] :
Un serveur informatique centralisé et unique où se situent :
- Les chiers constituant la référence (le "dépôt" ou "référentiel", ou "repository" en
anglais).
- Un logiciel serveur Subversion tournant en arrière-plan.
Des postes clients sur lesquels se trouvent :
- Les chiers recopiés depuis le serveur, éventuellement modiés localement.
- Un logiciel client permettant la synchronisation entre chaque client et le serveur de
référence.
27
Ainsi, l'équipe projet a choisi d'adopter GIT qui est aussi un système de contrôle et gestion de
versions mais qui est décentralisé. Cela veut dire qu'il fonctionne bien même pour les membres
du même projet qui ne sont pas toujours connectés à un serveur commun vu qu'il est dispo-
nible hors ligne; ce qui répond parfaitement à notre besoin. Nous avons également choisi [11]
Bitbucket qui est un service web d'hébergement et de gestion de développement logiciel qui
utilise le logiciel de gestion de versions GIT. Bitbucket nous permet de créer un nombre illimité
de dépôts privés mais qui sont accessibles par cinq utilisateurs au maximum, chaque équipe
(Alpha et Beta) devrait donc créer son propre dépôt avec les deux encadrants.
La méthode de travail que nous avons suivi consiste à créer un dépôt sur Bitbucket, et
chaque membre va le cloner sur son système local. À chaque modication en local, la personne
devrait tout d'abord faire un PULL qui permet de mettre à jour son dossier en local par les
contributions apportées par les autres membres. Ensuite, la personne devrait faire un COMMIT
et PUSH dans le but d'enregistrer les modications apportées et les publier dans le dépôt sur
Bitbucket, représenté sur la gure 2.5 ci-dessous:
D'autre part, nous avons également créé un dossier partagé entre les encadrants et toute
l'équipe projet dans le OneDrive de l'Oce 365. Microsoft OneDrive est un ensemble de services
en ligne : stockage et applications Word, Excel, PowerPoint et OneNote, dont les fonctionnalités
sont toutefois réduites par rapport aux logiciels installés sur un ordinateur. Ce service est une
manifestation du concept de cloud computing qui permet l'accès à des services informatiques
via Internet (le cloud) à partir d'un fournisseur [12].
C'est dans ce dossier partagé où les encadrants mettaient toutes les livraisons (Releases) du
projet que nous livrons, il est présenté comme suit:
28
Figure 2.6 Dossier partagé pour les livrables du projet
Après l'expression du besoin par le client d'un prototype de système ADAS, et après que
nous avons élaboré le cahier des charges en choisissant les fonctions que nous souhaitons intégrer
dans ce système. La première tâche qui nous a été conée est de faire une étude comparative
(benchmarking) des diérents matériels et logiciels dont nous aurons besoin pour le développe-
ment et l'implémentation de notre système.
Le terme anglais "benchmarking" (ou benchmarker) désigne le fait de dresser une liste de
produits ou de services, de dénir des critères d'évaluation de la performance et de réaliser
l'étude comparative.
Un benchmark peut servir à une société an de dresser un panorama de l'existant avant de
lancer un nouveau produit, an de lui déterminer une valeur ajoutée sur laquelle la société
pourra communiquer à son lancement.
Mais un benchmark est également utile pour le grand public, an d'aider au choix d'un pro-
duit. Ce point représente exactement le cas dans ce projet, le travail réalisé dans cette étude
comparative est représenté sous les deux volets matériel et logiciel.
29
Figure 2.7 Les cartes électroniques proposées
L'objectif est d'essayer de prendre la meilleure décision et la plus convenable pour nos
besoins. Ainsi, nous avons déni un ensemble de critères de choix avec des coecients qui
varient selon la priorité. Nous pouvons avoir des critères avec des coecients négatifs comme
le cas du coût par exemple; plus le coût est élevé plus la note du choix de la carte va diminuer.
Ensuite sur une échelle de cinq étoiles (de Low jusqu'à Extremely High), nous avons attribué
une note pour chaque carte selon chaque critère, et nalement le choix de la carte repose sur
la somme des notes pondérée selon les critères de choix.
Consommation
×4 ×2 ×-3 ×1 ×-1 ×2
NVIDIA Jetson TX2 ore un maximum de vitesse et d'ecacité énergétique dans un module
embarqué de calcul d'Intelligence Articielle (IA). Ce supercalculateur intégré sur un module
fournit des capacités de calcul IA à hautes performances à la périphérie des réseaux. Équipé
d'un processur graphique (Graphics Processing Unit (GPU)) NVIDIA Pascal, de 8 Go de mé-
moire dédiée, d'une bande passante de 59,7 Gb/s et d'une gamme variée d'interfaces matérielles
standardisées, Jetson TX2 constitue la solution idéale pour une grande variété de produits et
de congurations [13].
2.3.1.2 Caméra
Une caméra est un appareil de prise de vues destiné à enregistrer ou à transmettre des
images photographiques successives. Le but est de restituer l'impression de mouvement pour
diérentes applications dans plusieurs domaines.
Dans notre cas, la caméra représente le point d'entrée de toutes les fonctions de notre sys-
tème. De la même manière, nous avons choisi une liste de caméras avec des caractéristiques
30
variées qui pourront supporter nos fonctions. Ces caméras sont représentées sur la gure 2.8
suivante:
Résolution
Caméra Interface ×1 ×1 Qualité ×2 FPS ×1 Coût ×-1 Total
2.3.1.3 Lidar
Pour notre système, la fonction ACC nécessite soit un lidar (Light Detection And Ranging)
qui va permettre de calculer la distance entre le véhicule ego et la cible, soit un radar qui va
permettre de calculer sa vitesse. En cherchant les diérentes solutions, nous étions limités par le
budget vu que les diérents radars et lidars que nous avons trouvé étaient à un prix très élevé.
Heureusement, nous avons trouvé des lidars 2D (voir Annexe A) à des prix plus raisonnables
et qui sont convenables pour notre prototype. Les deux lidars proposés sont représentés sur la
gure 2.9 suivante:
31
De la même manière, nous avons déni un autre ensemble de critères de choix spéciques
aux lidars proposés avec des coecients qui varient selon la priorité de chacun. Ensuite sur une
échelle de trois étoiles (de Low jusqu'à High), nous avons attribué une note pour chaque lidar
selon ses performances, comme le montre le tableau suivant:
Donc, en prenant en compte le critère de coût, deux capteurs ultrasons sont susants pour
réaliser le prototype de la fonctionnalité de détection d'angle mort. Le système sonar comprend
deux émetteurs d'ondes sonores placés dans le pare-choc arrière du véhicule, un de chaque côté.
Ils émettent des ondes sonores à intervalles réguliers, qui se répercutent sur les objets présents
dans la zone à surveiller.
De la même manière, nous avons comparé entre les deux capteurs ultrasons sur la gure 2.10
et le tableau 2.4 suivants:
HC-SR04 * * *** 5
Glove - Ultrasonic Distance Sensor * * *** 5
32
En se référant au tableau 2.5, nous constatons que les deux capteurs présentent les mêmes
critères. Nous avons donc choisi le HC-SR04 car il présente un mètre de plus de couverture.
Le tableau 2.6 suivant est un récapitulatif technique et nancier de la charge du projet. Nous
avons deux coûts, l'un représentant le montant de réalisation du produit et l'autre le montant
de la réalisation et du stock en cas de défaut d'un matériel.
utile souhaité en DH
- Le module unittest de python qui est un framework des tests unitaires, il gère l'automati-
sation des tests, le partage de code pour la mise en place et la nalisation des tests, l'agrégation
de tests en collections, et l'indépendance des tests par rapport au framework utilisé. Il nous a
33
permis de rédiger et exécuter les tests unitaires, dont je présenterai les détails dans le prochain
chapitre.
Donc pour compléter ceci, nous étions amenés à faire des recherches concernant les outils de
simulation virtuels an de créer nos scénarios de tests et générer les videos de tests.
Après plusieurs recherches, vu la non disponibilité de plusieurs simulateurs open source, nous
avons trouvé les solutions suivantes:
- Carla Simulator : c'est un simulateur de conduite autonome open source qui a été
développé pour soutenir le développement, la formation et la validation des systèmes de conduite
autonomes.
34
scénarios de tests que de tester le software dans la plateforme CARLA, ce qui nous donne une
autre alternative pour créer les scénarios, c'est l'utilisation des moteurs des jeux vidéos.
- Unity : c'est un moteur de jeu multiplateforme open source développé par Unity Techno-
logies, c'est l'un des moteurs les plus faciles à manipuler ainsi que les diverses fonctionnalités
qui nous orent pour créer nos scénarios rapidement.
Par contre, il présente quelques limitations par rapport à quelques cas de tests, donc nous
avons également utilisé CARLA mais juste pour la génération des vidéos de tests que nous ne
pouvons pas faire sous Unity (Plus de détails dans la partie du test dans le prochain chapitre).
Depuis sa sortie en 2011, la norme ISO 26262 est devenue le référentiel normatif utilisé par
la plupart des industriels de l'automobile dans le cadre de la sûreté de fonctionnement des
systèmes E/E incorporés au sein des véhicules routiers.
La norme se compose de 10 parties comme présenté sur la gure 2.13:
1. Vocabulaire.
2. Gestion de la sûreté de fonctionnement.
3. Phase de projet.
35
4. Développement du produit au niveau du système.
5. Développement du produit au niveau du matèriel (électronique).
6. Développement du produit au niveau du logiciel.
7. Production et utilisation.
8. Processus d'appui.
9. Analyses liées aux niveaux d'intégrité de sûreté automobile et à la sûreté de fonctionne-
ment.
10. Lignes directives relatives à l'ISO 26262.
La dénition des niveaux d'ASIL est qualitative et dénie par trois métriques devant être
appliquées à toute situation dangereuse détectée en phase d'analyse des risques :
• Sévérité: dénit la gravité ou l'intensité des dommages ou des conséquences pour la
vie des personnes (passagers et usagers de la route) et des biens causés par la violation
des objectifs de sécurité. L'ordre de sévérité est : S0 pour aucune blessure, S1 pour les
blessures légères, S2 pour les blessures graves et mettant la vie en danger, et S3 pour les
blessures mortelles avec survie incertaine ou décès.
• Exposition: c'est la fréquence à laquelle le véhicule se trouve dans une situation dan-
gereuse ou risquée qui peut causer des dommages aux personnes et aux biens. Cinq ni-
veaux d'exposition sont attribués au composant automobile évalué, couvrant : E0 pour
36
une probabilité invraisemblable, E1 pour une très faible probabilité, E2 pour une faible
probabilité, E3 pour une probabilité moyenne, et E4 pour une probabilité élevée.
• Contrôlabilité: détermine dans quelle mesure le conducteur peut contrôler le véhicule
et agir de lui-même pour prévenir le danger ou la blessure. L'ordre de contrôlabilité est
déni comme suit : C0 pour contrôlable en général, C1 pour facile à contrôler, C2 pour
une contrôlabilité normale, et C3 pour dicilement contrôlable ou incontrôlable.
Les niveaux ASIL sont attribués sur la base du tableau d'allocation suivant déni par la norme :
C'est à dire que chaque événement dangereux est évalué en fonction de la gravité des bles-
sures possibles, ainsi que de la fréquence à laquelle le véhicule est exposé à ce danger, et enn
de la probabilité relative qu'un conducteur attentif puisse agir pour prévenir la blessure dûe au
danger. De cette manière, nous avons déni le niveau ASIL de notre système.
37
Table 2.9 Détermination du niveau ASIL du système DeinAuge
Ainsi, le niveau d'intégrité ASIL du système DeinAuge est donc un ASIL B. Le tableau suivant
est un exemple de l'allocation des niveaux ASIL pour la fonction LD :
2.4 Conclusion
Plusieurs méthodes et outils ont été adoptés an de bien avancer dans le projet. Ainsi, ce
chapitre décrit le cycle en V utile dans la gestion de projet et la méthode Agile qui organise les
réunions et échanges inter-équipes et avec les encadrants. Ensuite, une présentation de Git et
SVN qui sont chacun des systèmes de workow et de contrôle de version viables, mais pour des
raisons diérentes, ces raisons qui nous ont donné l'opportunité de découvrir les deux durant
ce stage.
38
CHAPITRE 3
RÉALISATION DU SYSTÈME DEINAUGE
3.1 Introduction
Ce dernier chapitre constitue le corps du rapport. Il met en évidence les diérentes étapes
suivis du cycle en V pour réaliser les fonctions du système. Il est divisé en deux parties.
La première partie décrit les tâches faites pour réaliser quelques étapes du ux descendant
du cycle en V de tout le système ainsi réaliser quelques étapes de ce même ux pour les deux
fonctions "Lane Detection" et "Object Detection".
La deuxième partie présente les tâches faites pour réaliser quelques étapes du ux ascendant
du cycle en V de la fonction "Trac Sign Recognition".
39
3.2 Flux descendant du cycle en V
Une exigence est donc un contrat entre un fournisseur et son client, qui doit être décrite sous la
forme d'une action qui précise ce que l'on veut faire. Ecrire une exigence, c'est collecter toutes
les caractéristiques des fonctions rendues par le système en terme de nalité.
Durant cette phase, nous avons organisé des réunions avec les encadrants, qui représentent
les premiers clients de notre système, an de bien comprendre leurs besoins et mettre en lumière
les diérentes contraintes que nous avons à savoir le temps de réalisation et le budget donné
pour le matériel, ce qui nous a permis de mieux comprendre le thème de notre projet. Ensuite,
les membres de toute l'équipe ont déni les diérentes fonctions que le système devrait intégrer.
À cette étape, nous avons collecté les diérentes exigences du système qui dénissent en gé-
néral les attentes des clients par rapport à ce projet. Ces exigences se résument par la réalisation
d'un prototype d'un système ADAS qui englobe les fonctions suivantes:
Détection des lignes de voie (LD).
Reconnaissance des panneaux de signalisation (TSR).
Détection et suivi des objets (OD - OT).
Régulation adaptative de la vitesse (ACC).
Freinage automatique d'urgence (AEB).
Ces fonctions sont dénies avec plus de détails dans la description du système dans le premier
chapitre. En divisant le projet en plusieurs fonctions, ceci facilite la prochaine tâche qui est la
spécication des exigences de chaque fonction à part.
40
le problème, ce qui peut à nouveau déclencher le processus d'élicitation.
Avant de passer au processus de spécication des exigences suivi dans notre projet, il
convient tout d'abord de diérencier entre une exigence client et une spécication des exi-
gences du système ou du logiciel. En fait, les exigences client sont rédigées en langage naturel
et ne comportent aucun détail technique, dans le but de leur permettre de vérier que le sys-
tème décrit exactement ce qu'ils ont déni. D'autre part, les exigences système ou logicielles
sont destinées aux développeurs, elle contiennent des détails fonctionnels et non-fonctionnels.
Elles sont clairement et rigoureusement spéciées, car leur but est d'informer le développeur
ce qu'il est censé construire. Ainsi, elles doivent contenir susamment de détails pour que le
développeur puisse les prendre et les utiliser pour concevoir et développer le système.
Pour rédiger le document des exigences, nous nous étions mis d'accord avec le client sur le
modèle des attributs suivant:
Req_ID: il s'agit de l'identiant de l'exigence, celui-ci permet, comme son nom l'indique,
de pouvoir se référer à l'exigence de façon rapide et unique.
Category: ce champ comporte:
- Heading: cette ligne est dédiée à un titre qui regroupe d'autres exigences.
41
Safety: ce champ permet de dénir le niveau de sécurité ou d'impact de la fonction sur
le système global, il peut être: QM, ASIL A, ASIL B, ASIL C ou ASIL D. Dans notre
cas, les trois premières fonctions que nous avons entamés avaient un niveau de sécurité
ASIL B.
Required Test Type: indique le type de test requis pour cette exigence, il peut être:
test système, test unitaire, test sur véhicule, etc.
Priority: décrit le niveau d'intégrité de chaque exigence. Dans le sens où le non-respect
d'une exigence peut créer un grand impact à l'intégrité total de la fonction voire du
système entier.
Status_d: celle-ci passe par plusieurs étapes, an de valider l'exigence, avant d'avoir
le status d'exigence approuvée par le PO.
Comments: cet attribut permet de clarier l'exigence et de réduire toute ambiguïté pour
la bonne mise en oeuvre de celle-ci.
Review Comments: cet attribut est dédié au commentaires des personnes qui font la
revue.
Je faisais partie de l'équipe Alpha qui s'est chargée de la rédaction du document des exi-
gences pour les deux sous fonctions du système LD et OD. Nous avons donc entamé cette tâche
tout en respectant les diérentes caractéristiques d'une bonne exigence (voir Annexe B).
42
Figure 3.3 Extrait du document des exigences de la fonction OD
3.2.1.3 Vérication et validation des exigences
Vérication : Il s'agit de l'ensemble de tâches qui garantit que le logiciel implémente cor-
rectement une fonction spécique.
Validation : Il s'agit d'un ensemble diérent de tâches qui garantit que le logiciel qui a été
construit est traçable aux exigences du client.
Si les exigences ne sont pas validées, les erreurs dans les dénitions des exigences se propage-
raient aux étapes successives, ce qui entraînerait beaucoup de modications et de remaniements.
Les principales étapes de ce processus sont les suivantes :
Les exigences devraient être conformes à toutes les autres exigences (pas de conit).
Les exigences devraient être complètes.
Les exigences devraient être réalisables.
Le respect des caractéristiques d'une bonne exigence, les vérications entre collègues, la pré-
paration des cas de test, les tests unitaires et systèmes sont aussi parmi les méthodes utilisées
pour vérier et valider les exigences.
De ce fait, cette étape tient compte de la nature changeante des exigences, il convient donc
de veiller à ce que le document des exigences soit modiable au fur et à mesure. Pouvoir modi-
er le logiciel conformément aux exigences de manière systématique et contrôlée est un élément
extrêmement important du processus d'ingénierie des exigences.
43
système. Ci-dessous un récapitulatif de l'ensemble du matériel déjà présenté lors de la partie
des résultats du benchmarking, il s'agit entre autres de :
La carte électronique Jetson TX2: c'est le coeur de notre système, c'est elle qui va
permettre le traitement de toutes les informations ainsi que l'élaboration des signaux.
La caméra: utilisée dans les trois parties du projet que ce soit dans la détection des
objets ou des lignes de la voie ou dans la reconnaissance des panneaux de signalisation.
Cette caméra est en d'autres termes une entrée de notre système, elle va nous permettre
de capter des informations visuelles pour les transmettre au microcontrôleur.
Le lidar: permet de calculer la distance longitudinale entre le véhicule ego et le véhicule
cible devant, cette information est très importante pour la fonction ACC.
L'ultrasonique: permet de récupérer la distance latérale d'un véhicule aux alentours du
véhicule ego, il est utilisé pour donner les informations sur l'angle mort utile pour décider
la possibilité de changement de voie.
L'écran tactile HD: c'est l'élément de commande c'est à dire l'intermédiaire entre le
système et l'utilisateur. Il va également permettre l'achage des messages, des statuts, de
la projection de sa route, etc. Cet écran communiquera avec la carte par l'intermédiaire
d'un câble HDMI (High Denition Multimedia Interface).
La batterie: elle va servir d'alimentation pour le système ainsi que quelques capteurs.
Après ce bref récapitulatif du matériel, nous abordons maintenant les diérentes liaisons
qui constituent l'architecture de haut niveau du système. Comme le montre le schéma sur la
gure 3.4 ci-dessous, la carte Jetson TX2 est reliée par des câbles de connexions aux diérents
capteurs selon le type de communication exigée par chacun. Nous avons diérencié entre les
deux types de transfert, soit d'énergie ou d'information. L'architecture matérielle du projet est
donc présenté comme suit :
Nous avons réalisé un diagramme de cas d'utilisations de tout le système DeinAuge, et par
la suite un diagramme d'activité pour chaque fonction à part.
45
3.2.3.2 Diagramme d'activité
Le diagramme d'activité est un diagramme comportemental d'UML, permettant de repré-
senter le déclenchement des événements en fonction des états du système et de modéliser des
comportements en exécution synchronisée. C'est un diagramme qui permet de décrire le ux
de travail (workow) d'un cas d'utilisation ou d'une opération bien précise.
Diagramme d'activité de la fonction LD :
Le diagramme d'activité de la fonction LD est représenté par la gure ci-dessous :
46
des alertes audios appropriés à chaque cas. Ces alertes sont utiles pour notier le conducteur
de ce qu'il a fait an de le guider au maximum lors de sa conduite.
Diagramme d'activité de la fonction OD-OT :
Le diagramme d'activité de la fonction OD-OT est représenté par la gure ci-dessous :
An de suivre et estimer le mouvement des objets dynamiques situés dans l'environnement
extérieur du véhicule, il faut assigner à chaque objet un ID spécique puis pour chaque objet
suivi, nous calculons diérents paramètres comme la distance à la collision en utilisant les don-
nées du lidar ainsi que la prédiction de sa prochaine position. Enn nous achons toutes ces
informations utiles sur l'écran.
En fait, nous avons ajouté les panneaux de signalisation comme une classe dans cette fonc-
tion car lors du développement de la fonction TSR, le groupe Beta utilisait aussi un réseau de
neurones de détection des objets. Ce qui nous fera optimiser dans la phase d'implémentation
sur le matériel par la suite, du fait que nous n'aurons qu'un seul modèle d'Object Detection qui
47
servira pour les deux fonctions. Ce modèle va faire la localisation et la classication de tous les
objets du système y compris les panneaux. Et par la suite le classicateur de la fonction TSR
va s'en occuper de classier entre les panneaux existants dans sa base de données.
3.2.4 Développement
L'ingénierie des exigences, l'architecture matérielle et la conception du système constituent
la base de la phase de développement, donc le code à développer doit respecter les exigences
auparavant spéciées en plus de respecter l'architecture du système conçu. Durant cette phase,
il m'est attribuée, avec mon équipe Alpha, le développement des deux fonctions du système
DeinAuge à savoir la détection des lignes de voie et par la suite la détection des objets.
An de détecter correctement les lignes de voie dans l'image, nous devons tout d'abord
corriger cette distorsion. Ceci est fait en utilisant des bibliothèques de vision par ordina-
teur sous python, qui permettent de calculer les coecients de distorsion.
En absence de la caméra réelle que nous allons utiliser dans notre projet, nous avons
appliqué cette solution sur des images et des vidéos capturées par d'autres caméras. Une
fois nous aurons le matériel requis pour réaliser notre prototype, cette étape va se faire
au début une seule fois sur la caméra que nous aurons. Ceci va permettre d'éliminer la
distorsion radiale de toute image capturée par la suite à l'aide de cette caméra.
Transformation de perspective: Bien que nous avons maintenant une image non
déformée, la tâche de déterminer la direction exacte de la voie est dicile en utilisant
la vue de caméra par défaut. En eet, dans la perspective par défaut de la caméra, les
objets plus éloignés paraissent plus petits et les lignes de voie plus elles sont éloignées de
la voiture plus elles semblent converger, ce qui n'est pas une véritable représentation du
monde réel.
48
Figure 3.8 Schéma explicatif de la transformation de perspective en Vol d'oiseau
La méthode consiste à dénir quatre points qui délimitent notre région d'intérêt, ensuite
dénir leurs coordonnées dans l'image source et dans l'image destination. Ceci va nous
aider par la suite au niveau de l'achage pour le conducteur, à ce niveau nous aurons
besoin de faire la transformation inverse puisque le conducteur aura besoin juste de sa
vue en perspective véhicule et non pas celle de dessus.
Filtrage des pixels de la voie: Maintenant que nous avons l'image non déformée et
de point de vue d'un oiseau, nous revenons à l'objectif principal qui est de détecter les
lignes de voie sur la route.
Pour estimer la courbure d'une route et la nature des lignes (continues ou discontinues),
nous n'avons pas besoin de toutes les informations de l'ensemble des pixels de l'image,
juste des lignes de la voie, qui sont généralement blanches ou jaunes. En utilisant le format
de couleurs Hue Saturation Lightness (HSL), nous pouvons masquer tout à part le jaune
et le blanc. Cependant, ceci ne garantit pas les résultats car nous pourrons par exemple
avoir des lignes en blanc ou en jaune mais qui ne représentent pas des lignes de la voie.
Nous avons donc utilisé le ltre Sobel qui indique la direction de la plus forte variation du
clair au sombre, ainsi que le taux de changement dans cette direction, ceci permet alors de
connaitre les points de changement soudain de luminosité, correspondant probablement
à des bords, ainsi que l'orientation de ces bords.
Cette fonction permet donc de ltrer l'image qui est non déformée et en vue d'oiseau, en
utilisant le ltre de Sobel appliqué sur la valeur de luminosité (canal L du format HSL)
de l'image.
Ainsi, en utilisant l'emplacement des deux lignes de voie détectées et l'hypothèse que
la caméra est située au centre de l'image, nous calculons ensuite la position de la voiture
par rapport à la voie. En utilisant la résolution de l'image, les mesures d'échelle pour
49
convertir des pixels en mètres ont été calculées.
Cette étape est très utile pour la sous-fonction de l'aide au maintien de voie (LKA).
Génération de l'alerte vocale: Cette fonction est responsable de générer une alerte
vocale appropriée selon le cas an d'informer le conducteur des diérents problèmes qu'il
peut aronter.
Statut de l'angle mort: Cette fonction va utiliser le capteur ultrason pour vérier s'il
y a un obstacle dans la zone de l'angle mort du véhicule, ce qui va être utile pour la
sous-fonction d'avertissement de changement de voie (LCW).
Les modèles R-CNN, Faster R-CNN, You Only Look Once (YOLO) sont tous basés sur des
CNN et fonctionnent très bien dans la détection d'objets multiples. Nous avons choisi de tra-
vailler avec la famille d'architecture YOLO car elle est considérée l'une des architectures les
plus rapides tout en conservant une grande précision.
50
Figure 3.9 Le principe de fonctionnement de l'algorithme YOLO
Comme montré sur la gure ci-dessus, YOLO fonctionne en prenant l'image d'entrée et en
la divisant en une grille SxS. Pour chaque cellule de la grille, il prédit les boîtes englobantes
(bounding boxes), le score de conance et la probabilité de classe pour chaque objet. Pour
chaque objet détecté, YOLO classe l'objet, donne la conance et le cadre de délimitation de
cet objet.
An de choisir l'architecture de la famille YOLO avec laquelle nous allons travailler, nous avons
entrainé les deux modèles YOLOv3-tiny et YOLOv4, en poursuivant les étapes ci-dessous:
Collection des données: c'est la phase la plus importante où il faut collecter les images
qui vont être utiles pour bien entrainer le modèle et le rendre robuste. Ces images doivent
51
être prises de l'environnement où le modèle devrait fonctionner, c'est à dire l'objectif est
de collecter les images dans le contexte. Dans notre cas, elles doivent être issues d'un
véhicule dans diérents environnements et conditions de route.
Les gures ci-dessous présentent un exemple des images de la base de données utilisées
lors de l'entrainement:
52
• Division des images en deux catégories: Après la collection des images, nous les
déposons dans un seul dossier puis nous créons deux chiers texte, un qui contient le
chemin vers les images que nous allons utiliser pour l'entrainement et l'autre chier
qui contient le chemin vers les images que nous allons utiliser pour le test. Pour notre
cas nous avons décidé de prendre 80% pour l'entrainement et 20% pour le test.
53
• Lancer l'entrainement: Avant de lancer l'entrainement, il est conseillé d'initialiser
le poids du réseau de neurones par un poids d'un YOLO déjà entrainé pour accélérer
un peu l'entrainement. En lançant l'entrainement, nous pouvons suivre l'évolution
de la fonction de perte pour déterminer si l'entrainement du modèle avance très
bien. Les poids du nouveau modèle s'enregistrent au fur et à mesure de chaque 1000
itérations.
Test du modèle: Une fois l'entrainement est ni, nous prenons le dernier poids du réseau
de neurones et nous le testons soit en utilisant une image ou une vidéo contenant diérents
objets des classes. En testant le modèle sur de nouvelles données, nous pouvons évaluer
ses performances et valider notre réseau de neurones.
Maintenant que les étapes d'entrainement des deux modèles ont nies, il convient à faire une
comparaison:
Comparaison entre le YOLOv4 et le YOLOv3-tiny: An de choisir le modèle le
plus performant, nous avons pris en compte plusieurs métriques:
• Intersection Over Union (IoU): c'est la zone de chevauchement entre le cadre
de l'objet annoté manuellement et le cadre prédit, divisée par l'union des deux cadres.
• Frames Per Second (FPS): cette valeur signie la rapidité du traitement de l'archi-
tecture en calculant combien de séquences d'images qui peuvent être traités pendant une
seconde.
54
Figure 3.15 Résultat obtenu par YOLOv3-tiny
La détection d'objets c'est la base de tous les systèmes de perception automobiles, la détection
se fait image par image donc pour analyser le mouvement et la trajectoire des diérents objets
détectés et prédire leur prochain mouvement, il était nécessaire de développer aussi le concept
de suivi des objets (Object Tracking).
55
3.3 Flux ascendant du cycle en V
Une fois le développement des deux premières fonctions, LD par le groupe Alpha et TSR
par le groupe Beta, est ni, il était temps de passer à la phase de test pour naliser tout le
cycle en V de ces deux fonctions.
Le test n'est pas le processus de vérication du programme pour qu'il fonctionne correcte-
ment. Au contraire, le but du test est de trouver les problèmes (autant que possible) et de les
xer par la suite.
Il est vrai que les développeurs vérient les fonctions d'une application au fur et à mesure
de leur développement. Cependant, ils n'ont absolument pas le recul ni le temps nécessaire
pour vérier l'ensemble des fonctionnalités à chaque évolution du code. C'est donc là que réside
toute l'importance du test et toutes les compétences des testeurs.
Dans le cadre de notre projet, nous avions un souci autre que celui présenté dans l'idée
précédente. Ainsi, vu qu'un développeur ne doit pas tester son propre code car il va le voir du
même point de vue qu'il avait lors du développement. Donc la solution était que chaque équipe
va passer au test de la fonction développée par l'autre équipe.
La phase de test s'est divisée en deux grandes parties, le test unitaire qui teste le fonction-
nement de chaque unité développée dans la fonction TSR, ainsi que le test système qui vise à
tester le fonctionnement du système complet c'est à dire de la fonction TSR en entier. Chaque
partie est divisée à son tour en plusieurs étapes an de parvenir aux résultats des tests.
Table 3.2 Méthodes de dérivation des cas de test selon le niveau ASIL
Dans notre présent projet, vu que nous avons un niveau ASIL B, nous avons utilisé la
méthode "Analysis of requirements" et "Analysis of boundary values".
56
Les types de couverture: La couverture du code est exigée par les normes de sécurité
car:
1. Avec la couverture de code, nous pouvons écrire des cas de test plus adaptés an de
tester les parties du code qui ne sont pas encore couvertes.
2. La couverture de code permet d'éviter les cas de test redondants et de gagner du
temps et de l'argent.
3. Nous savons quand nous pouvons arrêter les tests : l'objectif est atteint lorsque le
taux de couverture de test nécessaire a été atteint.
4. La couverture de code est également une preuve de qualité pour les clients.
5. Si le développement ou le test est sous-traité à une autre personne, le rapport de
couverture montre le nombre de tests eectués par cette personne.
6. Les outils de couverture de code aident aussi à trouver le code mort. Un code mort
est un code qui ne peut jamais être exécuté au moment de l'exécution, ou c'est une
section du code source d'un programme qui est exécutée mais dont le résultat n'est
jamais exploité par son programme.
An d'évaluer l'exhaustivité des cas de test, l'ISO 26262 exige la mesure de couverture du code.
Selon le point 9.4.5 de la partie 6 de la norme, si le taux de couverture obtenue est insusant,
alors des cas de test supplémentaires ou une justication doit être fournie.
Selon le niveau d'ASIL, diérents types de couverture sont exigés, ils sont regroupées dans
le tableau suivant, où le symbole + signie recommandé et ++ fortement recommandé [19]:
Avant d'entrer dans les détails, un scénario ou une spécication de test est une activité de
test du logiciel qui utilise des scénarios : des histoires hypothétiques pour aider le testeur à
résoudre un problème complexe ou un système de test. Le scénario de test idéal est une histoire
crédible, complexe, convaincante ou motivante; dont le résultat est facile à évaluer.
Nous avons choisi les attributs suivants pour le document de spécications des tests élaboré:
Req_ID: l'identiant de l'exigence à tester.
TS_ID: l'identiant de la spécication de test (Test Specication).
Description: la description en texte du test spec.
Test Seq: la séquence de test spéciant les préconditions, les actions et les postconditions
qui doivent être assurées pour exécuter ce test.
57
Expected results: les résultats attendus de la séquence de test an de valider ou non
le test.
Developed by: la personne ou l'équipe qui a développé la spécication de test.
Missing information / Comments: commentaires et clarications.
Review comments: champ dédié aux commentaires par l'équipe qui a fait la revue.
Reviewed by: la personne ou l'équipe qui a fait la revue. Dans notre projet, chaque
équipe faisait la revue de l'autre. Cette étape est très importante an d'avoir des idées
globales de la part du développeur et du testeur dans le but de conrmer les descriptions
des tests. Ainsi ça permet d'avoir une traçabilité de qui a fait n'importe quelle modication
ou remarque.
PO's Comments: les commentaires des encadrants.
Ainsi, nous avons déni 26 spécications de tests pour les 15 exigences de niveau logiciel,
dénis auparavant par le groupe Beta, de la fonction TSR. Le document des spécications de
tests est présenté comme suit :
Figure 3.17 Extrait 1 du document des spécications de tests niveau logiciel de la fonction TSR
58
Figure 3.18 Extrait 2 du document des spécications de tests niveau logiciel de la fonction TSR
Comme montré dans les gures ci-dessus, nous pouvons avoir une exigence avec un, deux ou
plusieurs spécications de tests, le nombre varie en fonction de chaque exigence dans le but de
la couvrir totalement. Une fois ce document a été bien élaboré et modié après les revues, la
deuxième étape consiste à passer au développement de ces tests.
59
1class TestDetectionTS ( u n i t t e s t . TestCase ) :
2 d e f setUp ( s e l f ) :
3 s e l f . img_test1 = cv2 . imread ( " t e s t _ i m g s / test_with_30_speed_limit . j p g " )
4 s e l f . img_test2 = cv2 . imread ( " t e s t _ i m g s / test_without_TS . j p g " )
5 s e l f . img_test3 = cv2 . imread ( " t e s t _ i m g s / speed_limit_80_cropped . j p g " )
6 s e l f . img_test4 = cv2 . imread ( " t e s t _ i m g s / TS_2sens_cropped . j p g " )
7 s e l f . img_test5 = cv2 . imread ( " t e s t _ i m g s / pharmacie_panel_cropped . j p g " )
8 s e l f . img_test6 = cv2 . imread ( " t e s t _ i m g s /test_two_TS . j p g " )
9 s e l f . img_test7 = cv2 . imread ( " t e s t _ i m g s / l o t _ o f _ s i g n s . j p g " )
10 s e l f . img_test8 = cv2 . imread ( " t e s t _ i m g s / test_with_mcdo_panel . j p g " )
11 s e l f . img_test9 = cv2 . imread ( " t e s t _ i m g s / test_with_danger_TS . j p g " )
12 s e l f . img_test10 = cv2 . imread ( " t e s t _ i m g s / test_with_stop_TS . j p g " )
13 s e l f . img_test12 = cv2 . imread ( " t e s t _ i m g s / c l a s s _ d a n g e r . j p g " )
14 s e l f . img_test13 = cv2 . imread ( " t e s t _ i m g s / class_mandatory . j p g " )
15 s e l f . d e s i r e e = np . a s a r r a y ( [ [ 1 2 1 0 , 2 2 5 , 1 4 3 0 , 4 5 0 ] ] )
16 s e l f . v i d e = np . a s a r r a y ( [ [ 0 , 0 , 0 , 0 ] ] )
17
18 d e f tearDown ( s e l f ) :
19 pass
20
21#TSR_02_01:###################################################################
22
23#############################TS02_01 :
24 d e f test_TS_02_01 ( s e l f ) :
25 cap = cv2 . VideoCapture ( 0 )
26 p r i n t ( cap . isOpened ( ) )
27 s e l f . a s s e r t T r u e ( cap . isOpened ( ) )
28
29##############################################################################
30
31#TSR_02_02:###################################################################
32
33#############################TS_02_02 :
34 d e f test_TS_02_02 ( s e l f ) :
35 r e s u l t , c l=f u n c s . d e t e c t _ t s ( s e l f . img_test1 , 4 1 6 )
36 #p r i n t ( r e s u l t )
37 s e l f . a s s e r t L e s s E q u a l ( np . abs ( r e s u l t [ 0 ] [ 0 ] s e l f . d e s i r e e [ 0 ] [ 0 ] ) , 3 0 )
38 s e l f . a s s e r t L e s s E q u a l ( np . abs ( r e s u l t [ 0 ] [ 1 ] s e l f . d e s i r e e [ 0 ] [ 1 ] ) , 3 0 )
39
40 s e l f . a s s e r t L e s s E q u a l ( np . abs ( r e s u l t [ 0 ] [ 2 ] s e l f . d e s i r e e [ 0 ] [ 2 ] ) , 3 0 )
41 s e l f . a s s e r t L e s s E q u a l ( np . abs ( r e s u l t [ 0 ] [ 3 ] s e l f . d e s i r e e [ 0 ] [ 3 ] ) , 3 0 )
Ce module nous a oert plusieurs possibilités an de valider les tests, cependant nous avons
rencontré une limitation par rapport aux tests des fonctions qui retournent des images, donc
nous étions obligés de trouver une solution alternative puisque nous n'avons pas de logiciel
opensource qui se charge de cette tâche. La solution que nous avons adopté est que pour les
fonctions qui nécessitent ce type de test, l'image de sortie sera aché dans le test avec une
boîte de dialogue qui nous donne, en tant que testeur, la possibilité de valider ou non le test.
60
Figure 3.19 Commande d'exécution des tests unitaires
Création du chier de détection des bugs: au fur et à mesure que nous détectons un
bug dans l'exécution, il doit être mentionné dans un chier an de garantir la traçabilité
et renseigner le développeur sur le problème détecté:
Figure 3.20 Extrait du chier de détection des bugs des tests unitaires
Génération du rapport de test unitaire: une fois le chier des bugs est créé et après
résolution par l'équipe beta de ces bugs détectés, le rapport de test doit être généré, en
utilisant le plugin pytest-html, par la commande :
61
Figure 3.22 Extrait 1 du rapport des tests unitaires
62
Figure 3.24 Commande 1 de génération du chier de couverture du code
Cette multi-dimensionnalité peut dicilement être couverte de manière complète par de vé-
ritables tests de conduite. Donc nous étions obligés de compléter par des essais virtuels en
utilisant un outil de simulation de véhicules et de tracs étant donné que la simulation semble
être la seule option pour synthétiser et analyser l'énorme quantité de scénarios de tracs routiers
requis avec l'ensemble des conditions pour chaque cas à part.
63
3.3.2.1 Création des spécications de test
De la même manière que le test unitaire, la première étape du test système était de rédiger
un document de spécications des tests pour les exigences du système (dont le type de test
requis est système).
En utilisant les mêmes attributs présentés lors de la création des spécications des tests uni-
taires, nous avons déni 22 spécications de tests pour les 12 exigences de niveau système,
dénis auparavant par le groupe Beta, de la fonction TSR. La gure suivante représente un
exemple du document des spécications de test système de la fonction TSR :
Figure 3.27 Extrait du document des spécications de tests niveau système de la fonction TSR
Une fois ce document est bien élaboré et modié après les revues, la deuxième étape consiste
à créer les scénarios des vidéos de test que nous allons utiliser pour valider les exigences de niveau
système.
64
Figure 3.28 Extrait du document des scénarios des vidéos de test de la fonction TSR
3.3.2.3 Génération des vidéos de test
Une fois un scénario de vidéo est décrit par un membre du groupe, un autre se charge de
faire sa revue (en se référant à l'exigence et à la spécication de test) et le créer par les outils
de création des vidéos, avant que le troisième membre passe à l'exécution du test système relatif.
Nous avons utilisé le moteur de jeu Unity pour réaliser la majorité de nos scénarios de tests
et générer les vidéos. Pourtant, cet outil a montré quelques limitations pour quelques scénarios
nécessitant le changement des conditions météorologiques, nous avons donc créé ces vidéos sur
CARLA simulator.
En utilisant les logiciels CARLA et Unity décrits dans le troisième chapitre, nous avons pu
créer les diérentes vidéos nécessaires pour passer à l'exécution des tests, ci-dessous des cap-
tures depuis les vidéos montrant l'environnement sous ces deux outils:
65
Figure 3.29 Exemple de l'environnement d'une vidéo sous Unity
66
Création du rapport de test système: après tous le processus de test; création des
spécications de tests, description et génération des scénarios des vidéos, exécution des
tests avec les vidéos créées, détection des bugs, revue et xation des bugs dans la mesure
du possible, la dernière étape consiste à créer un rapport qui résume les résultats de cette
phase avant et après la revue:
Grâce aux diérents cas et vidéos de test couvrant toutes les exigences, et après la xation
des bugs détectés, nous avons pu atteindre 83% pour les deux fonctions TSR ainsi que LD
testée par le groupe Beta. Nous avons également un taux de 100% de couverture des exigences
niveau système pour les deux fonctions, c'est à dire que la totalité des exigences système est
couverte par les tests.
Ci-dessous les captures relatives aux gures 3.29 et 3.30 depuis les vidéos après le test (voir
Annexe E pour les captures d'une vidéo de LD):
67
Figure 3.32 Résultat du test d'une vidéo sous Unity
3.4 Conclusion
Ce dernier chapitre détaille l'ensemble du travail eectué pour assurer les diérentes phases
du cycle en V pour les trois fonctions importantes du projet DeinAuge. La dernière livraison
concernant le test de la fonction OD-OT vient de se lancer, au temps de dépôt du présent rap-
port, par conséquent cette tâche n'est pas encore complète. Ainsi, la phase de l'implémentation
n'a pas pu avoir lieu en raison des dicultés d'avoir le matériel requis vu les conditions actuelles
de la pandémie du Coronavirus.
68
CONCLUSION ET PERSPECTIVES
En ce qui concerne les perspectives envisagées pour la continuité du projet, d'abord l'inté-
gration de toutes les fonctionnalités développées et leur implémentation sur le matériel une fois
disponible, et démarrer une phase de test et maintenance du système dans le monde réel an
de l'évoluer et l'adapter au mieux aux exigences et besoins du projet.
Le centre ADC et surtout le département SISE qui m'a accueilli pendant ce stage connait
actuellement une forte croissance, et je suis très ère d'avoir pu contribuer et participer à cette
évolution qui a pour objectif de rendre le département SISE Maroc un pilier incontournable du
groupe ALTEN.
Ce stage a été très enrichissant car il m'a permis de découvrir de plus près le secteur de
l'embarqué automobile, ses acteurs, contraintes. Ce stage m'a permis, non seulement d'appro-
fondir mes connaissances techniques dans le domaine de l'ingénierie des systèmes électroniques
embarqués mais également de développer le côté relationnel en travaillant au sein d'une équipe
jeune et dynamique, de proter des réunions hebdomadaires avec les clients et avoir la chance de
proposer des solutions pertinentes à leurs besoins. Ceci m'a permis d'avoir une vision globale de
l'environnement professionnel au sein d'une entreprise multinationale, ainsi que les obligations
et les contraintes auxquelles est confronté un ingénieur au cours de son travail quotidien.
Cette expérience m'a permis de cultiver mon esprit de synthèse en respectant la méthode
de travail adoptée tout au long du stage. Pour conclure, je peux dire que je garde de mon stage
69
de n d'études un excellent souvenir. Il constitue désormais une expérience professionnelle va-
lorisante et encourageante pour mon avenir. Cette expérience m'a oert une bonne préparation
à mon insertion professionnelle, elle constituait une opportunité de découvrir de nouvelles ap-
proches de développement dédiées au domaine de l'automobile.
70
RÉFÉRENCES
[1] https://www.leseco.ma/rapport-international-sur-la-securite-routiere-progres-enregistres-
par-le-maroc/
[2] https://www.oxts.com/what-is-adas/
[3] Zhao Guangzhe, Estimation of Pedestrian Walking Direction for Driver Assistance System
[4] https://www.capcar.fr/lexique-auto/regulateur-de-vitesse-adaptatif-acc
[5] https://www.capcar.fr/lexique-auto/freinage-automatique-urgence/
[6] https://fr.w3ki.com/software_engineering/software_development_life_cycle.html
[7] https://fr.wikipedia.org/wiki/Cycle_en_V
[8] https://www.planzone.fr/blog/quest-ce-que-la-methodologie-agile
[9] https://www.git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-%C3%80-propos-de-la-
gestion-de-version
[10] https://fr.wikipedia.org/wiki/Apache_Subversion
[11] https://fr.wikipedia.org/wiki/Bitbucket
[12] https://fr.wikipedia.org/wiki/Microsoft_OneDrive
[13] https://www.nvidia.com/fr-fr/autonomous-machines/embedded-systems/jetson-tx2/
[14] https://documents.irevues.inist.fr/bitstream/handle/2042/61700/lm20_com_1B_1_053
_Barbat.pdf
[15] https://en.wikipedia.org/wiki/Software_requirements
[16] https://www.geeksforgeeks.org/software-engineering-requirements-engineering-process/
[17] https://fr.wikipedia.org/wiki/UML_(informatique)
[18] Object Detection, Classication, and Tracking for Autonomous Vehicle. Milan Arya.
[19] https://www.embitel.com/blog/embedded-blog/how-iso-26262-compliant-unit-testing
71
ANNEXE A
DIFFÉRENCE ENTRE LIDAR 1D, 2D ET 3D
Dans leur version la plus simple, les capteurs LiDAR se retrouvent dans des appareils de
mesure de la distance et dans des capteurs où ils font oce de systèmes de mesure de
la distance sous forme de points. Pour une mesure directe de la distance, ils sont dirigés
sur une cible naturelle ou sur un réecteur. Les capteurs qui travaillent ainsi dans une
dimension (distance) sont dits monodimensionnels, soit des capteurs 1D.
Pour la troisième dimension, des capteurs LiDAR employés sont pivotés. Cela permet
d'obtenir des informations aussi bien sur l'écart et la position sur l'axe x que sur les po-
sitions sur les axes y et z. Les mêmes informations sur les diérents paramètres spatiaux
sont acquises en déplaçant plusieurs systèmes émetteurs et récepteurs dans divers angles
horizontaux dans un capteur et ce avec balayage. Il est alors question de scanners multi-
couche.
72
ANNEXE B
LES CARACTÉRISTIQUES D'UNE BONNE
EXIGENCE
73
ANNEXE C
LA VISION PAR ORDINATEUR
Le terme de "Computer Vision" ou "Vision par ordinateur" en français désigne les dié-
rentes techniques permettant aux ordinateurs de voir et de comprendre le contenu d'images.
Il s'agit d'une sous-catégorie d'intelligence articielle et de Machine Learning (apprentissage
automatique).
Nous pouvons citer entre autres, le domaine de la sécurité automobile, la vision par ordinateur
est utilisée pour la détection de dangers, la CV occupe une place centrale dans l'industrie au-
tomobile puisque c'est grâce à elle que les véhicules arrivent à voir sur la route.
Dans la majorité des cas, la CV se base sur le DL, un domaine du Machine Learning.
74
ANNEXE D
RÉSEAUX DE NEURONES
CONVOLUTIONNELS
Le réseau de neurones à convolution (CNN) est le plus répandu dans la communauté d'ap-
prentissage profond, il est un type de réseaux de neurones articiels (Articial Neural Network
(ANN)), qui est conçu pour être entrainé avec un ensemble d'images connue. Une image est
représentée par une matrice tridimensionnelle, avec hauteur, largeur et profondeur. La profon-
deur représente les trois canaux de couleur Rouge, Vert et Bleu. Si les réseaux de neurones
articiels réguliers (ANN) sont utilisés pour être entrainés avec un ensemble d'images, la taille
de la couche d'entrée serait un grand ensemble d'entrées individuelles représentant chaque ca-
nal de couleur individuel de chaque pixel. Par exemple, une image avec une résolution 50x50x3
aurait 7500 entrées, ce qui rend le réseau neuronal très grand. CNN est conçu pour proter de
la profondeur et modéliser l'image sous forme de volume et s'entraîner avec. Une représentation
de la diérence entre un réseau neuronal articiel régulier et le CNN est présentée dans la gure
ci-dessous:
Chaque couche de CNN transforme le volume d'entrée en un volume de sortie. Les CNN
ont des poids et des biais, puis des sorties par une fonction d'activation non linéaire. Alors que
les CNN sont entrainés avec des images d'entrée, ces paramètres changent au cours du temps,
75
résultant l'apprentissage des entrées. Les nouveaux paramètres peuvent ensuite être utilisés
pour détecter les caractéristiques et les points clés dans l'image. Plus la couche est profonde,
plus les caractéristiques peuvent être abstraites. Les premières couches d'un CNN pourraient
en apprendre davantage sur les bords et les lignes dans les images tandis qu'une couche plus
profonde dans le CNN pourrait en apprendre davantage sur les visages ou certaines formes
complexes. Les CNN sont utilisés pour détecter des objets dans les images.
Dans ce projet, la détection et la classication d'objets se font à l'aide d'une famille d'ar-
chitecture appelé YOLO, qui utilise une architecture CNN.
76
ANNEXE E
RÉSULTATS DES TESTS DE LA FONCTION
LD
Ci-dessous les captures du test système depuis une vidéo de test de la fonction LD, la pre-
mière représente l'achage de la trajectoire lorsque le conducteur est en bonne position dans
sa route:
77
Figure E.2 Résultat du test de la fonction LD - Position déviée
78