Difference between revisions of "Project 2014-2015-CannonBall/developer guide"

From air
Jump to navigation Jump to search
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
   
 
= Preambule =
 
= Preambule =
== Configuration ==
+
== Configuration & Installation from our github repository==
   
 
Setting up the project
 
Setting up the project
   
 
# Download the project from our Github repository [https://github.com/malek0512/2014_2015_ricm4_cannon_ball Github]
 
# Download the project from our Github repository [https://github.com/malek0512/2014_2015_ricm4_cannon_ball Github]
  +
# Download and install Visual Studio (we used the 2013 version)
  +
# Launch CanonBall\QRCode\QRcode (or QRcode.vcxproj) with a double click
  +
# Add this environment variable (Please refer to your OS documentation for any further indications). If you use Windows : Right click on Computer -> Properties -> Advanced properties -> Environment variables -> Add
  +
#* Name : PATH and its value : PATH_TO_YOUR_PROJECT\QRcode\dll\mosquitto; PATH_TO_YOUR_PROJECT\QRcode\dll\opencv\build\x86\v12\bin
  +
  +
== Configuration & Installation from Ensimag github repository==
  +
  +
Setting up the project
  +
  +
# Download the project from our Github repository [https://github.com/Iheve/CannonBall_de_voitures_autonomes Github]
 
# Download and install Visual Studio (we used the 2013 version)
 
# Download and install Visual Studio (we used the 2013 version)
 
# Launch CanonBall\QRCode\QRcode.vcxproj with a double click
 
# Launch CanonBall\QRCode\QRcode.vcxproj with a double click
Line 39: Line 49:
 
mosquittopp.lib<br>
 
mosquittopp.lib<br>
 
mosquitto.lib<br>
 
mosquitto.lib<br>
 
= Technology watch =
 
 
http://www.mindmeister.com/fr/172030358/la-boite-outils-du-veilleur-2-0
 
 
- L'idée d'une raspberry pi pour le traitement des images est ecarter du à un maque de puissance processseur. Pour se donner un ordre d'idée le core i3 de la tablette Lenovo Thinkpad ....a ajouter des chiffre par rapport à la tablette
 
 
- L'idée d'une raspberry pi pour la diffusion du flux video sur un serveur local et traitement par une machine tiers n'est pas concevable en raison de la latence de transmission du flux. Pour ce donner un ordre de grandeur : si la latence est d'1 seconde, une voiture à 30 km/h effectuerai 5 m avant que la machine tiers effectue son traitement.
 
 
- L'idée d'une tour mini et compact (exemple : GB-XM1-3537) est intéréssant mais l'absence de batterie embarqué la rend dépondante d'une source d'energie de 220 Volts
 
 
- L'idée d'un téléphone est intéréssant d'un point de vu de la richesse et précision des capteurs (aéromètre, compass, ...). D'autant plus s'il possède un processeur de type tégra offrant une plus grande puissance de traitement des images par opencv. Un processeur ARM ne pourrait suffir par contre.
 
Taille réduite, batterie embarquée.
 
Le principale souci qu'ont rencontré nos précédesseur de l'Ensimag est que une caméra externe ne peut être exploitée par le système android. -> A vérifier car ce qui était vrai il y a 1 an, ne l'est peut être plus.
 
 
 
 
Technologies chosen :
 
We keep MongoBD database because it present several advantages :
 
http://java.dzone.com/articles/when-use-mongodb-rather-mysql
 
 
We keep Node.js for creating a local server from which the tablet can display all the data :
 
We use different modules : socket.io for real time messaging, mqtt for a subscribe/pusblish protocol, mongoose for the interface between the mongoDB database and subscribe?
 
Mosquitto (c++) <=> mqtt (node.js)
 
MongoDB <=> Mongoose (node.js)
 
 
In view.html we use bootStrap.min.css which formalize the presentation page
 
 
What we have to accomplish :
 
What we want to do :
 
What we are asked to do :
 
The risks :
 
   
   
  +
Règles d'utilisations :
  +
----------------------
   
  +
