GithubHelp home page GithubHelp logo

kinectfusion-fpga's Introduction

KinectFusion-FPGA

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.

Repository branches:

  • sw-only: unoptimized baseline implementation running on ARM with OpenMP (THREAD_NUMBER := 4)
  • baselineHW: unoptimized baseline HW implementation (one HW accelerator for each one of the Bilateral Filter, Tracking, Integration kernels)
  • Conf1: HW implementation which uses the 5 most impactful (precise) optimizations
  • fastest_precise: HW implementation which uses all the precise optimizations
  • Conf2: HW implementation which uses the 15 most impactful optimizations
  • fastest_approx: HW implementation which achieves the best performance (27.5 FPS)

Paper

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.

Usage

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.

Requirements for the build environment

  1. Vitis™ Unified Software Platform 2019.2
  2. Vitis™ Embedded Platform with DFX 2019.2 or 2020.1
  3. PetaLinux 2019.2 Sysroot directory for aarch32/aarch64 architectures - Link
  4. Xilinx Runtime (for software emulation on x86 or Alveo™ cards) - https://github.com/Xilinx/XRT

Please consult Xilinx documentation for more detailed information.

Requirements for the embedded platform

An embedded platform that runs PetaLinux with enabled XRT and OpenCL support. Check this repository for more information.

Build

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. You can make changes to the Makefile according to your setup.

Commands to build for ZCU102:

  1. make bin DEVICE=zcu102_base_dfx
  2. make exe HOST_ARCH=aarch64 SYSROOT=<path/to/sysroots/aarch64-xilinx-linux>

The results are created inside xclbin directory. Software binary is named host and the hardware binary <name>.hw.xclbin.

Run

For our experiments we use the living-room trajectory 2 ICL-NUIM dataset. 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:

./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

Get in Touch

If you would like to ask questions, report bugs or collaborate on research projects, please email any of the following:

  • Maria Gkeka (margkeka at uth dot gr)
  • Alexandros Patras (patras at uth dot gr)

For more information for our laboratory visit https://csl.e-ce.uth.gr

License

MIT

We note that we use code from SLAMBench1 and TooN library repositories, which each one retains its original license.

  • slambench1 copyright MIT
  • TooN copyright 2-Clause BSD (The original license file also exists on /lib/TooN)

kinectfusion-fpga's People

Contributors

csl-uth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.