Ce projet fut développé pour notre PFE à l'EPITA. Son but est d'automatiser la mesure des pentes et des dévers des trottoirs.
Ce projet utililse le framework ROS pour mesurer la pente et les dévers des trottoirs.
Pour pouvoir utiliser ce projet, il faut:
- une raspberry pi (avec raspbian ou Ubuntu Mate);
- y brancher un gyroscope MPU6050 en I2C et un GPS Ublox C94-M8P en USB;
- y installer ROS kinetic;
- cloner ce projet dans le répertoire de travail ROS;
- cloner le driver ROS NMEA disponible ici dans le répertoire de travail ROS;
- installer la carte et les capteurs sur un vecteur mobile (potentiellement motorisé), de façon à ce que le gyroscope soit droit.
Pour pouvoir lancer ce projet, il faut d'abord le compiler après l'avoir cloné:
$ cd ~/<repertoire_de_travail_catkin>/
$ catkin_make
puis lancer les commandes suivantes:
$ source devel/setup.bash
$ roslaunch buggy_sensor buggySensorLaunch.launch
ROS affichera alors des logs de manière régulière à l'écran:
- 'STOP' -> Il faut mettre le vecteur motorisé à l'arrêt, jusqu'à ce qu'il affiche le log de ses mesures;
- le log des mesures -> Une fois affiché, on peut déplacer le vecteur motorisé;
Le package buggy_sensor contient 4 noeuds ROS nécéssaires à la mesure des angles et des coordonnées GPS:
- MPU6050_talker.py mesure les angles à l'aide du gyroscope MPU6050, en utilisant des formules mathématiques expliquées dans cet article. Il envoie les données mesurées sur le topic 'MPU6050Talker'.
- buggy_mainListener.py récupère les données mesurées par le gyroscope et le GPS et attends l'interruption envoyée par le noeud buggy_waitInterrupt.py pour enregistrer ces mesures dans un fichier csv et les envoyer sur l'interface web. * buggy_waitInterrupt.py envoie un message sur le topic 'buggyInterrupt' de manière à un intervalle de temps donné afin de signifier au noeud buggy_mainListener d'enregistrer ses mesures. La période entre chaque mesure peut être modifiée dans ce noeud si besoin.
- buggy_server.py envoie des informations sur la carte (RAM, CPU, disque) à l'interface web.
le dossier capteur contient:
- le premier script , mesure.py (développé sans ROS) mesurant les angles et les écrivant dans un fichier CSV.
- le script d'importation sur OpenStreetMap, importData.py, qui prend en paramètre un fichier CSV contenant des mesures et un fichier contenant un commentaire pour importer ces données. Pour plus d'informations, vous pouvez entrer la commande
$ ./importData.py --help
.
Afin de pouvoir se connecter avec le noeud ROS, l'interface Web à besoin d'établir une connection avec ROS_bridge qui est un module ROS.
$ cd ~/<repertoire_de_travail_catkin>/
$ source devel/setup.bash
$ roscore &
$ roslaunch rosbridge_server rosbridge_websocket.launch
$ roslaunch buggy_sensor buggySensorLaunch.launch
$ cd ~/../pfe_voiture_cartographe/viewer
$ npm start
Après cela, vous aurez un webserver qui tourne sur le port 8080 (par défaut) et une interface web qui écoute sur ce port. Consultez le README.md dans Viever pour plus de détails.