Giter VIP home page Giter VIP logo

implicit-sdf-planner's Introduction

Implicit-SDF-Planner

Related Paper:

If you find this work useful in your research, please consider citing:

@INPROCEEDINGS{zhang2023continuous,
  author={Zhang, Tingrui and Wang, Jingping and Xu, Chao and Gao, Alan and Gao, Fei},
  booktitle={2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, 
  title={Continuous Implicit SDF Based Any-shape Robot Trajectory Optimization}, 
  year={2023},
  volume={},
  number={}}

Demos supported by our pipeline

  • Some of the demos are our further work after the IROS conference, and a more general pipeline for whole-body planning of arbitrarily shaped robots with Continuous Collision Safety Certification is on the way.

    3D - Arbitrarily shaped robots fly over three consecutive narrow slits (with quadrotor dynamics)


2D - Arbitrarily shaped robots traverse the random map (with rotation decoupled from translation)


2D - Continuous Collision Avoidance with Safety Certification (with rotation decoupled from translation)



3D - Obstacle avoidance planning for shape variant robots (with quadrotor dynamics)


Compiling tests passed on ubuntu 20.04 with ros installed. You can just execute the following commands one by one.

Qucik Start

echo "alias python=python3" >> ~/.zshrc  #(If use zsh) 
echo "alias python=python3" >> ~/.bashrc #(If use bash)
python3 -m pip3 install pygame==2.0.0.dev12 
sudo apt-get install gcc g++ make gfortran cmake libomp-dev
git clone https://github.com/ZJU-FAST-Lab/Implicit-SDF-Planner.git
cd Implicit-SDF-Planner
./build.sh
source devel/setup.bash #(If use bash)
source devel/setup.zsh  #(If use zsh) 
roslaunch ego_planner demox.launch #(x=1,2,3...)
  • Then use "3D Nav Goal" in rviz or click on the "G" button on the keyboard to publish the goal for navigation. Note that the start and end points of the clicks must be within the map.

    More Examples (Some-shaped robots with uav dynamics)

2D version and shape variant demos will be released later...

3D version demos

You can click buttons on the screen to visualize the swept volume, stop the optimization process early, etc. Note that these visualizations only take effect after the second click of the button.

demo.mp4

Have a cool example? Submit a PR! You can either extend the robot's shape arbitrarily via an obj file in shapes.The code will automatically use libigl to get its SDF. You can also inherit from Generalshape in Shape.hpp to implement the desired shape and the associated SDF methods.For visualization purposes, you will also need a corresponding obj file for the robot shape.

Supported Shapes now

Tips

  1. We use OpenMp for parallel acceleration, so the "threads_num" in the yaml should be adjusted to improve performance. The recommended threads_num is about 1.5 times the number of logical cores on the machine.
  2. If users customize the shape, the obj file must be provided. We recommend using meshlab to generate obj files. For better performance, users can also implement corresponding SDF function, otherwise Libigl is used by default to compute the SDF.
  3. The kernel_size multiplied by the map resolution should not be too small, this value should be greater than the maximum length of the robot's shape. So the "kernel_size" in the yaml should be adjusted accordingly (not too small).

Acknowledgements

There are several important works which support this project:

  • GCOPTER: An efficient and versatile multicopter trajectory optimizer built upon a novel sparse trajectory representation named MINCO.
  • Swept-Volume: For visualization purpose in our project.
  • LMBM: Limited Memory Bundle Method for nonsmooth-optimization in our project.

Licence

The source code is released under GPLv3 license.

Maintaince

For any technical issue or bug, please contact Tingrui Zhang ([email protected]) or Jingping Wang ([email protected]). For commercial inquiries, please contact Fei GAO ([email protected]).

implicit-sdf-planner's People

Contributors

lanternw avatar pupillen 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.