Elevation Mapping on GPU.

Overview

Elevation Mapping cupy

Overview

This is a ros package of elevation mapping on GPU.
Code are written in python and uses cupy for GPU calculation.
screenshot

* plane segmentation is coming soon.

Citing

Takahiro Miki, Lorenz Wellhausen, Ruben Grandia, Fabian Jenelten, Timon Homberger, Marco Hutter
Elevation Mapping for Locomotion and Navigation using GPU arXiv

@misc{https://doi.org/10.48550/arxiv.2204.12876,
  doi = {10.48550/ARXIV.2204.12876},
  
  url = {https://arxiv.org/abs/2204.12876},
  
  author = {Miki, Takahiro and Wellhausen, Lorenz and Grandia, Ruben and Jenelten, Fabian and Homberger, Timon and Hutter, Marco},
  
  keywords = {Robotics (cs.RO), FOS: Computer and information sciences, FOS: Computer and information sciences},
  
  title = {Elevation Mapping for Locomotion and Navigation using GPU},
  
  publisher = {arXiv},
  
  year = {2022},
  
  copyright = {arXiv.org perpetual, non-exclusive license}
}

Installation

CUDA & cuDNN

The tested versions are CUDA10.2, 11.6

CUDA
cuDNN.

Check how to install here.

Python dependencies

You will need

For traversability filter, either of

Optinally, opencv for inpainting filter.

Install numpy, scipy, shapely, opencv-python with the following command.

pip3 install -r requirements.txt

Cupy

cupy can be installed with specific CUDA versions. (On jetson, only "from source" i.e. pip install cupy could work)

For CUDA 10.2 pip install cupy-cuda102

For CUDA 11.0 pip install cupy-cuda110

For CUDA 11.1 pip install cupy-cuda111

For CUDA 11.2 pip install cupy-cuda112

For CUDA 11.3 pip install cupy-cuda113

For CUDA 11.4 pip install cupy-cuda114

For CUDA 11.5 pip install cupy-cuda115

For CUDA 11.6 pip install cupy-cuda116

(Install CuPy from source) % pip install cupy

Traversability filter

You can choose either pytorch, or chainer to run the CNN based traversability filter.
Install by following the official documents.

Pytorch uses ~2GB more GPU memory than Chainer, but runs a bit faster.
Use parameter use_chainer to select which backend to use.

ROS package dependencies

sudo apt install ros-noetic-pybind11-catkin
sudo apt install ros-noetic-grid-map-core ros-noetic-grid-map-msgs

On Jetson

CUDA CuDNN

CUDA and cuDNN can be installed via apt. It comes with nvidia-jetpack. The tested version is jetpack 4.5 with L4T 32.5.0.

python dependencies

On jetson, you need the version for its CPU arch:

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
pip3 install Cython
pip3 install numpy==1.19.5 torch-1.8.0-cp36-cp36m-linux_aarch64.whl

Also, you need to install cupy with

pip3 install cupy

This builds the packages from source so it would take time.

ROS dependencies

sudo apt install ros-melodic-pybind11-catkin
sudo apt install ros-melodic-grid-map-core ros-melodic-grid-map-msgs

Also, on jetson you need fortran (should already be installed).

sudo apt install gfortran

If the Jetson is set up with Jetpack 4.5 with ROS Melodic the following package is additionally required:

git clone [email protected]:ros/filters.git -b noetic-devel

Usage

Build

catkin build elevation_mapping_cupy

Errors

If you get error such as

Make Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find PythonInterp: Found unsuitable version "2.7.18", but
  required is at least "3" (found /usr/bin/python)

Build with option.

catkin build elevation_mapping_cupy -DPYTHON_EXECUTABLE=$(which python3)

Run

Basic usage.

roslaunch elevation_mapping_cupy elevation_mapping_cupy.launch

Run TurtleBot example

First, install turtlebot simulation.

sudo apt install ros-noetic-turtlebot3*

Then, you can run the example.

export TURTLEBOT3_MODEL=waffle
roslaunch elevation_mapping_cupy turtlesim_example.launch

To control the robot with a keyboard, a new terminal window needs to be opened.
Then run

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Velocity inputs can be sent to the robot by pressing the keys a, w, d, x. To stop the robot completely, press s.

Subscribed Topics

  • topics specified in pointcloud_topics in parameters.yaml ([sensor_msgs/PointCloud2])

    The distance measurements.

  • /tf ([tf/tfMessage])

    The transformation tree.

Published Topics

The topics are published as set in the rosparam.
You can specify which layers to publish in which fps.

Under publishers, you can specify the topic_name, layers basic_layers and fps.

publishers:
  your_topic_name:
    layers: ['list_of_layer_names', 'layer1', 'layer2']             # Choose from 'elevation', 'variance', 'traversability', 'time' + plugin layers
    basic_layers: ['list of basic layers', 'layer1']                # basic_layers for valid cell computation (e.g. Rviz): Choose a subset of `layers`.
    fps: 5.0                                                        # Publish rate. Use smaller value than `map_acquire_fps`.

Example setting in config/parameters.yaml.

  • elevation_map_raw ([grid_map_msg/GridMap])

    The entire elevation map.

  • elevation_map_recordable ([grid_map_msg/GridMap])

    The entire elevation map with slower update rate for visualization and logging.

  • elevation_map_filter ([grid_map_msg/GridMap])

    The filtered maps using plugins.

Plugins

You can create your own plugin to process the elevation map and publish as a layer in GridMap message.

Let's look at the example.

First, create your plugin file in elevation_mapping_cupy/script/plugins/ and save as example.py.

import cupy as cp
from typing import List
from .plugin_manager import PluginBase


class NameOfYourPlugin(PluginBase):
    def __init__(self, add_value:float=1.0, **kwargs):
        super().__init__()
        self.add_value = float(add_value)

    def __call__(self, elevation_map: cp.ndarray, layer_names: List[str],
            plugin_layers: cp.ndarray, plugin_layer_names: List[str])->cp.ndarray:
        # Process maps here
        # You can also use the other plugin's data through plugin_layers.
        new_elevation = elevation_map[0] + self.add_value
        return new_elevation

Then, add your plugin setting to config/plugin_config.yaml

example:                                      # Use the same name as your file name.
  enable: True                                # weather to laod this plugin
  fill_nan: True                              # Fill nans to invalid cells of elevation layer.
  is_height_layer: True                       # If this is a height layer (such as elevation) or not (such as traversability)
  layer_name: "example_layer"                 # The layer name.
  extra_params:                               # This params are passed to the plugin class on initialization.
    add_value: 2.0                            # Example param

Finally, add your layer name to publishers in config/parameters.yaml. You can create a new topic or add to existing topics.

  plugin_example:   # Topic name
    layers: ['elevation', 'example_layer']
    basic_layers: ['example_layer']
    fps: 1.0        # The plugin is called with this fps.
Comments
  • How to use one type of the filter several times?

    How to use one type of the filter several times?

    Hi,

    The plugin manager load a certain filter by the key in the config file. However, the yaml file is not allowed to contain same keys. How can we use the same filter with different parameters several times?

    opened by cyoahs 9
  • fix cell indexing

    fix cell indexing

    trick is to move the half shift (width / 2) into the rounding operation to work for both even and odd numbered maps.

    We also need to correct for the fact that the center of a cell is shifted by half the resolution when viewed from the center. That is where you get the (width - 1.0) / 2 from

    opened by rubengrandia 8
  • Segmentation fault on ubuntu18.04 melodic x86_64 PC

    Segmentation fault on ubuntu18.04 melodic x86_64 PC

    Hi, thank you for your guys great work. I am trying to build ele project on my laptop, which is x86_64 ubuntu 18.04 melodic. I built the dependencies such as cuda, cudnn and so on. My cuda is 10.2.89, cudnn 8.6.0. But when I run ele, it shows segmentation fault. Can you guys give me some help. Some packages are installed with wrong version? image

    opened by JACKLiuDay 6
  • Add step_filter

    Add step_filter

    Adds a StepFilter, which simply results in a layer which has the highest differences to the neighboring cells.

    Mostly copy & paste from the MinFilter.

    Has settings for the neighbor cell radius and if negative differences should be included

    opened by AlexReimann 6
  • Height drift compensation not updating unseen points

    Height drift compensation not updating unseen points

    Hi :),

    Thanks for making open-source such an amazing package.

    When enabling the the height drift compensation I noticed that it only updates the cells that are hit by the rays of the sensors, but the remaining cells are not (as shown in the pic below), leading to a behavior where some of the feet start floating.

    Is there a way to enable the update for all cells or maybe I am missing something?

    MicrosoftTeams-image

    opened by itaouil 5
  • Segfault when running with melodic

    Segfault when running with melodic

    Hi, I'm trying to get this running on melodic under Ubuntu 18.04 on x64. I assumed this somehow should work, as you also run it on the Jetson under melodic.

    The compiling (with -DPYTHON_EXECUTABLE=/usr/bin/python3) and starting works, but I'm running into a segfault when starting with roslaunch:

    0x00007ffff67c8efd in std::istream::sentry::sentry(std::istream&, bool) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #0  0x00007ffff67c8efd in std::istream::sentry::sentry(std::istream&, bool) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #1  0x00007ffff67c9f4b in std::istream::read(char*, long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    #2  0x00007fffdfb98e68 in geos::io::WKBReader::readGeometry() () from /usr/lib/x86_64-linux-gnu/libgeos-3.6.2.so
    #3  0x00007ffee2475236 in GEOSGeomFromWKB_buf_r () from /home/alex/.local/lib/python3.6/site-packages/shapely/.libs/libgeos_c-a68605fd.so.1.13.1
    #4  0x00007fffd970fdae in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6
    #5  0x00007fffd970f71f in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6
    #6  0x00007fff64ea85a4 in _ctypes_callproc () from /usr/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so
    #7  0x00007fff64ea8d34 in ?? () from /usr/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so
    #8  0x00007ffff770b768 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #9  0x00007ffff75be9fb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #10 0x00007ffff770af29 in _PyObject_FastCallDict () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #11 0x00007ffff761fec8 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #12 0x00007ffff7626303 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    
    .... more python import text
    
    #111 0x00007ffff762a7f8 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #112 0x00007ffff76b7736 in PyCFunction_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #113 0x00007ffff770b768 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #114 0x00007ffff770c058 in PyObject_CallFunction () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #115 0x00007ffff760007b in PyImport_Import () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #116 0x00007ffff760027a in PyImport_ImportModule () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
    #117 0x00007ffff7b81c4d in pybind11::module::import (name=0x7ffff7bbad0f "elevation_mapping") at /opt/ros/melodic/include/pybind11_catkin/pybind11/pybind11.h:849
    #118 elevation_mapping_cupy::ElevationMappingWrapper::initialize (this=this@entry=0x7fffffffca60, nh=...) at /home/alex/ws/src/elevation_mapping_cupy/elevation_mapping_cupy/src/elevation_mapping_wrapper.cpp:32
    #119 0x00007ffff7b9f1e1 in elevation_mapping_cupy::ElevationMappingNode::ElevationMappingNode (this=0x7fffffffc540, nh=...) at /home/alex/ws/src/elevation_mapping_cupy/elevation_mapping_cupy/src/elevation_mapping_ros.cpp:33
    #120 0x000055555555f75e in main (argc=<optimized out>, argv=<optimized out>) at /home/alex/ws/src/elevation_mapping_cupy/elevation_mapping_cupy/src/elevation_mapping_node.cpp:19
    

    Running python3 elevation_mapping.py works fine.

    Did you by any chance also run into this problem? Do you have any guesses / pointers I should look into?

    The python module versions are fixed to the ones mentioned fin the Jetson installation README. I'm running with python3.6.9 (Ubuntu 18.04 default)

    opened by AlexReimann 5
  • Improvement of ElevationMap::move_to performance

    Improvement of ElevationMap::move_to performance

    Hi, I'm running the package under ROS melodic, Ubuntu 18.04 in Simulation with a simulated Velodyne VLP-16. I tried to lower the CPU usage to something like our current traversability estimation uses.

    I tried to lower it by following without much change:

    • Remove plugins, leaving 1 disabled plugin
    • Decrease resolution to 0.2 m
    • Decrease map_length to 2 m
    • Decrease max_ray_length to 1 m
    • Disable all the features via feature toggles
    • Remove all publishers
    • Decrease map_acquire_fps to 2 Hz

    Profiling the with these configs showed that the move_to function in elevation_mapping.py uses most CPU cycles (60%). Changing the update_pose_fps then lowered the CPU as expected.

    Are there any plans to improve the performance of this move_to function?

    opened by AlexReimann 4
  • Discrepancy between pointcloud and map

    Discrepancy between pointcloud and map

    Hi,

    The map shows some discrepancy between what the pointcloud shows, somehow adding some data to the elevation layer even though the pointcloud never really hits in that map section. This happens as soon as the robot starts moving.

    Before movement

    image

    After movement

    image

    The drift compensation is turned off and the map resolution is 1cm.

    What could be the reason for this? The old robot-centric elevation map does not suffer from the same.

    Thank you :).

    opened by itaouil 3
  • error about cupy

    error about cupy

    Hi,thanks for your excellent work! There is something wrong when I run the Basic usage. After I built the package and entered roslaunch elevation_mapping_cupy elevation_mapping_cupy.launch in the terminal, I got this error :

    terminate called after throwing an instance of 'pybind11::error_already_set'
      what():  ModuleNotFoundError: No module named 'cupy'
    
    At:
      /home/intel-nuc/ros_workspace/elevation_mapping_cupy_ws/src/elevation_mapping_cupy/elevation_mapping_cupy/script/elevation_mapping_cupy/traversability_filter.py(5): <module>
      <frozen importlib._bootstrap>(219): _call_with_frames_removed
      <frozen importlib._bootstrap_external>(848): exec_module
      <frozen importlib._bootstrap>(686): _load_unlocked
      <frozen importlib._bootstrap>(975): _find_and_load_unlocked
      <frozen importlib._bootstrap>(991): _find_and_load
      /home/intel-nuc/ros_workspace/elevation_mapping_cupy_ws/src/elevation_mapping_cupy/elevation_mapping_cupy/script/elevation_mapping_cupy/elevation_mapping.py(10): <module>
      <frozen importlib._bootstrap>(219): _call_with_frames_removed
      <frozen importlib._bootstrap_external>(848): exec_module
      <frozen importlib._bootstrap>(686): _load_unlocked
      <frozen importlib._bootstrap>(975): _find_and_load_unlocked
      <frozen importlib._bootstrap>(991): _find_and_load
    

    It looks like that I don't install cupy, then I install it with my cuda version, but the error still exists. I'm wondering if it's because of conda?So do you know how to fix it? Thanks!

    opened by pengpengfei97 3
  • Python install setup

    Python install setup

    • Adds installs for config and launch folders
    • Makes module elevation_mapping_cupy out of python files in /scripts folder
      • Minor adjustments to elevation_mapping.py and elevation_mapping_wrapper.cpp to work with module
    • Adds setup.py and catkin_python_setup()
    opened by AlexReimann 3
  • Traversability jumping when update_pose_fps is not 10 Hz

    Traversability jumping when update_pose_fps is not 10 Hz

    The traversability data seems to be jumping around when the update_pose_fps is not 10 Hz.

    Following was recorded with update_pose_fps: 1.0: gpu_mapping_jumps

    The blue area is not jumping with 10 Hz. It is also jumping with e. g. 13 Hz.

    I tested it on the latest main with the turtlebot sim launcher

    opened by AlexReimann 3
  • elevation_mapping_node dies on startup due to pybind import problem

    elevation_mapping_node dies on startup due to pybind import problem

    Hi! I am trying to run this code on Ubuntu 18.04 with ROS melodic. I am able to build the code successfully (using catkin build -DPYTHON_EXECUTABLE=$(which python3)) , but am encountering a runtime error image

    that I have traced to this line. I have already tried setting the PYTHONPATH env variable in the launch file as discussed in the README, but that does not fix the problem.

    What is interesting is that I am able to call py::module::import("elevation_mapping_cupy") without error, but py::module::import("elevation_mapping_cupy.elevation_mapping") will cause the node to die.

    Any help on this problem would be greatly appreciated!

    opened by camkisailus 3
  • Node dies, exit code 6

    Node dies, exit code 6

    I am able to build the whole package successfully. Running roslaunch elevation_mapping_cupy elevation_mapping_cupy.launch starts a node but then it dies with this message:

    [elevation_mapping-2] process has died [pid 49190, exit code -6, cmd /home/nathan/elevation-mapping/devel/lib/elevation_mapping_cupy/elevation_mapping_node __name:=elevation_mapping __log:=/home/nathan/.ros/log/2a1bbab8-5d41-11ed-9167-c39061283433/elevation_mapping-2.log]. log file: /home/nathan/.ros/log/2a1bbab8-5d41-11ed-9167-c39061283433/elevation_mapping-2*.log

    Exit code -6 appears to be a general abort code and is unclear what is causing this node to die. Any help with the cause for this? Attached are the log files too.

    master.log roslaunch-S-TEAR-49135.log rosout.log rosout-1-stdout.log

    opened by natha-n 4
  • Inquiry of 'script/elevation_mapping_cupy/custom_kernels.py'

    Inquiry of 'script/elevation_mapping_cupy/custom_kernels.py'

    Hello In custom_kernels.py, A function called 'map_utils' is declared and this fuction have cuda kernel templete. I think there is an error in 'get_idx' function here. device int get_idx(float16 x, float16 y, float16 center_x, float16 center_y) { int idx_x = clamp(get_x_idx(x, center_x), 0, ${width} - 1); int idx_y = clamp(get_y_idx(y, center_y), 0, ${height} - 1); return ${width} * idx_x + idx_y; I think '${width} * idx_x + idx_y;' should be modified into '${width} * idx_y + idx_x;'. What do you think about this?

    opened by wjd123ap 1
  • Call service

    Call service "check_safety" from c++ client

    Hi there

    I would like to call the service "check_safety" from a c++ client. I get the following error message:

    Service call failed: service [/elevation_mapping/check_safety] responded with an error: TypeError: Type is mismatched. polygon <class 'numpy.float32'> <class 'numpy.float64'> U
    
    At:
      cupy/_core/_kernel.pyx(559): cupy._core._kernel._decide_params_type_core
      /home/pascal/catkin_ws_nav/src/elevation_mapping_cupy/elevation_mapping_cupy/script/elevation_mapping_cupy/elevation_mapping.py(467): get_polygon_traversability
    

    Here the code snippet for the service call in the c++ node:

    // Collision check
     std::vector<geometry_msgs::PolygonStamped> polys_stamped = convertToPolygonStamped(swath_poly, world_frame_ ,ros::Time::now());
     elevation_map_msgs::CheckSafety srv;
     srv.request.polygons = polys_stamped;
     srv.request.compute_untraversable_polygon = false;
     if(collision_check_client_.call(srv))
       ROS_INFO("Call successful");
     else
       ROS_ERROR("Failed to call service check_safety");
    

    Does anyone have an idea on how to solve this issue? Thanks a lot!

    opened by lipascal123 1
Owner
Robotic Systems Lab - Legged Robotics at ETH Zürich
The Robotic Systems Lab investigates the development of machines and their intelligence to operate in rough and challenging environments.
Robotic Systems Lab - Legged Robotics at ETH Zürich
Multiple types of NN model optimization environments. It is possible to directly access the host PC GUI and the camera to verify the operation. Intel iHD GPU (iGPU) support. NVIDIA GPU (dGPU) support.

mtomo Multiple types of NN model optimization environments. It is possible to directly access the host PC GUI and the camera to verify the operation.

Katsuya Hyodo 24 Mar 2, 2022
High performance Cross-platform Inference-engine, you could run Anakin on x86-cpu,arm, nv-gpu, amd-gpu,bitmain and cambricon devices.

Anakin2.0 Welcome to the Anakin GitHub. Anakin is a cross-platform, high-performance inference engine, which is originally developed by Baidu engineer

null 514 Dec 28, 2022
GrabGpu_py: a scripts for grab gpu when gpu is free

GrabGpu_py a scripts for grab gpu when gpu is free. WaitCondition: gpu_memory >

tianyuluan 3 Jun 18, 2022
Face Identity Disentanglement via Latent Space Mapping [SIGGRAPH ASIA 2020]

Face Identity Disentanglement via Latent Space Mapping Description Official Implementation of the paper Face Identity Disentanglement via Latent Space

null 150 Dec 7, 2022
Dataset Cartography: Mapping and Diagnosing Datasets with Training Dynamics

Dataset Cartography Code for the paper Dataset Cartography: Mapping and Diagnosing Datasets with Training Dynamics at EMNLP 2020. This repository cont

AI2 125 Dec 22, 2022
Poisson Surface Reconstruction for LiDAR Odometry and Mapping

Poisson Surface Reconstruction for LiDAR Odometry and Mapping Surfels TSDF Our Approach Table: Qualitative comparison between the different mapping te

Photogrammetry & Robotics Bonn 305 Dec 21, 2022
LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping

LVI-SAM This repository contains code for a lidar-visual-inertial odometry and mapping system, which combines the advantages of LIO-SAM and Vins-Mono

Tixiao Shan 1.1k Dec 27, 2022
Non-Official Pytorch implementation of "Face Identity Disentanglement via Latent Space Mapping" https://arxiv.org/abs/2005.07728 Using StyleGAN2 instead of StyleGAN

Face Identity Disentanglement via Latent Space Mapping - Implement in pytorch with StyleGAN 2 Description Pytorch implementation of the paper Face Ide

Daniel Roich 58 Dec 24, 2022
A 3D Dense mapping backend library of SLAM based on taichi-Lang designed for the aerial swarm.

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 d

XuHao 230 Dec 19, 2022
T-LOAM: Truncated Least Squares Lidar-only Odometry and Mapping in Real-Time

T-LOAM: Truncated Least Squares Lidar-only Odometry and Mapping in Real-Time The first Lidar-only odometry framework with high performance based on tr

Pengwei Zhou 183 Dec 1, 2022
Project page for the paper Semi-Supervised Raw-to-Raw Mapping 2021.

Project page for the paper Semi-Supervised Raw-to-Raw Mapping 2021.

Mahmoud Afifi 22 Nov 8, 2022
Repository for the paper "Online Domain Adaptation for Occupancy Mapping", RSS 2020

RSS 2020 - Online Domain Adaptation for Occupancy Mapping Repository for the paper "Online Domain Adaptation for Occupancy Mapping", Robotics: Science

Anthony 26 Sep 22, 2022
[ICRA2021] Reconstructing Interactive 3D Scene by Panoptic Mapping and CAD Model Alignment

Interactive Scene Reconstruction Project Page | Paper This repository contains the implementation of our ICRA2021 paper Reconstructing Interactive 3D

null 97 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
my graduation project is about live human face augmentation by projection mapping by using CNN

Live-human-face-expression-augmentation-by-projection my graduation project is about live human face augmentation by projection mapping by using CNN o

null 1 Mar 8, 2022
Allele-specific pipeline for unbiased read mapping(WIP), QTL discovery(WIP), and allelic-imbalance analysis

WASP2 (Currently in pre-development): Allele-specific pipeline for unbiased read mapping(WIP), QTL discovery(WIP), and allelic-imbalance analysis Requ

McVicker Lab 2 Aug 11, 2022
Reaction SMILES-AA mapping via language modelling

rxn-aa-mapper Reactions SMILES-AA sequence mapping setup conda env create -f conda.yml conda activate rxn_aa_mapper In the following we consider on ex

null 16 Dec 13, 2022
Pipeline code for Sequential-GAM(Genome Architecture Mapping).

Sequential-GAM Pipeline code for Sequential-GAM(Genome Architecture Mapping). mapping whole_preprocess.sh include the whole processing of mapping. usa

null 3 Nov 3, 2022
Mapping Conditional Distributions for Domain Adaptation Under Generalized Target Shift

This repository contains the official code of OSTAR in "Mapping Conditional Distributions for Domain Adaptation Under Generalized Target Shift" (ICLR 2022).

Matthieu Kirchmeyer 5 Dec 6, 2022