A 3D Dense mapping backend library of SLAM based on taichi-Lang designed for the aerial swarm.

Overview

TaichiSLAM

This project is a 3D Dense mapping backend library of SLAM based Taichi-Lang, designed for the aerial swarm.

Intro

Taichi is an efficient domain-specific language (DSL) designed for computer graphics (CG), which can be adopted for high-performance computing on mobile devices. Thanks to the connection between CG and robotics, we can adopt this powerful tool to accelerate the development of robotics algorithms.

In this project, I am trying to take advantages of Taichi, including parallel optimization, sparse computing, advanced data structures and CUDA acceleration. The original purpose of this project is to reproduce dense mapping papers, including Octomap, Voxblox, Voxgraph etc.

Note: This project is only backend of 3d dense mapping. For full SLAM features including real-time state estimation, pose graph optimization, depth generation, please take a look on VINS and my fisheye fork of VINS.

Demos

Octomap/Occupy map at different accuacy: drawing drawing drawing

Truncated signed distance function (TSDF): Surface reconstruct by TSDF (not refined) Occupy map and slice of original TSDF

Usage

Install taichi via pip

pip install taichi

Download taichi_three and TaichiSlAM to your dev folder and add them to PYTHONPATH

git clone https://github.com/taichi-dev/taichi_three
git clone https://github.com/xuhao1/TaichiSLAM

echo export PYTHONPATH=`pwd`/taichi_three:`pwd`/TaichiSLAM:\$PYTHONPATH >> ~/.bashrc
#Or if using zshrc
echo export PYTHONPATH=`pwd`/taichi_three:`pwd`/TaichiSLAM:\$PYTHONPATH >> ~/.zshrc

Download cow_and_lady_dataset from voxblox.

Running TaichiSLAM octomap demo

python examples/TaichiSLAM_demo.py -b ~/pathto/your/bag/cow_and_lady_dataset.bag

TSDF(Voxblox)

python examples/TaichiSLAM_demo.py -m esdf -b ~/data/voxblox/cow_and_lady_dataset.bag

Use - and = key to change accuacy. Mouse to rotate the map. -h to get more help.

usage: TaichiSLAM_demo.py [-h] [-r RESOLUTION RESOLUTION] [-m METHOD] [-c] [-t] [--rviz] [-p MAX_DISP_PARTICLES] [-b BAGPATH] [-o OCCUPY_THRES] [-s MAP_SIZE MAP_SIZE] [--blk BLK]
                          [-v VOXEL_SIZE] [-K K] [-f] [--record]

Taichi slam fast demo

optional arguments:
  -h, --help            show this help message and exit
  -r RESOLUTION RESOLUTION, --resolution RESOLUTION RESOLUTION
                        display resolution
  -m METHOD, --method METHOD
                        dense mapping method: octo/esdf
  -c, --cuda            enable cuda acceleration if applicable
  -t, --texture-enabled
                        showing the point cloud's texture
  --rviz                output to rviz
  -p MAX_DISP_PARTICLES, --max-disp-particles MAX_DISP_PARTICLES
                        max output voxels
  -b BAGPATH, --bagpath BAGPATH
                        path of bag
  -o OCCUPY_THRES, --occupy-thres OCCUPY_THRES
                        thresold for occupy
  -s MAP_SIZE MAP_SIZE, --map-size MAP_SIZE MAP_SIZE
                        size of map xy,z in meter
  --blk BLK             block size of esdf, if blk==1; then dense
  -v VOXEL_SIZE, --voxel-size VOXEL_SIZE
                        size of voxel
  -K K                  division each axis of octomap, when K>2, octomap will be K**3-map
  -f, --rendering-final
                        only rendering the final state
  --record              record to C code

Roadmap

Paper Reproduction

  • Octomap
  • Voxblox
  • Voxgraph

Features

Mapping

  • Octotree occupancy map
  • TSDF
  • Incremental ESDF
  • Submap
  • Loop Detection

MISC

  • ROS/RVIZ/rosbag interface
  • 3D occupancy map visuallizer
  • 3D TSDF/ESDF map visuallizer
  • Export to C/C++
  • Benchmark

Know issue

Memory issue on ESDF generation, debugging...

