├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Computer Systems Lab - University of Thessaly 4 | 5 | Authors are: 6 | - Gkeka Maria Rafaela 7 | - Patras Alexandros 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KinectFusion-FPGA 2 | 3 | This repository contains our MPSoC FPGA configurations for KinectFusion SLAM (Simultaneous Localization and Mapping) algorithm. Our work introduces and evaluates a plethora of designs, featuring a variety of precise and approximate optimizations, to highlight the interplay between SLAM performance and accuracy. 4 | 5 | Repository branches: 6 | * sw-only: unoptimized baseline implementation running on ARM with OpenMP (```THREAD_NUMBER := 4```) 7 | * baselineHW: unoptimized baseline HW implementation (one HW accelerator for each one of the Bilateral Filter, Tracking, Integration kernels) 8 | * Conf1: HW implementation which uses the 5 most impactful (precise) optimizations 9 | * fastest_precise: HW implementation which uses all the precise optimizations 10 | * Conf2: HW implementation which uses the 15 most impactful optimizations 11 | * fastest_approx: HW implementation which achieves the best performance (27.5 FPS) 12 | ## Paper 13 | 14 | Maria Rafaela Gkeka, Alexandros Patras, Christos D. Antonopoulos, Spyros Lalis, Nikolaos Bellas. FPGA Architectures for Approximate Dense SLAM Computing. Design, Automation & Test in Europe Conference & Exhibition, (DATE), February 1-5, 2021, Grenoble, France. 15 | 16 | ## Usage 17 | Vitis™ Unified Software Platform was used to run our experiments on Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit. If you wish to build and run on an Alveo™ card you must make the necessary changes. 18 | 19 | ### Requirements for the build environment 20 | 1. [Vitis™ Unified Software Platform 2019.2](https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis/2019-2.html) 21 | 2. [Vitis™ Embedded Platform with DFX 2019.2 or 2020.1](https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-platforms/2019-2.html) 22 | 3. PetaLinux 2019.2 Sysroot directory for aarch32/aarch64 architectures - [Link](https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/2019-2.html) 23 | 4. Xilinx Runtime (for software emulation on x86 or Alveo™ cards) - [https://github.com/Xilinx/XRT](https://github.com/Xilinx/XRT) 24 | 25 | Please consult Xilinx documentation for more detailed information. 26 | 27 | ### Requirements for the embedded platform 28 | An embedded platform that runs PetaLinux with enabled XRT and OpenCL support. Check this [repository](https://github.com/Xilinx/Vitis_Embedded_Platform_Source) for more information. 29 | 30 | ### Build 31 | There is a Makefile included that automates the build process for the ZCU102 board. It is based on makefiles provided in [Xilinx Vitis Acceleration Examples](https://github.com/Xilinx/Vitis_Accel_Examples/tree/2019.2). You can make changes to the Makefile according to your setup. 32 | 33 | Commands to build for ZCU102: 34 | 1. `make bin DEVICE=zcu102_base_dfx` 35 | 2. `make exe HOST_ARCH=aarch64 SYSROOT=` 36 | 37 | The results are created inside `xclbin` directory. Software binary is named `host` and the hardware binary `.hw.xclbin`. 38 | 39 | ### Run 40 | For our experiments we use the living-room trajectory 2 [ICL-NUIM dataset](https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html). We create the `.raw` format using the `scene2raw.cpp` program of the slambench1 repo. Depending on the input trajectory you must provide the necessary arguments. For instance, to run trajectory 2 (using the default parameters) you must type the command: 41 | 42 | `./host -i living_room_traj2_loop.raw -s 4.8 -p 0.34,0.5,0.24 -z 4 -c 2 -r 1 -k 481.2,480,320,240 -o output.log -x hwKernels.hw.xclbin` 43 | 44 | ### Get in Touch 45 | 46 | If you would like to ask questions, report bugs or collaborate on research projects, please email any of the following: 47 | 48 | - Maria Gkeka (margkeka at uth dot gr) 49 | - Alexandros Patras (patras at uth dot gr) 50 | 51 | For more information for our laboratory visit [https://csl.e-ce.uth.gr](https://csl.e-ce.uth.gr) 52 | 53 | ## License 54 | 55 | [MIT](https://choosealicense.com/licenses/mit/) 56 | 57 | We note that we use code from [SLAMBench1](https://github.com/pamela-project/slambench1) and [TooN library](https://github.com/edrosten/TooN) repositories, which each one retains its original license. 58 | * slambench1 copyright MIT 59 | * TooN copyright 2-Clause BSD (The original license file also exists on /lib/TooN) 60 | --------------------------------------------------------------------------------