Code Monkey home page Code Monkey logo

tgk-planner's Introduction

TGK-Planner

TGK-Planner: An Efficient Topology Guided Kinodynamic Planner for Autonomous Quadrotors

Update

A newer version is in here.

About

TGK-Planner is a hierarchical trajectory planner for multirotors with a sampling-based kinodynamic front-end and an optimization back-end. It can serve as a global kinodynamic planner to find asymptotically optimal trajectories or as a local kinodynamic planner for quick replans.

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

Related Paper: Arxiv Preprint (Accepted by IEEE RA-L)

Video Links: Youtube, Bilibili (For Mainland China)

Run The Simulation

The repo has been tested on Ubuntu 16.04 and 18.04 with ros-desktop-full installation.

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 tgk_ws/src

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

~$ cd tgk_ws/src
~/tgk_ws/src$ git clone https://github.com/ZJU-FAST-Lab/TGK-Planner.git

Change directory to ~/tgk_ws and make:

~/tgk_ws/src$ cd ..
~/tgk_ws$ catkin_make

3. Run

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

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

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

~/tgk_ws$ source devel/setup.bash
~/tgk_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.)

By default, the global map is known, and the space outside a certain local bound is treated as free.

Use Onboard Sensors

To acquire more realistic simulations, a GPU-based onboard depth camera sensor simulator can be enabled by changing the CMakeLists.txt in the package depth_sensor_simulator as below and then re-compile. (Do not foget to change the 'arch' and 'code' flags according to your graphics card devices. You can check the right code here.)

#set(ENABLE_CUDA false)
set(ENABLE_CUDA true)
...
list(APPEND CUDA_NVCC_FLAGS -arch=sm_30)
list(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_30,code=sm_30)

Set the occ_map/use_global_map param in planning.launch to false and re-launch both rviz.launch and rviz.launch as before.

<param name="occ_map/use_global_map" value="false" type="bool"/>

Now the map is built on instant depth observations.

Main Params That Affect Performance

In planning.launch:

# Smaller rho means more aggressive maneuvers and higher flying speed.
<param name="krrt/rho" value="0.13" type="double"/> 

# It should decrease as rho increases.
<param name="sampler/vel_mag_mean" value="3.0" type="double" />

# Time budget for replan. More time budget leads to higher quality trajectories.
<param name="fsm/replan_time" value="0.05" type="double"/> RRT*

In simulator.launch:

# Obstacle numbers.
<param name="map/obs_num" value="550"/>    
<param name="map/circle_num" value="100"/>   

Acknowledgements

We use a self developed Root-Finder to solve polynomial equations.

Licence

The source code is released under GPLv3 license.

Maintaince

The peoject is under maintaince.

For any technical issues, please contact Hongkai YE ([email protected], [email protected]) or Fei GAO ([email protected]).

tgk-planner's People

Contributors

kyleyehh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tgk-planner's Issues

Building error

Building CXX object TGK-Planner/mapping/occ_grid/CMakeFiles/occ_grid.dir/src/raycast.cpp.o
/home/lxl/tgk_ws/src/TGK-Planner/uav_simulator/cascade_control/src/cascadecontrollernode.cpp:19:24: error: expected constructor, destructor, or type conversion before ‘(’ token
PLUGINLIB_DECLARE_CLASS(cascade_controller, CascadeControllerNode,
^
/home/lxl/tgk_ws/src/TGK-Planner/uav_simulator/so3_control/src/so3_control_nodelet.cpp:217:24: error: expected constructor, destructor, or type conversion before ‘(’ token
PLUGINLIB_DECLARE_CLASS(so3_control, SO3ControlNodelet, SO3ControlNodelet,

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.