LICENSE

LGPL

You might also like...
A list of papers about point cloud based place recognition, also known as loop closure detection in SLAM (processing)

A list of papers about point cloud based place recognition, also known as loop closure detection in SLAM (processing)

FLVIS: Feedback Loop Based Visual Initial SLAM
FLVIS: Feedback Loop Based Visual Initial SLAM

FLVIS Feedback Loop Based Visual Inertial SLAM 1-Video EuRoC DataSet MH_05 Handheld Test in Lab FlVIS on UAV Platform 2-Relevent Publication: Under Re

SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019)
SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019)

SuMa++: Efficient LiDAR-based Semantic SLAM This repository contains the implementation of SuMa++, which generates semantic maps only using three-dime

PyTorch wrapper for Taichi data-oriented class

Stannum PyTorch wrapper for Taichi data-oriented class PRs are welcomed, please see TODOs. Usage from stannum import Tin import torch data_oriented =

A fast python implementation of Ray Tracing in One Weekend using python and Taichi
A fast python implementation of Ray Tracing in One Weekend using python and Taichi

ray-tracing-one-weekend-taichi A fast python implementation of Ray Tracing in One Weekend using python and Taichi. Taichi is a simple "Domain specific

for taichi voxel-challange event
for taichi voxel-challange event

Taichi Voxel Challenge Figure: result of python3 example6.py. Please replace the image above (demo.jpg) with yours, so that other people can immediate

An algorithm that handles large-scale aerial photo co-registration, based on SURF, RANSAC and PyTorch autograd.
An algorithm that handles large-scale aerial photo co-registration, based on SURF, RANSAC and PyTorch autograd.

An algorithm that handles large-scale aerial photo co-registration, based on SURF, RANSAC and PyTorch autograd.

Pacman-AI - AI project designed by UC Berkeley. Designed reflex and minimax agents for the game Pacman.
Pacman-AI - AI project designed by UC Berkeley. Designed reflex and minimax agents for the game Pacman.

Pacman AI Jussi Doherty CAP 4601 - Introduction to Artificial Intelligence - Fall 2020 Python version 3.0+ Source of this project This repo contains a

This package is for running the semantic SLAM algorithm using extracted planar surfaces from the received detection
This package is for running the semantic SLAM algorithm using extracted planar surfaces from the received detection

Semantic SLAM This package can perform optimization of pose estimated from VO/VIO methods which tend to drift over time. It uses planar surfaces extra