Aller dans le dossier Mosquitto/subscribe/ et lancer en ligne de commande le script Launch.bat qui se charge de lancer les processus : MongoDB (pour la BD), Moquitto Broker (pour la diffusion des messages), Server (pour la visualisation des données sur l'adresse localhost:1337)
   
  +
Puis lancer le programme main :
Ce que nous devons faire :
 
  +
* à travers VS2013 : faite un CRTL-F5 qui est un raccourci pour la compilation et le lancement du programme
  +
* en ligne de commande : CannonBall.exe <arguements...>
   
- Finir le prototype de l'Ensimag et le présenter au salon le 18 mars 2015 :
 
- La redirection des metriques et du flux video vers une machine quelconque au travers d'un serveur (Mosquitto, Node.js, Socket.io, Node.js sont les bibliothèques recommandées, cela dit faut voir si y a mieux de nos jours)
 
- Améliorer les algorithmes de déplacement de la voiture. Elaborer un algorithme de convoi entre plusieurs voitures (ne devrais pas être trop dur pour notre génie en algorithmie de notre équipe)
 
   
  +
Logiciel utilitaires conseillés :
- Nous fûmes rejoint par deux collègues, A.LE JEAN et H.RODRIGUES. De nouveaux objectifs nous serons certainement fixés.
 
  +
----------------------------------
   
  +
* CygWin ( optionnal : pour ceux qui sont familier avec un environnement linux, un peu long à installer sans oublier les modules tels que git, ...)
Ce que nous voulons faire :
 
  +
* Notepadd++ (optionnal)
  +
* Visual Studio 2013
  +
* Git (version 1.9.5 bref la plus récente)
  +
* Nodejs (v0.10.36) + mongodb + mosquitto (broker) sont fournis dans le dossier Mosquitto/subscriber/ mais si ces executable se sont pas compatible avec votre architecture ou version windows je vous laisse télécharger celle qui conviendra, l'installer et récupérer les différents exécutables de C:\Program File\...
   
- Passer sous un environnement linux et utiliser un IDE non propriétaire à la place de Visual Studio 2013.
 
- Le langage choisi fut le C++ plus proche de la librairie opencv codée aussi en C++.
 
- Adapter notre programme
 
   
  +
Foire aux bugs courants :
Ce qui nous ait demander d'envisager :
 
  +
-------------------------
   
  +
IMPORTANT : un changement d'une variable d'environnement système tel que la variable "PATH" vers les .dll peut nécessiter un redémarrage, car il est chargé au démarrage du système.
- D'ajouter un shield à l'arduino uno, afin d'améliorer la précision de déplacement de la voiture. Les déplacement de la voiture seraient controllés et corrigé si nécessaire. Un deplacement de 20 degré sur la droite, se résulte par un dépalcement effectif de +- 20 degré sur la droite alors nous devons corriger l'erreur.
 
   
  +
* Au lancement du programme si une fenêtre de selection de webcam apparaît, cela est lié au fait que opencv ne s'adresse pas directement à la bonne caméra. Il faut aller dans le fichier main_config.xml et modifier la valeur de l'attribut video_capurer="0" (de la balise <Opencv>). Essayer toutes les combinaisons de 0 à 9.
Technologies choisies :
 
Nous gardons l’arUco bibliotheque (puissante) basée sur opencv
 
   
  +
* Au lancement du programme si une erreur apparait c'est très certainement dû à un problème de path vers les fichiers .dll. Revérifier que la variable d'environnement Path (système et NON user) contient le chemin vers ...\dll\mosquitto et ...\dll\opencv...
Les Risques :
 
   
  +
* Si la fenêtre (de nom : in) de la camera se fige c'est qu'il y a eu une erreur dans la vérification des instructions envoyées à la carte Arduino.
- Notre capacité à réutiliser le code de nos prédécesseur pour ne pas repartir from scratch.
 
  +
* Si La led L (sur la carte Arduino est allumé) est allumée c'est que l'arduino est passée en état d'urgence (faute de n'avoir reçu de données de la tablette en un temps imparti). Relancer le programme main pour la faire sortir de cet état.
-
 

Latest revision as of 16:02, 15 May 2015

Preambule

Configuration & Installation from our github repository

