• Stars
    star
    184
  • Rank 207,878 (Top 5 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 1 year ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[IROS 2023] Continuous Implicit SDF Based Any-shape Robot Trajectory Optimization

Implicit-SDF-Planner

Related Paper:

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

@INPROCEEDINGS{10342104,
  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={},
  pages={282-289},
  doi={10.1109/IROS55552.2023.10342104}}

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

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]).

More Repositories

1

ego-planner

C++
1,376
star
2

Fast-Drone-250

hardware and software design of the 250mm autonomous drone
C++
1,358
star
3

ego-planner-swarm

An efficient single/multi-agent trajectory planner for multicopters.
C++
1,178
star
4

GCOPTER

A General-Purpose Trajectory Optimizer for Multicopters
C++
697
star
5

Swarm-Formation

Formation Flight in Dense Environments
C++
382
star
6

EGO-Planner-v2

Swarm Playground, the codebase of the paper "Swarm of micro flying robots in the wild"
C++
355
star
7

Dftpav

A lightweight differential flatness-based trajectory planner for car-like robots
C++
324
star
8

LBFGS-Lite

LBFGS-Lite: A header-only L-BFGS unconstrained optimizer.
C++
314
star
9

sampling-based-path-finding

C++
212
star
10

Fast-Racing

An Open-source Strong Baseline for SE(3) Planning in Autonomous Drone Racing
C++
206
star
11

large_scale_traj_optimizer

Fast (Fastest?) Minimum Snap Trajectory Generation with Analytical Gradient
C++
199
star
12

CMPCC

CMPCC: Corridor-based Model PredictiveContouring Control for Aggressive Drone Flight
C
192
star
13

am_traj

Alternating Minimization Based Trajectory Generation for Quadrotor Aggressive Flight
C++
185
star
14

Fast-tracker

C++
181
star
15

Elastic-Tracker

Elastic Tracker: A Spatio-temporal Trajectory Planner Flexible Aerial Tracking
C++
163
star
16

FAST-Dynamic-Vision

Detecting and Tracking Dynamic Objects with Event and Depth Sensing
C++
126
star
17

Implicit-SVSDF-Planner

[SIGGRAPH 2024 & TOG]
C++
119
star
18

VID-Fusion

VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation
C++
115
star
19

Car-like-Robotic-swarm

Source code for the decentralized car-like robotic swarm
C++
114
star
20

uneven_planner

An Efficient Trajectory Planner for Car-like Robots on Uneven Terrain
C++
103
star
21

EVA-planner

EVA-planner: an EnVironmental Adaptive Gradient-based Local Planner for Quadrotors.
C++
91
star
22

TGK-Planner

C++
90
star
23

FastSim

88
star
24

Terrestrial-Aerial-Navigation

An autonomous navigation framework that brings complete autonomy to terrestrial-aerial bimodal vehicles (TABVs)
C++
75
star
25

Fast-Perching

Real-Time Trajectory Planning for Aerial Perching
C++
73
star
26

kino_sampling_with_regional_opti

C++
73
star
27

3D2M-planner

C#
72
star
28

SDLP

Seidel's LP Algorithm: Linear-Complexity Linear Programming for Small-Dimensional Variables
C++
70
star
29

SDQP

Small-Dimensional Quadratic Programming in Linear Time
C++
61
star
30

visPlanner

C++
56
star
31

VID-Dataset

C++
55
star
32

OPNet

Learning Unknown Space for Autonomous Navigation in Clustered Environment
C++
55
star
33

VertexEnumeration3D

Fast Vertex Enumeration for 3D Polytopes
C++
52
star
34

forces_resilient_planner

External Forces Resilient Safe Motion Planning for Quadrotor
C
48
star
35

Radar-Diffusion

Python
48
star
36

EDG-TEAM

Enhanced Decentralized Autonomous Aerial Robot Teams with Group Planning
C++
42
star
37

std-trees

STD-Trees: Spatio-temporal Deformable Trees for Multirotors Kinodynamic Planning
C++
41
star
38

Auto-Filmer

A Videography Planner for Quadrotors
C++
38
star
39

CertifiableMutualLocalization

MATLAB
29
star
40

laser_simulator

lightweight laser simulator
C++
25
star
41

GPA-Teleoperation

C++
24
star
42

VID-Flight-Platform

The flight platforn for the VID-Dataset
19
star
43

UnityVisExample

C#
19
star
44

e2e_opt

JavaScript
18
star
45

TABV-Platform

A cusomized terrestrial-aerial bimodal vehicle (TABV) platform for terrestrial-aerial autonomous navigation.
16
star
46

Primitive-Planner

Primitive-Planner: An Ultra Lightweight Quadrotor Planner with Time-optimal Primitives
16
star
47

LMBM

Nonsmooth Unconstrained Optimization via Limited Memory Bundle Method
Fortran
15
star
48

sampling-based-Guided

C++
15
star
49

mpc-car-tutorial

A tutorial of using MPC (both implementations of nonlinear MPC and linear time-varying MPC) for reference tracking with a bicycle model.
C
12
star
50

FACT-Coordinate-Initialization

Open source dode for paper FACT: Fast and Active Coordinate Initialization for Vision-based Drone Swarm
C++
11
star
51

OSQP_Interface

An Easy-to-Use OSQP Interface for Convex Quadratic Programming.
C++
7
star
52

Assistive-Racing

A Trajectory-based Flight Assistive System for Novice Pilots in Drone Racing Scenario
C++
7
star
53

Auto-Param-Adaption

Automatic parameter adaptation for quadrotor trajectory planning
6
star
54

Xsens_driver

Python
4
star
55

GLPK_Interface

An Easy-to-Use GLPK Interface for General-Dimension Linear Programming.
C++
3
star
56

LF-3PM

a LiDAR-based Framework for Perception-aware Planning with Perturbation-induced Metric
3
star
57

Active-Relative-Localization

Open source dode for paper Preserving Relative Localization of FoV-Limited Drone Swarm via Active Mutual Observation
1
star