Comments
  • error of module 'tina' has no attribute 'Scene'

    error of module 'tina' has no attribute 'Scene'

    error of module 'tina' has no attribute 'Scene'

    When i follow the usage to the "Running TaichiSLAM octomap demo" ,i got error's as below:

    lll@lll-u18:~/test/taichi/TaichiSLAM$ python3 -V
    Python 3.6.9
    lll@lll-u18:~/test/taichi/TaichiSLAM$ python3 TaichiSLAM_demo.py -b /media/lll/B2/TaichiSLAM/cow_and_lady_dataset.bag
    [Taichi] mode=release
    [Taichi] preparing sandbox at /tmp/taichi-rfhmiw0f
    [Taichi] version 0.7.13, llvm 10.0.0, commit 26bda350, linux, python 3.6.9
    [Tina] version 0.1.1
    [Tina] Taichi properties hacked
    Res [1024x768] GPU False RVIZ False size of map [100, 10] grid 0.05
    [Taichi] Starting on arch=x64
    Traceback (most recent call last):
      File "TaichiSLAM_demo.py", line 132, in <module>
        scene = tina.Scene(RES_X, RES_Y, bgcolor=(0.1, 0.1, 0.1))
    AttributeError: module 'tina' has no attribute 'Scene'
    lll@lll-u18:~/test/taichi/TaichiSLAM$ python3
    Python 3.6.9 (default, Dec  8 2021, 21:08:43)
    [GCC 8.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tina
    [Tina] version 0.1.1
    [Taichi] mode=release
    [Taichi] preparing sandbox at /tmp/taichi-lvzsn6lt
    [Taichi] version 0.7.13, llvm 10.0.0, commit 26bda350, linux, python 3.6.9
    [Tina] Taichi properties hacked
    >>>
    

    As you see, i setup the taichi package of 0.7.13 version. because i got error by defaut version, when i import tina,and changed to 0.7.13 . But, i still got error says"AttributeError: module 'tina' has no attribute 'Scene'",even i can import tina.

    So, what is the requirements of this repo,or what versions of python, taichi, tina is recommend?

    thanks.

    opened by lll-j 2
  • GLFW Error 65537: The GLFW library is not initialized

    GLFW Error 65537: The GLFW library is not initialized

    raise type(e)('\n' + str(e)) from None taichi.lang.exception.TaichiSyntaxError: File "D:\TaichiSLAM\tests/..\taichi_slam\mapping\topo_graph.py", line 403, in add_mesh: self.tri_colors[facelet_idx*3 + j][3] = ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Static assign cannot be used on elements in arrays GLFW Error 65537: The GLFW library is not initialized

    opened by hotbbsun 0
Owner
XuHao
PhD student @ HKUST.UAV http://www.xuhao1.me Check my swarm projects on https://github.com/HKUST-Swarm
XuHao
Aerial Imagery dataset for fire detection: classification and segmentation (Unmanned Aerial Vehicle (UAV))

Aerial Imagery dataset for fire detection: classification and segmentation using Unmanned Aerial Vehicle (UAV) Title FLAME (Fire Luminosity Airborne-b

null 79 Jan 6, 2023
A Planar RGB-D SLAM which utilizes Manhattan World structure to provide optimal camera pose trajectory while also providing a sparse reconstruction containing points, lines and planes, and a dense surfel-based reconstruction.

ManhattanSLAM Authors: Raza Yunus, Yanyan Li and Federico Tombari ManhattanSLAM is a real-time SLAM library for RGB-D cameras that computes the camera

null 117 Dec 28, 2022
COVINS -- A Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping

COVINS -- A Framework for Collaborative Visual-Inertial SLAM and Multi-Agent 3D Mapping Version 1.0 COVINS is an accurate, scalable, and versatile vis

ETHZ V4RL 183 Dec 27, 2022
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021

SSL_SLAM2 Lightweight 3-D Localization and Mapping for Solid-State LiDAR (Intel Realsense L515 as an example) This repo is an extension work of SSL_SL

Wang Han 王晗 1.3k Jan 8, 2023
PaddleRobotics is an open-source algorithm library for robots based on Paddle, including open-source parts such as human-robot interaction, complex motion control, environment perception, SLAM positioning, and navigation.

简体中文 | English PaddleRobotics paddleRobotics是基于paddle的机器人开源算法库集,包括人机交互、复杂运动控制、环境感知、slam定位导航等开源算法部分。 人机交互 主动多模交互技术TFVT-HRI 主动多模交互技术是通过视觉、语音、触摸传感器等输入机器人

null 185 Dec 26, 2022
Image Lowpoly based on Centroid Voronoi Diagram via python-opencv and taichi

CVTLowpoly: Image Lowpoly via Centroid Voronoi Diagram Image Sharp Feature Extraction using Guide Filter's Local Linear Theory via opencv-python. The

Pupa 4 Jul 29, 2022
A research toolkit for particle swarm optimization in Python

PySwarms is an extensible research toolkit for particle swarm optimization (PSO) in Python. It is intended for swarm intelligence researchers, practit

Lj Miranda 1k Dec 30, 2022
Implemented fully documented Particle Swarm Optimization algorithm (basic model with few advanced features) using Python programming language

Implemented fully documented Particle Swarm Optimization (PSO) algorithm in Python which includes a basic model along with few advanced features such as updating inertia weight, cognitive, social learning coefficients and maximum velocity of the particle.

null 9 Nov 29, 2022
Meta graph convolutional neural network-assisted resilient swarm communications

Resilient UAV Swarm Communications with Graph Convolutional Neural Network This repository contains the source codes of Resilient UAV Swarm Communicat

null 62 Dec 6, 2022
Racing line optimization algorithm in python that uses Particle Swarm Optimization.

Racing Line Optimization with PSO This repository contains a racing line optimization algorithm in python that uses Particle Swarm Optimization. Requi

Parsa Dahesh 6 Dec 14, 2022