Coder Social home page Coder Social logo

hxdaze / tgk-planner Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zju-fast-lab/tgk-planner

0.0 1.0 0.0 121.13 MB

License: GNU General Public License v3.0

CMake 7.02% C++ 66.01% C 1.47% Makefile 7.29% Shell 0.52% Python 9.32% Common Lisp 6.05% Cuda 1.53% CSS 0.48% HTML 0.02% Fortran 0.05% Objective-C 0.24%

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

Watchers

James Cloos 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.