All Projects → MaverickPeter → DiSCO-pytorch

MaverickPeter / DiSCO-pytorch

Licence: other
Differentiable Scan Context with Orientation

Programming Languages

python
139335 projects - #7 most used programming language
Cuda
1817 projects
cython
566 projects

Projects that are alternatives of or similar to DiSCO-pytorch

bht-ams-playerstage
Player/Stage SLAM
Stars: ✭ 35 (-5.41%)
Mutual labels:  robotics
l2r
Open-source reinforcement learning environment for autonomous racing.
Stars: ✭ 38 (+2.7%)
Mutual labels:  robotics
nn robustness analysis
Python tools for analyzing the robustness properties of neural networks (NNs) from MIT ACL
Stars: ✭ 36 (-2.7%)
Mutual labels:  robotics
grasp multiObject
Robotic grasp dataset for multi-object multi-grasp evaluation with RGB-D data. This dataset is annotated using the same protocal as Cornell Dataset, and can be used as multi-object extension of Cornell Dataset.
Stars: ✭ 59 (+59.46%)
Mutual labels:  robotics
braccio-ik-unity
Braccio robotic arm simulator with IK (inverse kinematics) and controller via Serial in Unity.
Stars: ✭ 50 (+35.14%)
Mutual labels:  robotics
EL6483 EmbeddedSystems
All course materials, build systems, etc. for the graduate Real-Time Embedded Systems Course, Spring 2017
Stars: ✭ 14 (-62.16%)
Mutual labels:  robotics
MeshCatMechanisms.jl
3D Visualization of mechanisms and URDFs using MeshCat.jl and RigidBodyDynamics.jl
Stars: ✭ 36 (-2.7%)
Mutual labels:  robotics
sparse-scene-flow
This repo contains C++ code for sparse scene flow method.
Stars: ✭ 23 (-37.84%)
Mutual labels:  robotics
ndt localizer
This robot lcoalisation package for lidar-map based localisation using multi-sensor state estimation.
Stars: ✭ 32 (-13.51%)
Mutual labels:  robotics
bio ik
MoveIt kinematics_base plugin based on particle optimization & GA
Stars: ✭ 104 (+181.08%)
Mutual labels:  robotics
trajopt
Trajectory optimization algorithms for robotic control.
Stars: ✭ 74 (+100%)
Mutual labels:  robotics
Drona
Drona is a programming framework for building safe robotics systems
Stars: ✭ 26 (-29.73%)
Mutual labels:  robotics
robotic-warehouse
Multi-Robot Warehouse (RWARE): A multi-agent reinforcement learning environment
Stars: ✭ 62 (+67.57%)
Mutual labels:  robotics
TORA.jl
Trajectory Optimization for Robot Arms
Stars: ✭ 27 (-27.03%)
Mutual labels:  robotics
robotic-grasping
Antipodal Robotic Grasping using GR-ConvNet. IROS 2020.
Stars: ✭ 131 (+254.05%)
Mutual labels:  robotics
brax
Massively parallel rigidbody physics simulation on accelerator hardware.
Stars: ✭ 1,208 (+3164.86%)
Mutual labels:  robotics
FusionAD
An open source autonomous driving stack by San Jose State University Autonomous Driving Team
Stars: ✭ 30 (-18.92%)
Mutual labels:  robotics
baddy-makers-edition
The place for the BADDY community to: get all you need (dxf plans, code etc.) to make and build your own BADDY share issues... and fixes! create stunning new features
Stars: ✭ 20 (-45.95%)
Mutual labels:  robotics
gear
Collision Avoidance Path Planning in Rust-lang
Stars: ✭ 29 (-21.62%)
Mutual labels:  robotics
ROS-TCP-Connector
No description or website provided.
Stars: ✭ 123 (+232.43%)
Mutual labels:  robotics

DiSCO-Pytorch

ral video License: MIT

Code for DiSCO: Differentiable Scan Context with Orientation submitted in IEEE Robotics and Automation Letters with ICRA 2021

Paper is available here.

Video is available here.

teaser

Pre-Requisites

  • PyTorch 1.4.0 (<= 1.6.0 fft module is modified after 1.6.0)
  • tensorboardX
  • Cython (for point cloud process voxelization)

If you want to integrate it into ROS. We have test it on Kinetic and Melodic

How to use

prepare training data

For NCLT dataset, if you want to use our code for convenience you have to form the data into this file structure. (occ_xm is empty)

├── 2012-02-04
│   ├── ground_truth
│   ├── occ_0.5m
│   └── velodyne_data
│       └── velodyne_sync
├── 2012-03-17
│   ├── ground_truth
│   ├── occ_3m
│   └── velodyne_data
│       └── velodyne_sync

In generating_queries/nclt/

python generate_training_tuples_baseline_with_pose.py
python generate_test_sets.py

Use point cloud process module in cuda (cython wrapped)

In multi-layer-polar-cython/cython

# To inplace install the cython wrapped module:
python setup.py build_ext --inplace

# or install in python/site_packages
python setup.py install

# to test
python test.py

(If you meet segmentation fault error, you may have overlarge number of points to process e.g. 67w. To tackle this problem you may need to change your system stack size by 'ulimit -s 81920' in your bash)

and now you will have a gputransform.cpythonxxx.so file and copy it to generating_queries/nclt and main dir where you can find a place holder. Note that the input of the wrapped point cloud process module you should scale the original point cloud to [-1~1] range for all axis. No extra process for point cloud such as downscale the points number.

Train

python train_DiSCO.py (arguments please refer to the code in this python file)

Evaluate

python evaluate.py (arguments please refer to the code in this python file)

Infer

# simple inference
python inference.py

############################
# infer in ros
# create a workspace
mkdir -p ~/disco_ws/src
cd ~/disco_ws/src

# clone the repo
git clone https://github.com/MaverickPeter/DiSCO-pytorch.git
cd ..

# make
catkin_make
source devel/setup.bash

# run
rosrun disco_ros infer_ros.py

Take a look at train_DiSCO.py and evaluate.py for more parameters We found that our model also works well in cpu, only takes 50-80ms an inference.

Pretrained Model on NCLT dataset

Coming soon

Acknowledgements

Code references PointNetVLAD

Citation

If you use our source code or inspired by our method, please consider citing the following:

@ARTICLE{9359460,
  author={X. {Xu} and H. {Yin} and Z. {Chen} and Y. {Li} and Y. {Wang} and R. {Xiong}},
  journal={IEEE Robotics and Automation Letters}, 
  title={DiSCO: Differentiable Scan Context With Orientation}, 
  year={2021},
  volume={6},
  number={2},
  pages={2791-2798},
  doi={10.1109/LRA.2021.3060741}}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].