├── LICENSE ├── README.md └── pics └── real_exp_maze.png /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2023, Kumar Robotics 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Design and Evaluation of Motion Planners for Quadrotors 2 | *What two-stage quadrotor motion planner should I use for my environment?* [arXiv](https://arxiv.org/abs/2309.13720), [video](https://youtu.be/xLHHDw3IQr4) 3 | 4 | ![Experiment of Quadrotor flying through a small maze](https://github.com/KumarRobotics/kr_mp_design/blob/main/pics/real_exp_maze.png) 5 | 6 | This repo gives a guideline on what motion planners to use for different environments. This repo provided three tools: 7 | 1. A set of two-stage motion planners. 8 | 2. A set of map generators (obstacle, maze, real datasets). 9 | 3. An evaluation metric for any environment called Environment Complexity Signature (ECS). You can use it to evaluate your environment and choose the right motion planner. 10 | 11 | This repo is tested with Ubuntu 20.04 and ROS Noetic. Everything in this repo flies on hardware! 12 | ### Planners 13 | #### Frontend planners 14 | 1. Jump Point Search (JPS) 15 | 2. RRT* (OMPL) 16 | 3. Motion Planning Primitive (MPL) 17 | 4. Stable Sparse RRT (SST) (OMPL) 18 | 5. Dispersion Planner 19 | #### Backend planners 20 | 1. GCOPTER (Differential Flatness) 21 | 2. ALTRO (Indirect Trajectory Optimization) 22 | ### Maps 23 | All maps are of size 20m x 10m x 5m. We provide three types of maps: 24 | 1. Obstacle Map: Random 3D maps with obstacles, where the density of each type can be specified. 25 | 2. Maze Map (Image Map Loader): Random 3D maze maps from a 2D png file. Load your own images by specifying a png file or folder. 26 | 3. Real Datasets (pcd Map Loader): We cropped data from STPLS3D and M3ED to the same size. Load your own point cloud map by inputting a pcd file. 27 | 28 | 29 | ### Environment Complexity Signature (ECS) 30 | ECS measures the complexity of an environment. It consists of density index, clutter index, and structure index. Please see the paper for which planner performs best in each ECS range. You can use ECS to evaluate your environment and choose the right motion planner. 31 | 32 | ## Installation 33 | The easiest way is to use vcs to clone all the repos. 34 | Make a ros workspace and cd to src 35 | ``` 36 | git clone -b dev_not_fixed_dt git@github.com:ljarin/kr_autonomous_flight.git 37 | sudo apt install python3-vcstool 38 | vcs import < kr_autonomous_flight/external_all.yaml #import dependencies, GCOPTER and Motion Primitive will have access issues, please email maintainer to get an copy 39 | vcs import < motion_primitives/deps_ssh.repos # import dispersion planner dependencies 40 | rosdep install --from-paths src --ignore-src -r -y 41 | sudo apt install -y libspdlog-dev ros-noetic-ompl libpcl-dev libeigen3-dev libtbb-dev libgtest-dev python3-pcl libtool libnlopt-dev 42 | pip3 install pandas tqdm 43 | catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release #if you want other cmake flags later make sure you reset the config 44 | catkin build 45 | ``` 46 | If building packages require a specific cmake version, follow [this](https://apt.kitware.com/) for cmake installation instructions. 47 | 48 | Download the files from [here](https://drive.google.com/drive/folders/1LImwhYTajVImL3pydA4d91aILSOMddD3?usp=sharing) for point-cloud of real maps, pre-generated maze maps, and dispersion planner precomputed offline file. If you want to run obstacle maps with other planners, you do not need these files. 49 | 50 | Next give path to the json file in tracker_params_mp.yaml : dispersion/graph_file: FILL IN PATH 51 | 52 | Coming soon: Splitting the repos to fly the quad to a different repo than the ones that do mapping. 53 | ### Components 54 | 1. Planners: 55 | 1. Two-Stage framework to switch between planners. This repo also contains JPS, RRT*, MPL, SST: [kr_autonomous_flight](https://github.com/ljarin/kr_autonomous_flight/tree/dev_not_fixed_dt), [JPS](https://github.com/KumarRobotics/jps3d) 56 | 2. Dispersion Planner: [motion_primitive](https://github.com/ljarin/motion_primitives) 57 | 3. GCOPTER: [GCOPTER](https://github.com/yuwei-wu/GCOPTER.git) 58 | 4. ALTRO:[kr_ilqr_optimizer](https://github.com/KumarRobotics/kr_ilqr_optimizer/tree/icra_final), [altro](https://github.com/shaoyifei96/altro/tree/ros) 59 | 2. Maps: We have consolidated all three types of maps into one repo [kr_param_map](https://github.com/KumarRobotics/kr_param_map). To generate your own maze file, use this generator [here](https://github.com/shaoyifei96/multi_solution_mazegenerator) 60 | 3. ECS: To evaluate for a new environment, use [kr_param_map](https://github.com/KumarRobotics/kr_param_map) 61 | 4. Datasets: [STPLS3D](https://www.stpls3d.com/) and [M3ED](https://m3ed.io/) 62 | 63 | 64 | # Citation 65 | ``` 66 | @INPROCEEDINGS{10610207, 67 | author={Shao, Yifei Simon and Wu, Yuwei and Jarin-Lipschitz, Laura and Chaudhari, Pratik and Kumar, Vijay}, 68 | booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)}, 69 | title={Design and Evaluation of Motion Planners for Quadrotors in Environments with Varying Complexities}, 70 | year={2024}, 71 | volume={}, 72 | number={}, 73 | pages={10033-10039}, 74 | keywords={Measurement;Navigation;Software algorithms;Kinematics;Planning;Complexity theory;Trajectory}, 75 | doi={10.1109/ICRA57147.2024.10610207}} 76 | 77 | ``` 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /pics/real_exp_maze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KumarRobotics/kr_mp_design/3212d3d75f3d8990d29bf8e259624b362fd2836b/pics/real_exp_maze.png --------------------------------------------------------------------------------