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

From air
Jump to navigation Jump to search
Line 46: Line 46:
 
* The idea of using a rasberry pi for images processing was put away because of a lack of cpu power. Pour se donner un ordre d'idée le core i3 de la tablette Lenovo Thinkpad ....a ajouter des chiffre par rapport à la tablette
 
* The idea of using a rasberry pi for images processing was put away because of a lack of cpu power. 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.
+
* The idea of using a raspberry pi to broadcast the video stream to a local server and processing it by a another machine is not conceivable because of the transmission latency of the stream. To give an order of magnitude if the latency is ~1 second, a car at 30 km/h would carry ~8.3 m before the second machine performs its processing.
   
- 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
+
* The idea of using a mini and compact tower (example: GB-XM1-3537) is interesting but the absence of in board batteries makes it dependente to a 220 Volts source power.
   
  +
* The idea of using a phone is interesting because of the richness and accuracy of the sensors (accelerometer, gyroscope, ...). Especially if it has a Tegra type processor, offering greater processing performance. Notice that an simple ARM processor would not do it.
- 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.
 
  +
Moreover a phone is small and has onboard battery.
Taille réduite, batterie embarquée.
 
  +
The main concern of our predecessor was that external cameras were not supported on android system. -> We will check on this what was was true a year ago, might be wrong now.
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 =
 
= Technologies chosen =

Revision as of 23:39, 27 January 2015

Preambule

Configuration

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

Technology watch

http://www.mindmeister.com/fr/172030358/la-boite-outils-du-veilleur-2-0

  • The idea of using a rasberry pi for images processing was put away because of a lack of cpu power. Pour se donner un ordre d'idée le core i3 de la tablette Lenovo Thinkpad ....a ajouter des chiffre par rapport à la tablette
  • The idea of using a raspberry pi to broadcast the video stream to a local server and processing it by a another machine is not conceivable because of the transmission latency of the stream. To give an order of magnitude if the latency is ~1 second, a car at 30 km/h would carry ~8.3 m before the second machine performs its processing.
  • The idea of using a mini and compact tower (example: GB-XM1-3537) is interesting but the absence of in board batteries makes it dependente to a 220 Volts source power.
  • The idea of using a phone is interesting because of the richness and accuracy of the sensors (accelerometer, gyroscope, ...). Especially if it has a Tegra type processor, offering greater processing performance. Notice that an simple ARM processor would not do it.

Moreover a phone is small and has onboard battery. The main concern of our predecessor was that external cameras were not supported on android system. -> We will check on this what was was true a year ago, might be wrong now.

Technologies chosen

  • We keep MongoBD database because it offers high write performance and that it is scalable.
  • 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 between the client and the server
    • mqtt for a subscribe/pusblish protocol
    • mongoose for manipulating the MongoDB database from JavaScript
  • We keep arUco library which we judge to be powerful enough to our requirements. Plus, it is based on opencv library.

What we have to accomplish

  • Finish the prototype in order to be able to present it march 18th, 2015.
    • Redirect the metrics and the webcam stream from the car to any computer accessing to the tablet network
    • Enhance the algorithms of the car.
    • Create a car convoy algorithm.

Notice that we have been joined with two colleague, A.Le Jean and H.Rodriguez.

What we want to do

  • Skip to a Linux environnent with a none proprietary IDE to replace Visual Studio 2013
  • We will stick to C++ language because it is more close of the opencv library which is actually coded in C++ language.

What is expected from us to consider

  • Enhense the moves of the mini car. There are two ways to do so :
    • Add a shield to the uno arduino
    • Replace the arduino with a STM32 card which is already equipped with embedded sensors. MEMS (microelectromechanical sensors including accelerometers, gyroscopes, digital compasses, inertial modules, pressure sensors, humidity sensors and microphones).

The risks

  • Our ability to take over our predecessors' code, and not going back from scratch