Difference between revisions of "Project 2014-2015-CannonBall/developer guide"
Line 70: | Line 70: | ||
** Create a car convoy algorithm. |
** Create a car convoy algorithm. |
||
− | ''Notice that we have been joined with |
+ | ''Notice that we have been joined with by colleague, A.Le Jean and H.Rodriguez.'' |
= What we want to do = |
= What we want to do = |
Revision as of 23:43, 27 January 2015
Preambule
Configuration
Setting up the project
- Download the project from our Github repository Github
- Download and install Visual Studio (we used the 2013 version)
- Launch CanonBall\QRCode\QRcode.vcxproj with a double click
- 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 :
- 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
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
- 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 by 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