Code Monkey home page Code Monkey logo

forces_resilient_planner's Introduction

External Forces Resilient Planner

External Forces Resilient Safe Motion Planning for Quadrotor

About

External Forces Resilient Planner is a systematic framework to achieve robust local planning, which accounts for the influence of extreme external disturbance.

Authors: Yuwei WU and Fei GAO from the ZJU Fast Lab.

Video Links: youtube or bilibili (for Mainland China)

Related Paper: arxiv

Architecture:

If this repo helps your research, please cite our paper at:

@article{wu2021external,
  title={External Forces Resilient Safe Motion Planning for Quadrotor},
  author={Wu, Yuwei and Ding, Ziming and Xu, Chao and Gao, Fei},
  journal={arXiv preprint arXiv:2103.11178},
  year={2021}
}

Acknowledgements

  • Simulators : we use RotorS as our simulation environment.
  • NMPC SolverForces Pro is applied to automatically generate c library to solve nonlinear Model Predictive Control. Thanks mrca-mav as the example about how to use Forces Pro for MPC.
  • External Force Estimator: we use VID-Fusion to get external force.
  • Corridor Generator :We use Galaxy by Xingguang to generate corridor directly on point clouds in our paper and the code will be released after publication of this paper. Now we use MRSL Decomp Util ROS by sikang to replace this part.
  • Front-end Framework: The occupancy map is based on TGK-Planner, and the front-end path searching is revised on the framework of Fast-Planner.

Run The Simulation

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

1. Prerequisites

RotorS

Follow the instructions and create a new catkin workspace at ${YOUR_ROTORS_WORKSPACE_PATH} for Rotor Simulator (use catkin build). We make some revisions on this repository to fit our planner, and you can check the repo () for more details.

Forces Pro and MATLAB

Firstly, you should request an academic license here. You can directly use the compiled version in this repo for testing. And if you want to change settiings of the NMPC solver, you need to use matlab on ubuntu to automatically regenerate it and replace the previous generated code.

After you build on ROS, you can find the folder src/resilient_planner/plan_manage/matlab_code. In matlab terminal, run genearate_solver.m, then re-build in the workspace and you can get the newly generated code in the folder src/resilient_planner/plan_manage/solver for useage.

2. Build on ROS

Clone the repo:

git clone https://github.com/ZJU-FAST-Lab/forces_resilient_planner
cd forces_resilient_planner/src/ThirdParty
git clone https://github.com/ZJU-FAST-Lab/VID-Fusion
cd ../..
catkin_make

3. Run

In ${YOUR_ROTORS_WORKSPACE_PATH}, set up the environment and launch the planner:

source devel/setup.bash
roslaunch rotors_gazebo fast_with_vi_sensor.launch

Then you will see the default map in the gazebo GUI, while the quadrotor is on the ground.

Second, set up VID-Fusion in our workspace,

source devel/setup.bash
roslaunch vid_estimator vid_sim.launch

Then you can use the keyboard to move the quadrotor for VID-Fusion initializations. For details about the estimator setup, please carefully read the documents of VID-Fusion.

In addition, you can also use the keyboard to add manual external disturbance in different directrions.

In directory ~/forces_resilient_planner, open a new terminal and launch the resilient planner:

source devel/setup.bash && roslaunch resilient_planner rotor_sim.launch

If everything goes well, you should be able to navigate the drone as the gif shows below.

Licence

The source code is released under GPLv3 license.

Maintaince

The peoject is under maintaince.

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

forces_resilient_planner's People

Contributors

yuwei-wu avatar

Watchers

 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.