Front-end: Kinodynamic RRT* integrated with fast regional optimization.
Back-end: Quadratic programming incorporating obstacles.
Planning global kinodynamic trajectories for multirotor flight.
Authors: Hongkai YE and Fei GAO from the ZJU Fast Lab.
Related Paper: Integrating Fast Regional Optimization into Sampling-based Kinodynamic Planning for Multirotor Flight.
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:
The uav_simulator depends on the C++ linear algebra library Armadillo. You can install it by:
~$ sudo apt-get install libarmadillo-dev
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 https://github.com/kyleYehh/kino_sampling_with_regional_opti
Change directory to ~/krrt_with_ro_ws and make:
~/krrt_with_ro_ws/src$ cd ..
~/krrt_with_ro_ws$ catkin_make
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.)
- Instead of inflating the occupancy map, we compute a distance field which provides the distance to the nearest obstacle for each grid, and any grid with a distance less than a predetermined length is considered occupied.