Setting up the project

  1. Download the project from our Github repository Github
  2. Download and install Visual Studio (we used the 2013 version)
  3. Launch CanonBall\QRCode\QRcode (or QRcode.vcxproj) with a double click
  4. Add this environment variable (Please refer to your OS documentation for any further indications). If you use Windows : Right click on Computer -> Properties -> Advanced properties -> Environment variables -> Add
    • Name : PATH and its value : PATH_TO_YOUR_PROJECT\QRcode\dll\mosquitto; PATH_TO_YOUR_PROJECT\QRcode\dll\opencv\build\x86\v12\bin

Configuration & Installation from Ensimag github repository

Setting up the project

  1. Download the project from our Github repository Github
  2. Download and install Visual Studio (we used the 2013 version)
  3. Launch CanonBall\QRCode\QRcode.vcxproj with a double click
  4. Adding the includes
    • Add these 3 environment variables (Please refer to your OS documentation for any further indications). If you use Windows : Right click on Computer -> Properties -> Advanced properties -> Environment variables -> Add
      • CANNON_BALL path_to_your_cannon_ball_project
      • PATH $(CANNON_BALL)\QRcode\dll\mosquitto
      • PATH $(CANNON_BALL)\QRcode\dll\opencv\build\x86\v12\bin
    • In Visual Studio :
      • Add the include path : Right click on CannonBall project (Solution Explorer panel) -> Properties -> C/C++ -> Additional Include Directories : $(CANNON_BALL)\QRcode\include\opencv;$(CANNON_BALL)\QRcode\include
      • Add the include path : Right click on CannonBall project (Solution Explorer panel) -> Properties -> C/C++ -> Additional #using Directories : C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral. Please ensure that the path to Windows.pltfiurmd and windows.h is correct through windows explorer
      • Add the include path : Right click on CannonBall project (Solution Explorer panel) -> Properties -> Linker -> General -> Additional Library Directories : $(CANNON_BALL)\QRcode\lib\opencv;$(CANNON_BALL)\QRcode\lib
      • Add the include path : Right click on CannonBall project (Solution Explorer panel) -> Properties -> Linker -> Input -> Additional Dependencies :


opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
mosquittopp.lib
mosquitto.lib


Règles d'utilisations :


Aller dans le dossier Mosquitto/subscribe/ et lancer en ligne de commande le script Launch.bat qui se charge de lancer les processus : MongoDB (pour la BD), Moquitto Broker (pour la diffusion des messages), Server (pour la visualisation des données sur l'adresse localhost:1337)

Puis lancer le programme main :

  • à travers VS2013 : faite un CRTL-F5 qui est un raccourci pour la compilation et le lancement du programme
  • en ligne de commande : CannonBall.exe <arguements...>


Logiciel utilitaires conseillés :


  • CygWin ( optionnal : pour ceux qui sont familier avec un environnement linux, un peu long à installer sans oublier les modules tels que git, ...)
  • Notepadd++ (optionnal)
  • Visual Studio 2013
  • Git (version 1.9.5 bref la plus récente)
  • Nodejs (v0.10.36) + mongodb + mosquitto (broker) sont fournis dans le dossier Mosquitto/subscriber/ mais si ces executable se sont pas compatible avec votre architecture ou version windows je vous laisse télécharger celle qui conviendra, l'installer et récupérer les différents exécutables de C:\Program File\...


Foire aux bugs courants :


IMPORTANT : un changement d'une variable d'environnement système tel que la variable "PATH" vers les .dll peut nécessiter un redémarrage, car il est chargé au démarrage du système.

  • Au lancement du programme si une fenêtre de selection de webcam apparaît, cela est lié au fait que opencv ne s'adresse pas directement à la bonne caméra. Il faut aller dans le fichier main_config.xml et modifier la valeur de l'attribut video_capurer="0" (de la balise <Opencv>). Essayer toutes les combinaisons de 0 à 9.
  • Au lancement du programme si une erreur apparait c'est très certainement dû à un problème de path vers les fichiers .dll. Revérifier que la variable d'environnement Path (système et NON user) contient le chemin vers ...\dll\mosquitto et ...\dll\opencv...
  • Si la fenêtre (de nom : in) de la camera se fige c'est qu'il y a eu une erreur dans la vérification des instructions envoyées à la carte Arduino.
  • Si La led L (sur la carte Arduino est allumé) est allumée c'est que l'arduino est passée en état d'urgence (faute de n'avoir reçu de données de la tablette en un temps imparti). Relancer le programme main pour la faire sortir de cet état.