Skip to content

ZJU-FAST-Lab/forces_resilient_planner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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: Y. Wu, Z. Ding, C. Xu and F. Gao, "External Forces Resilient Safe Motion Planning for Quadrotor," in IEEE Robotics and Automation Letters, vol. 6, no. 4, pp. 8506-8513. arxiv Preprint, IEEE Xplore

Architecture:

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

@ARTICLE{9531427,
  author={Wu, Yuwei and Ding, Ziming and Xu, Chao and Gao, Fei},
  journal={IEEE Robotics and Automation Letters}, 
  title={External Forces Resilient Safe Motion Planning for Quadrotor}, 
  year={2021},
  volume={6},
  number={4},
  pages={8506-8513},
  doi={10.1109/LRA.2021.3110316}}

Acknowledgements

  • Simulators : we use RotorS as our simulation environment.
  • NMPC SolverForces Pro is applied to generate c library to solve nonlinear Model Predictive Control automatically. 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 the 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

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

Forces Pro and Matlab

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

After you build on ROS, you can find the folder src/resilient_planner/plan_manage/matlab_code. In the Matlab terminal, run generate_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 usage.

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 around for VID-Fusion initializations. For details about the estimator setup, please carefully read the documents of VID-Fusion.

After finishing the setup process, use the keyboard to make the quadrotor hovering (around z = 1.0)

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

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

If everything goes well, you should be able to navigate the drone by 2D-Nav Goal.

4. Add the External Force

The research of the wind field is out of the scope of our paper, we only provide several simple methods to add external forces. You can add the external force by:

  • keyboard to add manual random external force in different dimensions (see the keyboard image)
  • disturb manager to encode constant external force with some conditions (eg: vary with time, position)
  • the customed wind field, follow the instructions here

Licence

The source code is released under GPLv3 license.

Maintaince

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

For commercial inquiries, please contact Fei GAO ([email protected]).

About

External Forces Resilient Safe Motion Planning for Quadrotor

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published