Coder Social home page Coder Social logo

franklinselva / nanoslam Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eth-pbl/nanoslam

0.0 0.0 0.0 69.29 MB

NanoSLAM: Enabling Fully Onboard SLAM for Tiny Robots

License: GNU General Public License v3.0

C 99.06% Game Maker Language 0.06% Makefile 0.11% HTML 0.73% Roff 0.04%

nanoslam's Introduction

Contributors Forks Stargazers Issues License

NanoSLAM: Enabling Fully Onboard SLAM for Tiny Robots

Authors: Vlad Niculescu, Tommaso Polonelli, Michele Magno, Luca Benini

Corresponding author: Vlad Niculescu [email protected]

About the Project

Perceiving and mapping the surroundings are essential for autonomous navigation in any robotic platform. The algorithm class that enables accurate mapping while correcting the odometry errors present in most robotics systems is Simultaneous Localization and Mapping (SLAM). Today, fully onboard mapping is only achievable on robotic platforms that can host high-wattage processors, mainly due to the significant computational load and memory demands required for executing SLAM algorithms. For this reason, pocket-size hardware-constrained robots offload the execution of SLAM to external infrastructures. To address the challenge of enabling SLAM algorithms on resource-constrained processors, this paper proposes NanoSLAM, a lightweight and optimized end-to-end SLAM approach specifically designed to operate on centimeter-size robots at a power budget of only 87.9 mW. We demonstrate the mapping capabilities in real-world scenarios and deploy NanoSLAM on a nano-drone weighing 44 g and equipped with a novel commercial RISC-V low-power parallel processor called GAP9. The algorithm, designed to leverage the parallel capabilities of the RISC-V processing cores, enables mapping of a general environment with an accuracy of 4.5 cm and an end-toend execution time of less than 250 ms.

Demonstration Video

Our video briefly explains how our system works and showcases NanoSLAM operating onboard a 44 g nano-drone. Video available here.

Publications

If you use NanoSLAM in an academic or industrial context, please cite the following publication:

@article{niculescu2023nanoslam,
  title={NanoSLAM: Enabling Fully Onboard SLAM for Tiny Robots},
  author={Niculescu, Vlad and Polonelli, Tommaso and Magno, Michele and Benini, Luca},
  journal={IEEE Internet of Things Journal},
  year={2023},
  publisher={IEEE}
}

Getting Started

This work was developed using the following hardware setup:

  • The commercial nano-drone platform Crazyflie 2.1
  • The GAP9 parallel processor developed by Greenwaves Technologies and interfaced with our drone using the PCB introduced in this work
  • Our custom deck provided in this repo (quad-tof-deck/) which features four VL53L5CX sensors
  • The commercial Flow-Deck v2

Your Image Description

Building and Flashing the Software

  1. Clone this repository:git clone [email protected]:ETH-PBL/NanoSLAM.git
  2. Build and flash the STM32 MCU following the instructions from here
  3. Build and flash the GAP9 SoC following the instructions from here

Running the code on GAP9 is required every time the drone boots. After the steps above are performed, the mission can started by:

  1. Connect to the drone using the Crazyflie Client (can be installed from here)
  2. Go to the Parameters tab
  3. Set the parameter cmds.ready to 1

Coming Soon

We understand that replicating our setup is non-trivial and we want to allow more users to use our code. Therefore, we will soon release a version of NanoSLAM that runs on a computer in C or through a Python binding. In this way, the NanoSLAM will be easy to integrate within other projects or even ported to embedded computers such as Xavier or Jetson. While the parallelization advantages offered by the GAP9 will be lost, it should still be faster compared to many existing alternatives.

nanoslam's People

Contributors

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