kRRT* with Bidirectional Search and Regional Optimization

About

Planning global kinodynamic trajectories for multirotor flight. Suits Long range and trapped starts & goals.

Authors: Hongkai YE and Fei GAO from the ZJU Fast Lab.

Related Paper: Efficient Sampling-based Kinodynamic Planning with Regional Optimization and Bidirectional Search for Multirotors (Preprint coming soon).

For full videos, please watch: [Bilibili], [YouTube]

Methods

Front-end:

1.Kinodynamic RRT* integrated with fast regional optimization.

2.Bidirectional search.

Back-end: Quadratic programming incorporating obstacles.

Run The Simulation

The repo has been tested on Ubuntu 16.04 and 18.04 with ros-desktop-full installation. By default, we use 16.04 with ROS-kinetic. If use 18.04 or above, pleause modify the last code lines in so3_control_nodelet.cpp according to the comments:

1. Prerequisites

The uav_simulator depends on the C++ linear algebra library Armadillo. You can install it by:

~$ sudo apt-get install libarmadillo-dev

2. Build on ROS

We recommand create a new catkin workspace:

~$ mkdir -p krrt_with_ro_ws/src

Change directory to ~/krrt_with_ro_ws/src and clone the repo:

~$ cd krrt_with_ro_ws/src
~/krrt_with_ro_ws/src$ git clone git@github.com:ZJU-FAST-Lab/kino_sampling_with_regional_opti.git

Change directory to ~/krrt_with_ro_ws and make:

~/krrt_with_ro_ws/src$ cd ..
~/krrt_with_ro_ws$ catkin_make

3. Run

In directory ~/krrt_with_ro_ws, set up the environment and launch the simulator:

~/krrt_with_ro_ws$ source devel/setup.bash
~/krrt_with_ro_ws$ roslaunch state_machine rviz.launch

Open another terminal, set up the environment and launch the planner:

~/krrt_with_ro_ws$ source devel/setup.bash
~/krrt_with_ro_ws$ roslaunch state_machine planning.launch

If everything goes well, you should be able to navigate the drone as the gif shows below. (Click 3D Nav Goal in the Rviz panel or press g in keyboard to selecet goal. Click down both left and right mouse buttons and drag to change the goal altitude.)