Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite

De Wiki de Projets IMA

Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI.

Résumé du projet:

Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar. Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface) sur le PC supervision. L'objectif de ce projet est de récupérer des consignes de vitesse et d'angle de braquage des roues du véhicule Robucar grâce à un programme MATLAB déjà opérationnel et de les envoyer au PC Supervision où ils seront récupérées par une API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit de simulation et sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément, le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.


Pour aller plus loin

On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.


Définition des outils à disposition

SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie

SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule. Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. Les véhicules simulés peuvent être contrôlés de différentes façons:

- automatiquement par la simulation

- avec un joystick

- avec un cockpit de simulation

- en reproduisant les mouvements d'un véhicule réel etc

Chacun de ces modes est programmé par une API intégrée au logiciel. Pour réaliser une simulation, il faut un terrain munis d'un ou plusieurs véhicules et créer un scénario. Ce scénario va intégrer les API nécessaires à notre application. Certaines API existantes sont utiles pour, par exemple, récupérer des données sur le véhicule simulé (vitesse, position etc). Dans notre projet, nous allons développer et utiliser plusieurs API permettant d'échanger des informations entre le Robucar, le cockpit de simulation et un PC de supervision. Dans un premier temps, nous développerons un Serveur sur l'ordinateur de la Robucar pour communiquer avec une API Client sur le PC de supervision du cockpit.


Le véhicule ROBUCAR

Le Robucar est un véhicule automatique "intelligent", autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directrices pilotables séparément. Il y a donc deux paramètres de commande pour chaque roue (orientation, vitesse de rotation). Il est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données est rendu possible par la librairie CLIB.


Véhicule Robucar


Création d'un Serveur UDP

Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque « Winsock2.h ». La RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme équivalent à celui sur MATLAB avec des noms de variables propres à la bibliothèque CLIB. Une interface apparaît et nous pouvons alors récupérer, en pilotant le véhicule, des valeurs de consignes pour l’angle de braquage des roues et la vitesse moyenne des roues. On récupère directement ces deux consignes dans l’API Serveur grâce à la librairie « clib32.h ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage


Journal de bord

Séance du 05/02/2014

Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.

Séance du 10/02/2014

Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type "vehicle Advanced" et plusieurs véhicules de type "vehicle simple" qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité de notre terrain.

Résultats des simulations sur le terrain: - Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal - Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.

Séance du 13/02/2014

Les virages étaient modélisés en "Polyline" ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples. Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.

Séance du 13/02/2014

La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.

Séance du 19/02/2014

Nous nous entretenons avec le doctorant Vincent XX pour faire un point sur les API. On évoquera entre autre les points suivants: - comprendre l'utilisation des canaux (EXPORT CHANNEL) - mettre à disposition la documentation nécessaire pour les utiliser - comment transformer un projet C++ en une API qui évoluera dans le logiciel Nous entretiendrons également avec M. Merzouki pour définir plus précisément le cahier des charges. Nous commençons alors à nous focaliser sur le fonctionnement du Robucar.

Séance du 03/03/2014

Séance du 06/03/2014

Séance du 12/03/2014

Séance du 17/03/2014

Séance du 23/03/2014

Séance du 31/03/2014

Séance du 02/04/2014

L'API envoyant des données fixes à SCANeR Studio est fonctionnelle. Les problèmes résolus sont : - Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double) - Il est nécessaire de démarrer le moteur en fixant la variable "IgnitionKey" à 3 ce qui correspond à moteur en marche (Engine Start) - Il est préférable d'écrire sur la variable "TimeOfUpdate" pour "synchroniser" l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz - On mettra également la boîte de vitesse à 1 (GearBox) Nous commençons à fusionner l'API client et cette API.