{"id":18621334,"url":"https://github.com/ethz-asl/mav_active_3d_planning","last_synced_at":"2025-05-15T08:10:41.089Z","repository":{"id":38350086,"uuid":"154641455","full_name":"ethz-asl/mav_active_3d_planning","owner":"ethz-asl","description":"Modular framework for online informative path planning.","archived":false,"fork":false,"pushed_at":"2024-12-11T12:17:59.000Z","size":1173,"stargazers_count":618,"open_issues_count":2,"forks_count":115,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-04-03T04:09:15.850Z","etag":null,"topics":["drone","ipp","mav","path","path-planning","planning"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethz-asl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-25T09:05:47.000Z","updated_at":"2025-03-27T07:21:21.000Z","dependencies_parsed_at":"2022-07-09T04:46:04.152Z","dependency_job_id":"b7611878-1143-4bdb-8ba4-8baa7bcf4b8a","html_url":"https://github.com/ethz-asl/mav_active_3d_planning","commit_stats":{"total_commits":231,"total_committers":11,"mean_commits":21.0,"dds":0.4069264069264069,"last_synced_commit":"2f3e0a56fce950131758c55c37fef2b5e81722b0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fmav_active_3d_planning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fmav_active_3d_planning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fmav_active_3d_planning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-asl%2Fmav_active_3d_planning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethz-asl","download_url":"https://codeload.github.com/ethz-asl/mav_active_3d_planning/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166865,"owners_count":21058481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drone","ipp","mav","path","path-planning","planning"],"created_at":"2024-11-07T04:10:46.506Z","updated_at":"2025-04-10T06:20:09.663Z","avatar_url":"https://github.com/ethz-asl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build Tests (Ubuntu 20.04 + ROS Noetic)](https://github.com/ethz-asl/mav_active_3d_planning/actions/workflows/build_test.yml/badge.svg)\n# mav\\_active\\_3d\\_planning\n**mav\\_active\\_3d\\_planning** is a modular framework for online informative path planner (IPP) design. \nWe provide a modular framework for creating, evaluating and employing primarily sampling based, receding horizon algorithms that optimize a gain while minimizing a cost.\n\nOnline-IPP for **Exploration** (left), **3D Reconstruction** (right) \u0026 **more**.\n![git_gif](https://user-images.githubusercontent.com/36043993/72073736-cbbe2f00-32f0-11ea-977a-dbe7e7a05098.gif)\n\n# Table of Contents\n**Credits**\n* [Paper and Video](#Paper-and-Video)\n\n**Setup**\n* [Packages](#Packages)\n* [Dependencies](#Dependencies)\n* [Installation](#Installation)\n* [Data Repository](#Data-Repository)\n\n**Examples**\n* [Configuring a Planner](#Configuring-a-Planner)\n* [Run an Experiment](#Run-an-Experiment)\n\n**Documentation**\n* [Planner Structure](https://github.com/ethz-asl/mav_active_3d_planning/wiki/Planner-Structure)\n* [Planner Design Framework](https://github.com/ethz-asl/mav_active_3d_planning/wiki/Planner-Design-Framework)\n* [Running and Evaluating a Simulated Experiment](https://github.com/ethz-asl/mav_active_3d_planning/wiki/Running-and-Evaluating-a-Simulated-Experiment)\n* [Code Index](https://github.com/ethz-asl/mav_active_3d_planning/wiki/Code-Index)\n\nFor additional information please see the [wiki](https://github.com/ethz-asl/mav_active_3d_planning/wiki).\n\n# Credits\n## Paper and Video\nIf you find this package useful for your research, please consider citing our paper:\n\n* Lukas Schmid, Michael Pantic, Raghav Khanna, Lionel Ott, Roland Siegwart, and Juan Nieto, \"**An Efficient Sampling-based Method for Online Informative Path Planning in Unknown Environments**\", in *IEEE Robotics and Automation Letters*, vol. 5, no. 2, pp. 1500-1507, April 2020 [[IEEE](https://ieeexplore.ieee.org/abstract/document/8968434) | [ArXiv](https://arxiv.org/abs/1909.09548) | [Video](https://www.youtube.com/watch?v=lEadqJ1_8Do)]\n  ```bibtex\n  @ARTICLE{Schmid20ActivePlanning,\n    author={L. {Schmid} and M. {Pantic} and R. {Khanna} and L. {Ott} and R. {Siegwart} and J. {Nieto}},\n    journal={IEEE Robotics and Automation Letters},\n    title={An Efficient Sampling-Based Method for Online Informative Path Planning in Unknown Environments},\n    year={2020},\n    volume={5},\n    number={2},\n    pages={1500-1507},\n    keywords={Motion and path planning;aerial systems;perception and autonomy;reactive and sensor-based planning},\n    doi={10.1109/LRA.2020.2969191},\n    ISSN={2377-3774},\n    month={April},\n  }\n  ```\n  \n# Setup\n## Packages\nThe mav_active_3d_planning package is divided into separate packages, such that only the dependencies necessary for your application package need to be built.\n\nAlthough packages are organized for the catkin workflow, the *core* package can be built as a stand-alone library for non-ROS use. All packages with a short description are listed below.\n\n## Dependencies\nPackages and their dependencies:\n* **core:**\n \n   Central logic of active\\_3d\\_planners. Dependencies:\n    * `catkin_simple` ([https://github.com/catkin/catkin_simple](https://github.com/catkin/catkin_simple))\n    * `glog_catkin` ([https://github.com/ethz-asl/glog_catkin](https://github.com/ethz-asl/glog_catkin))\n    * `eigen_catkin` ([https://github.com/ethz-asl/eigen_catkin](https://github.com/ethz-asl/eigen_catkin))\n    \n* **ros:** \n\n   Interface to ROS for the general active\\_3d\\_planner and ROS specific modules.\n\n* **mav:** \n\n   Modules and interfaces specific to Micro Aerial Vehicles (MAV), using ROS. Dependencies:\n    * `mav_trajectory_generation` ([https://github.com/ethz-asl/mav_trajectory_generation](https://github.com/ethz-asl/mav_trajectory_generation))\n\n* **voxblox:**\n\n   Using voxblox as map representation and modules specific to voxblox. Dependencies:\n    * `voxblox` ([https://github.com/ethz-asl/voxblox](https://github.com/ethz-asl/voxblox))\n\n* **app_reconstruction:**\n\n   Application package for autonomous 3D reconstruction with MAVs, including automated simulation and evaluation routines. \n   In order to enable simulations uncomment the dependencies in these [lines](https://github.com/ethz-asl/mav_active_3d_planning/blob/46143ae558c3d62fa2673a43cbfdd22fb6de12a9/mav_active_3d_planning/package.xml#L13-L17)\n   Dependencies:\n    * `unreal_cv_ros` ([https://github.com/ethz-asl/unreal_cv_ros](https://github.com/ethz-asl/unreal_cv_ros))\n    * `rotors_simulator` ([https://github.com/ethz-asl/rotors_simulator](https://github.com/ethz-asl/rotors_simulator))\n    * `mav_control_rw` ([https://github.com/ethz-asl/mav_control_rw](https://github.com/ethz-asl/mav_control_rw))\n\n## Installation\nInstallation instructions for Linux.\n\n**Prerequisites**\n\n1. If not already done so, install [ROS](http://wiki.ros.org/ROS/Installation) (Desktop-Full is recommended).\n\n2. If not already done so, create a catkin workspace with [catkin tools](https://catkin-tools.readthedocs.io/en/latest/):\n\n```shell script\nsudo apt-get install python-catkin-tools\nmkdir -p ~/catkin_ws/src\ncd ~/catkin_ws\ncatkin init\ncatkin config --extend /opt/ros/melodic  # exchange melodic for your ros distro if necessary\ncatkin config --cmake-args -DCMAKE_BUILD_TYPE=Release\ncatkin config --merge-devel\n```\n\n**Installation**\n\n1. Move to your catkin workspace: \n```shell script\ncd ~/catkin_ws/src\n```\n\n2. Install system dependencies: \n```shell script\nsudo apt-get install python-wstool python-catkin-tools\n```\n\n3. Download repo using a SSH key or via HTTPS: \n```shell script\ngit clone git@github.com:ethz-asl/mav_active_3d_planning.git # SSH\ngit clone https://github.com/ethz-asl/mav_active_3d_planning.git # HTTPS\n```\n\n4. Download and install the dependencies of the packages you intend to use.\n\n   * **Full Install:** dependencies of **all** packages can be installed using rosinstall:\n   ```shell script\n   # system dependencies, replace melodic with your ros distro if necessary:\n   sudo apt-get install ros-melodic-cmake-modules ros-melodic-control-toolbox ros-melodic-joy ros-melodic-octomap-ros ros-melodic-mavlink ros-melodic-geographic-msgs autoconf libyaml-cpp-dev protobuf-compiler libgoogle-glog-dev liblapacke-dev libgeographic-dev\n   pip install future unrealcv\n\n   # If you already intialized ws tool use 'wstool merge -t'\n   wstool init . ./mav_active_3d_planning/mav_active_3d_planning_ssh.rosinstall # SSH\n   wstool init . ./mav_active_3d_planning/mav_active_3d_planning_https.rosinstall # HTTPS\n   wstool update\n   ```\n   * **Partial Install:** Install dependencies of the packages you intend to use ([listed above](#Dependencies)) and remove unwanted packages from `mav_active_3d_planning/package.xml` as well as their source folders.\n\n5. Source and compile: \n```shell script\nsource ../devel/setup.bash\ncatkin build mav_active_3d_planning # Builds this package only\ncatkin build # Builds entire workspace, recommended for full install.\n```\n\n## Data Repository\nRelated resources, such as experiment scenarios and ground truth point clouds, can be downloaded from [here](https://drive.google.com/drive/folders/1Q0adl6CJURejYhSnc6fxctvg8YlKfRBY?usp=sharing). \n\n# Examples\n## Configuring a Planner\nThe `active_3d_planning_app_reconstruction` is an application package, that launches an active\\_3d\\_planner.\nA verbose example of how planner configurations are specified is given in `cfg/planners/example_config.yaml`.\nThe example planner uses local motion primitives to expand new segments and the number of unknown voxels as gain formulation. \nTo see the planner in action, start an unreal\\_cv\\_ros game, e.g. [CityBuilding](#Data-Repository), make sure to tab out of game control (Alt+Tab for Binary, Ctrl+Shift+F1 for Editor) and then run \n```\nroslaunch active_3d_planning_app_reconstruction example.launch\n```\nThe planner will be built from the config file and visualized in RVIZ. \nA useful parameter to set is `verbose_modules: true`, as all available params of all built modules will be printed to console. \n\n![mav_3d_ex_config](https://user-images.githubusercontent.com/36043993/58561558-aaa84280-8227-11e9-9b89-def052db17a8.png)\n\nA local motion primitive based planner starting exploration.\n\n**Note:** The reconstruction planner used in the paper is not the demo one and is given in `active_3d_planning_app_reconstruction/cfg/planners/reconstruction_planner.yaml`. You can run it using\n```\nroslaunch active_3d_planning_app_reconstruction example.launch planner_config:=planners/reconstruction_planner.yaml\n```\n\n## Run an Experiment\nIn order to record data of the example planner, run \n```\nroslaunch active_3d_planning_app_reconstruction run_experiment.launch data_directory:=/path/to/my_data_dir\n```\nThis will collect and store raw data in a new folder in `my_data_dir`.\nWhen the experiment has finished by time limit (30 minutes) or by pressing Ctrl+C, run \n```\nroslaunch active_3d_planning_app_reconstruction evaluate_experiment.launch target_directory:=\n/path/to/my_data_dir gt_file_path:=/path/to/CityBuilding/gt_surface_pcl.ply\n```\nto evaluate the raw data.\nWhen the process is finished, the created data directory contains a folder 'Graphs', containing the evaluation results as well as a folder 'Meshes', which can be visualized using e.g. [CloudCompare](https://www.danielgm.net/cc/). \n\n![SimulationOverview](https://user-images.githubusercontent.com/36043993/59348747-33d77300-8d18-11e9-935e-d89a3fc64f64.png)\nPerformance overview of the planner over the course of the simulated experiment.\n\n\n![PerformanceOverview](https://user-images.githubusercontent.com/36043993/59348802-5d909a00-8d18-11e9-984f-7a1dc7c7a8ba.png)\nDistribution of computation time for the different modules. The majority is expended for gain computation (red). Notice that the voxblox map serialization increases as the map grows (dark grey).\n\n\n![mav_active](https://user-images.githubusercontent.com/36043993/59349935-253e8b00-8d1b-11e9-87d8-6d57463b9596.png)\nFinal reconstruction mesh and error coloring visualized in CloudCompare.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fmav_active_3d_planning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethz-asl%2Fmav_active_3d_planning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-asl%2Fmav_active_3d_planning/lists"}