Skip to content

Commit b6c2340

Browse files
authored
Merge pull request #10 from beehive-lab/doc/README
Doc/readme
2 parents 19ff4eb + 5e1e143 commit b6c2340

File tree

5 files changed

+167
-18
lines changed

5 files changed

+167
-18
lines changed

README.md

+167-13
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,70 @@
1-
# README #
1+
# KFusion-TornadoVM #
22

3-
Tornado implementation of Kfusion.
3+
A Java implementation of the Kinect Fusion application running on TornadoVM.<br>
4+
It can run on existing datasets as well as in real-time with input frames from an attached RBG-d camera.<br>
5+
Detailed explanation and performance evaluation can be found in the following [publication](https://www.researchgate.net/publication/327097904_Exploiting_High-Performance_Heterogeneous_Hardware_for_Java_Programs_using_Graal).
46

5-
## Quickstart ##
7+
### Releases
8+
* KFusion-TornadoVM 0.1.0 - 11/02/2019: Initial release of Kinect Fusion on TornadoVM.
9+
10+
## Output ##
611

7-
First, install [Tornado](https://github.com/beehive-lab/Tornado).
8-
Instructions in [Tornado-INSTALL](https://github.com/beehive-lab/Tornado/blob/master/INSTALL.md)
12+
If you enable the GUI while running KFusion you will see a real-time 3D space reconstruction similar to the image below:
913

10-
When it is installed, then install, from Tornado workspace, all Tornado JAR files locally by running:
14+
![KFusion GUI output](doc/images/kfusion-gui-output.png)
15+
16+
In addition, you will see output text with performance metrics across the frames that KFusion processes:
17+
```bash
18+
19+
: Reading configuration file: /home/juanfumero/.kfusion_tornado/living_room_traj2_loop.raw
20+
frame acquisition preprocessing tracking integration raycasting rendering computation total X Y Z tracked integrated
21+
0 0.006214 0.003313 0.016029 0.027997 0.000000 0.001509 0.047339 0.055061 0.000000 0.000000 0.000000 0 1
22+
1 0.000499 0.000389 0.002222 0.000608 0.000000 0.000000 0.003220 0.003719 0.000000 0.000000 0.000000 0 1
23+
2 0.000409 0.000418 0.002108 0.000618 0.000000 0.000000 0.003144 0.003554 0.000000 0.000000 0.000000 0 1
24+
3 0.000584 0.000431 0.003003 0.000593 0.000552 0.000000 0.004579 0.005163 0.000000 0.000000 0.000000 0 1
25+
4 0.000665 0.000422 0.013228 0.000599 0.000369 0.000310 0.014618 0.015592 -0.004392 0.001433 0.000935 1 1
26+
5 0.000669 0.000428 0.010570 0.000000 0.000328 0.000000 0.011327 0.011997 -0.002838 0.001069 0.000069 1 0
27+
6 0.000503 0.000819 0.008678 0.000500 0.000282 0.000000 0.010279 0.010782 -0.003065 0.000643 0.000358 1 1
28+
7 0.000390 0.000385 0.008401 0.000000 0.000282 0.000000 0.009068 0.009458 -0.004313 0.000814 0.000219 1 0
29+
8 0.000393 0.000404 0.008534 0.000521 0.000278 0.000218 0.009737 0.010349 -0.006335 0.000110 0.000249 1 1
30+
9 0.000408 0.000430 0.008646 0.000000 0.000282 0.000000 0.009358 0.009767 -0.006186 0.001268 0.000844 1 0
31+
10 0.000405 0.000426 0.008429 0.000489 0.000275 0.000000 0.009619 0.010024 -0.006891 0.000413 0.001533 1 1
32+
11 0.000401 0.000411 0.008062 0.000000 0.000280 0.000000 0.008754 0.009155 -0.006813 0.000033 0.000730 1 0
33+
12 0.000390 0.000395 0.008920 0.000443 0.000251 0.000171 0.010009 0.010570 -0.010175 -0.000084 0.001281 1 1
34+
13 0.000402 0.000416 0.007218 0.000001 0.000258 0.000000 0.007893 0.008295 -0.009811 0.000769 0.000688 1 0
35+
14 0.000399 0.000420 0.007756 0.000482 0.000258 0.000000 0.008917 0.009316 -0.013333 0.002164 0.001499 1 1
36+
15 0.000388 0.000382 0.007120 0.000000 0.000268 0.000000 0.007771 0.008159 -0.012245 0.000490 0.000430 1 0
37+
16 0.000399 0.000401 0.009142 0.000456 0.000239 0.000173 0.010238 0.010810 -0.014947 -0.001196 -0.001099 1 1
38+
17 0.000401 0.000404 0.006973 0.000000 0.000233 0.000000 0.007611 0.008012 -0.016376 -0.000913 -0.000052 1 0
39+
18 0.000391 0.000386 0.006937 0.000417 0.000231 0.000000 0.007970 0.008362 -0.017928 -0.000768 -0.000490 1 1
40+
19 0.000401 0.000408 0.007243 0.000001 0.000225 0.000000 0.007877 0.008278 -0.021001 -0.002088 -0.000866 1 0
41+
20 0.000394 0.000382 0.010141 0.000429 0.000235 0.000179 0.011186 0.011759 -0.023981 -0.001167 -0.000530 1 1
42+
21 0.000396 0.000399 0.010814 0.000000 0.000281 0.000000 0.011494 0.011890 -0.029775 -0.002021 -0.000998 1 0
43+
22 0.000400 0.000435 0.010194 0.000408 0.000230 0.000000 0.011267 0.011668 -0.029229 -0.002887 -0.002649 1 1
44+
23 0.000400 0.000379 0.006345 0.000000 0.000211 0.000000 0.006935 0.007335 -0.037086 -0.001378 -0.003249 1 0
45+
24 0.000389 0.000371 0.008876 0.000400 0.000208 0.000146 0.009855 0.010390 -0.038548 0.000073 -0.004010 1 1
46+
25 0.000395 0.000355 0.007435 0.000000 0.000225 0.000000 0.008015 0.008410 -0.044477 -0.001502 -0.003109 1 0
47+
26 0.000438 0.000527 0.006604 0.000402 0.000211 0.000000 0.007743 0.008181 -0.049905 -0.002186 -0.005354 1 1
48+
27 0.000388 0.000353 0.008214 0.000000 0.000217 0.000000 0.008783 0.009171 -0.054897 -0.000643 -0.005688 1 0
49+
28 0.000385 0.000355 0.007154 0.000397 0.000220 0.000146 0.008126 0.008656 -0.060497 -0.000229 -0.008392 1 1
50+
29 0.000386 0.000351 0.007138 0.000000 0.000223 0.000000 0.007711 0.008097 -0.069908 -0.000972 -0.006402 1 0
51+
...
52+
Summary: time=6.50, frames=882, FPS=135.79
53+
```
54+
55+
## How to start? ##
56+
57+
This implementation runs on TornadoVM to achieve GPU acceleration and real-time performance.
58+
Hence, you need to install [Tornado](https://github.com/beehive-lab/Tornado) following the instructions from [Tornado-INSTALL](https://github.com/beehive-lab/Tornado/blob/master/INSTALL.md)
59+
60+
After you successfully build Tornado, then issue the following commands to install locally its JAR files:
1161

1262
```bash
1363
$ cd path/to/tornado
14-
$ tornadoLocalInstallMaven
64+
$ ./tornadoLocalInstallMaven
1565
```
1666

17-
Now you can install KFusion-Tornado:
67+
Finally, you can install KFusion-TornadoVM by issuing the following commands:
1868

1969

2070
```bash
@@ -26,21 +76,125 @@ export TORNADO_ROOT=/path/to/tornado
2676
export PATH="${PATH}:${TORNADO_ROOT}/bin/bin/"
2777
export TORNADO_SDK=${TORNADO_ROOT}/bin/sdk
2878

29-
## Compile and run kfusion-tornado
79+
## Compile and run KFusion-TornadoVM
3080
$ mvn clean install -DskipTests
3181

32-
## Run KFusion-Tornado GUI
82+
## Run KFusion-TornadoVM GUI
3383
$ kfusion kfusion.tornado.GUI
3484

3585
## Run Benchmarking mode
3686
$ kfusion kfusion.tornado.Benchmark <config file>
3787
```
3888

39-
Example:
89+
## How to get the datasets?
90+
91+
KFusion-Tornado uses the [ICL-NUIM](https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html) datasets.<br>
92+
We provide a script to automatically download and compose the video files in `raw` format. <br>
93+
Alternatively, when running the Java program (KFusion-TornadoVM) the first time, it will download the corresponding video raw-file and install it locally.
94+
95+
### Option a) Automatically
96+
97+
The first time you run the application and if the raw file is not installed locally (`~/.kfusion_tornado`), then the program will ask you if you want to download it auotmatically:
98+
4099
```bash
41-
$ kfusion kfusion.java.Benchmark conf/bm-traj2.settings
100+
$ kfusion kfusion.tornado.Benchmark conf/bm-traj3.settings
101+
KFussion Accelerated with Tornado
102+
: Reading configuration file: /home/juan/.kfusion_tornado/living_room_traj3_loop.raw
103+
Data Set file does not exist. Do you want to download it automatically? (~2GB)
104+
Press [yes/no] (default: yes) :
105+
```
106+
107+
### Option b) Manually
108+
109+
Run the `downloadDataSets.sh <url> <fileName>`, for example:
110+
111+
```bash
112+
$ bash downloadDataSets.sh http://www.doc.ic.ac.uk/~ahanda/living_room_traj2_loop.tgz living_room_traj2_loop.raw
113+
```
114+
115+
## Running KFusion-Tornado ##
116+
117+
KFusion can run in two modes receiving input from:
118+
119+
1) RGB-d camera where you select the input source from the drop-down menu:
120+
```bash
121+
## Run KFusion-Tornado GUI
122+
$ kfusion kfusion.tornado.GUI
42123
```
43124

125+
2) Pre-defined datasets again through the GUI selection or:
126+
```bash
127+
## Run KFusion-Tornado GUI
128+
$ kfusion kfusion.tornado.Benchmark <config file>
129+
```
130+
In our examples, we use images from the [ICL-NUIM](https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html) dataset which will be downloaded automatically when issuing the following command:
131+
132+
```bash
133+
$ kfusion kfusion.java.Benchmark conf/bm-traj2.settings
134+
```
44135

45136
Note:
46-
* sample configuration files from SLAMBench are under the `conf/` directory.
137+
* Sample configuration files are under the `conf/` directory.
138+
139+
140+
141+
## Selected Publications
142+
143+
* James Clarkson, Juan Fumero, Michalis Papadimitriou, Foivos S. Zakkak, Maria Xekalaki, Christos Kotselidis, Mikel Luján (The University of Manchester). **Exploiting High-Performance Heterogeneous Hardware for Java Programs using Graal**. *Proceedings of the 15th International Conference on Managed Languages & Runtime.* [preprint](https://www.researchgate.net/publication/327097904_Exploiting_High-Performance_Heterogeneous_Hardware_for_Java_Programs_using_Graal)
144+
145+
* Sajad Saeedi, Bruno Bodin, Harry Wagstaff, Andy Nisbet, Luigi Nardi, John Mawer, Nicolas Melot, Oscar Palomar, Emanuele Vespa, Tom Spink, Cosmin Gorgovan, Andrew Webb, James Clarkson, Erik Tomusk, Thomas Debrunner, Kuba Kaszyk, Pablo Gonzalez-de-Aledo, Andrey Rodchenko, Graham Riley, Christos Kotselidis, Björn Franke, Michael FP O'Boyle, Andrew J Davison, Paul HJ Kelly, Mikel Luján, Steve Furber. **Navigating the Landscape for Real-Time Localization and Mapping for Robotics and Virtual and Augmented Reality.** In Proceedings of the IEEE, 2018.
146+
147+
* C. Kotselidis, J. Clarkson, A. Rodchenko, A. Nisbet, J. Mawer, and M. Luján. **Heterogeneous Managed Runtime Systems: A Computer Vision Case Study.** In Proceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, VEE ’17, [link](https://dl.acm.org/citation.cfm?doid=3050748.3050764)
148+
149+
### Citation
150+
151+
Please use the following citation if you use Tornado in your work.
152+
153+
```bibtex
154+
@inproceedings{Clarkson:2018:EHH:3237009.3237016,
155+
author = {Clarkson, James and Fumero, Juan and Papadimitriou, Michail and Zakkak, Foivos S. and Xekalaki, Maria and Kotselidis, Christos and Luj\'{a}n, Mikel},
156+
title = {{Exploiting High-performance Heterogeneous Hardware for Java Programs Using Graal}},
157+
booktitle = {Proceedings of the 15th International Conference on Managed Languages \& Runtimes},
158+
series = {ManLang '18},
159+
year = {2018},
160+
isbn = {978-1-4503-6424-9},
161+
location = {Linz, Austria},
162+
pages = {4:1--4:13},
163+
articleno = {4},
164+
numpages = {13},
165+
url = {http://doi.acm.org/10.1145/3237009.3237016},
166+
doi = {10.1145/3237009.3237016},
167+
acmid = {3237016},
168+
publisher = {ACM},
169+
address = {New York, NY, USA},
170+
keywords = {Java, graal, heterogeneous hardware, openCL, virtual machine},
171+
}
172+
```
173+
174+
## Acknowledgments
175+
176+
This work was initially supported by the EPSRC grants [PAMELA EP/K008730/1](http://apt.cs.manchester.ac.uk/projects/PAMELA/) and [AnyScale Apps EP/L000725/1](http://anyscale.org), and now it is funded by the [EU Horizon 2020 E2Data 780245](https://e2data.eu) and the [EU Horizon 2020 ACTiCLOUD 732366](https://acticloud.eu) grants.
177+
178+
## Collaborations
179+
180+
For academic collaborations please contact [Christos Kotselidis](https://www.kotselidis.net).
181+
182+
183+
## Users Mailing list
184+
185+
A mailing list is also available to discuss Tornado related issues:
186+
187+
188+
189+
## Contributors
190+
191+
This work was originated by James Clarkson and it is currently maintained by:
192+
193+
* [Juan Fumero](https://jjfumero.github.io/)
194+
* [Michail Papadimitriou](https://mikepapadim.github.io)
195+
* [Maria Xekalaki](https://github.com/mairooni)
196+
* [Christos Kotselidis](https://www.kotselidis.net)
197+
198+
## License
199+
200+
The work is published under the Apache 2.0 license: [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

doc/images/kfusion-gui-output.png

279 KB
Loading

optirun.sh

-3
This file was deleted.

var/results/2018-03-03-18:49/bm-traj2-results-michalis-XPS-15-9560.csv

-1
This file was deleted.

var/results/2018-03-03-18:49/kfusion.flags

-1
This file was deleted.

0 commit comments

Comments
 (0)