{"id":18385789,"url":"https://github.com/uzh-rpg/agilicious","last_synced_at":"2025-04-12T01:43:22.807Z","repository":{"id":38261185,"uuid":"503442656","full_name":"uzh-rpg/agilicious","owner":"uzh-rpg","description":"Agile flight done right! ","archived":false,"fork":false,"pushed_at":"2023-03-07T18:30:25.000Z","size":3943,"stargazers_count":475,"open_issues_count":10,"forks_count":50,"subscribers_count":46,"default_branch":"main","last_synced_at":"2025-02-16T00:24:40.619Z","etag":null,"topics":["agile","autonomous","flight","quadrotor"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uzh-rpg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-06-14T16:42:51.000Z","updated_at":"2025-02-05T00:29:49.000Z","dependencies_parsed_at":"2024-12-24T07:13:47.103Z","dependency_job_id":"09c79bc6-e4aa-4b67-bd27-6e3177b5be75","html_url":"https://github.com/uzh-rpg/agilicious","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzh-rpg%2Fagilicious","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzh-rpg%2Fagilicious/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzh-rpg%2Fagilicious/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzh-rpg%2Fagilicious/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uzh-rpg","download_url":"https://codeload.github.com/uzh-rpg/agilicious/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248505860,"owners_count":21115353,"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":["agile","autonomous","flight","quadrotor"],"created_at":"2024-11-06T01:19:05.390Z","updated_at":"2025-04-12T01:43:22.787Z","avatar_url":"https://github.com/uzh-rpg.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://agilicious.readthedocs.io/en/latest/index.html\"\u003e\u003cimg src=\"docs/img/button.png\" width=\"350\"\u003e\u003c/a\u003e\n\n  \u003ch1\u003eAgilicious: Open-Source and Open-Hardware Agile Quadrotor for Vision-Based Flight\u003c/h1\u003e\n  \u003cbr\u003e\n  \u003cb\u003eAgile flight done right!\u003c/b\u003e\n  \u003cbr\u003e\n  \u003c!-- \u003cimg src=\"https://github.com/uzh-rpg/agilicious/workflows/CLANG_CI/badge.svg?branch=master\"\u003e\n  \u003cimg src=\"https://github.com/uzh-rpg/agilicious/workflows/clang_format/badge.svg?branch=master\"\u003e --\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/17403970/174497361-aa212d77-7036-4f36-840d-c48cab492ac2.gif\" width=\"700\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/21340299/174775412-9595e3ed-7ef9-403b-ab08-0dbe4126243f.gif\" width=\"350\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/21340299/174776470-3a505384-c01e-4759-9173-973aa2bff27f.gif\" width=\"350\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/21340299/174776626-9c0912ac-ed38-4470-a3cf-d8b80dff4e99.gif\" width=\"350\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/21340299/174776748-87c4d27c-2dd0-4aec-9b4c-64fdab4d5c14.gif\" width=\"350\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://rpg.ifi.uzh.ch/docs/ScienceRobotics22_Foehn.pdf\"\u003eRead the Paper!\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=fNYxPLyJ5YY\"\u003eWatch the full Video!\u003c/a\u003e\n\u003c/div\u003e\n\n**Agilicious** is a co-designed hardware and software framework tailored to autonomous, agile quadrotor flight, which has been developed and used since 2016 at the [Robotics and Perception Group (RPG)](http://rpg.ifi.uzh.ch/) of the University of Zurich. Agilicious is described in this [Science Robotics 2022 paper](https://rpg.ifi.uzh.ch/docs/ScienceRobotics22_Foehn.pdf).\nIt is completely open-source and open-hardware and supports both model-based and neural-network-based controllers. \nAlso, it provides high thrust-to-weight and torque-to-inertia ratios for agility, onboard vision sensors, GPU-accelerated compute hardware for real-time perception and neural-network inference, a real-time flight controller, and a versatile software stack.\nIn contrast to existing frameworks, Agilicious offers a unique combination of flexible software and high-performance hardware.\nAgilicious has been used in over 30 scientific papers at our lab, including trajectory tracking for drone racing scenarios at up to 5g and 70km/h ([SciRob21_Foehn](https://rpg.ifi.uzh.ch/docs/ScienceRobotics21_Foehn.pdf), [Video](https://youtu.be/ZPI8U1uSJUs)), vision-based acrobatic flight ([RSS20 Kaufmann](https://rpg.ifi.uzh.ch/docs/RSS20_Kaufmann.pdf), [Video](https://youtu.be/2N_wKXQ6MXA)), obstacle avoidance in both structured and unstructured environments using solely onboard perception ([SciRob21_Loquercio](https://rpg.ifi.uzh.ch/docs/Loquercio21_Science.pdf), [Video](https://www.youtube.com/watch?v=m89bNn6RFoQ)), and hardware-in-the-loop simulation in virtual-reality environments.\nThanks to its versatility, we believe that Agilicious supports the next generation of scientific and industrial quadrotor research.\nThe full list of publications using Agilicious can be found [here](https://rpg.ifi.uzh.ch/aggressive_flight.html).\n\n# Credits\n\nIf you use the code in the academic context, please cite:\n\n* Philipp Foehn, Elia Kaufmann, Angel Romero, Robert Penicka, Sihao Sun, Leonard Bauersfeld, Thomas Laengle, Giovanni Cioffi, Yunlong Song, Antonio Loquercio, Davide Scaramuzza, [\"Agilicious: Open-Source and Open-Hardware Agile Quadrotor for Vision-Based Flight\"](https://rpg.ifi.uzh.ch/docs/ScienceRobotics22_Foehn.pdf), AAAS Science Robotics, 2022, [Video](https://www.youtube.com/watch?v=fNYxPLyJ5YY), [Bibtex](miscellaneous/references/Foehn2022science.bib)\n\nAdditionally, please cite the following papers for the specific extensions you make use of:\n\n* Sihao Sun, Angel Romero, Philipp Foehn, Elia Kaufmann, Davide Scaramuzza, [\"A Comparative Study of Nonlinear MPC and Differential-Flatness-based Control for Quadrotor Agile Flight\"](https://rpg.ifi.uzh.ch/docs/Arxiv21_MPC_Sun.pdf), IEEE Transactions on Robotics, 2022, [Video](https://www.youtube.com/watch?v=XpuRpKHp_Bk), [Bibtex](miscellaneous/references/Sun2022tro.bib)\n* Philipp Foehn, Angel Romero, Davide Scaramuzza, [\"Time-Optimal Planning for Quadrotor Waypoint Flight\"](https://rpg.ifi.uzh.ch/docs/ScienceRobotics21_Foehn.pdf), Science Robotics, 2021, [Video](https://youtu.be/ZPI8U1uSJUs), [Bibtex](miscellaneous/references/Foehn2021Science.bib)\n* Antonio Loquercio, Elia Kaufmann, Rene Ranftl, Mark Müller, Vladlen Koltun, Davide Scaramuzza, [\"Learning High-Speed Flight in the Wild\"](https://rpg.ifi.uzh.ch/docs/Loquercio21_Science.pdf), Science Robotics, 2021, [Video](https://www.youtube.com/watch?v=m89bNn6RFoQ), [Bibtex](miscellaneous/references/Loquercio2021Science.bib)\n* Leonard Bauersfeld, Elia Kaufmann, Philipp Foehn, Sihao Sun, Davide Scaramuzza, [\"NeuroBEM: Hybrid Aerodynamic Quadrotor Model\"](https://rpg.ifi.uzh.ch/docs/RSS21_Bauersfeld.pdf), RSS: Robotics, Science, and Systems, 2021, [Video](https://youtu.be/Nze1wlfmzTQ), [Bibtex](miscellaneous/references/Bauersfeld2021rss.bib)\n* Elia Kaufmann, Antonio Loquercio, Rene Ranftl, Mark Müller, Vladlen Koltun, Davide Scaramuzza, [\"Deep Drone Acrobatics\"](https://rpg.ifi.uzh.ch/docs/RSS20_Kaufmann.pdf), RSS: Robotics, Science, and Systems, 2020, [Video](https://youtu.be/2N_wKXQ6MXA),  [Bibtex](miscellaneous/references/Kaufmann2020rss.bib)\n* Matthias Faessler, Antonio Franchi, Davide Scaramuzza, [\"Differential Flatness of Quadrotor Dynamics Subject to Rotor Drag for Accurate Tracking of High-Speed Trajectories\"](https://rpg.ifi.uzh.ch/docs/RAL18_Faessler.pdf), IEEE Robotics and Automation Letters, 2018, [Video](https://youtu.be/VIQILwcM5PA), [Bibtex](miscellaneous/references/Faessler18ral.bib)\n\n# What's in it for you?\n\nAgilicious is split in two parts, *agilib* and *agiros*.\n\n*agilib* contains base classes and module implementations providing the base functionality necessary for agile flight.\nIt contains controllers, estimators, and logic, but with minimal dependencies (mainly [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)).\nIt allows users to integrate Agilicious into their own infrastructure and can easily be extended with new modules.\nMeanwhile, *agiros* provides bindings to common [ROS](https://www.ros.org) interfaces, which make it easy and quick to set up and get flying, both in simulation and real world.\n\nIn summary, this library offers the following modules:\n\n* Pipelines\n  provide a modular way to combine controllers, estimators, reference trajectories into a complete control system.\n  It is possible to create multiple pipelines and switch between them at runtime, allowing rapid prototyping.\n* Controllers\n  * Model Predictive Control descred in [Falanga IROS'18](https://rpg.ifi.uzh.ch/docs/IROS18_Falanga.pdf) and [Sun TRO'22](https://rpg.ifi.uzh.ch/docs/Arxiv21_MPC_Sun.pdf)\n  * Incremental Nonlinear Dynamic Inversion described in [Sun TRO'20](https://ieeexplore.ieee.org/document/9160894)\n  * Geometric Control described in [Sun TRO'22](https://rpg.ifi.uzh.ch/docs/Arxiv21_MPC_Sun.pdf)\n  * Cascaded PID similar to [Faessler RAL'18](https://rpg.ifi.uzh.ch/docs/RAL18_Faessler.pdf)\n* Estimators\n  * A standard EKF using a pose estimate and propagating with IMU measurements.\n  * An EKF that uses a constant acceleration model and the Pose + IMU measurements.\n  * A feedthrough module that provides a simple way to pipe in your own estimate sources.\n  * A mock estimator that can corrupt an estimate with noise and bias to simulate real-world properties.\n* References\n  * Hover\n  * Velocity Commands\n  * Sampled Trajectories\n  * Polynomial Trajectories\n* Samplers\n  * Time-based sampling along a given reference.\n  * Positional sampling along a given reference which allows to robustly handle large disturbances.\n* Bridges\n  * [RotorS](https://github.com/ethz-asl/rotors_simulator) interface\n  * Serial bridge to interface with our own flight control software\n  * Serial bridge to interface through [LAIRD](https://www.lairdconnect.com) wireless modules.\n  * Serial bridge to interface with [BetaFlight controllers](https://betaflight.com).\n* Pilot\n  which handles all logic and interfacing.\n* Guard\n  A safety guard implementation that can use a secondary estimate (e.g. motion capture) and take over if some criteria are invalidated.\n  The guard can use a secondary pipeline configuration without relying on the user-defined modules.\n  This allows for rapid prototyping with a virtual \"safety net\".\n* Simulator\n  A sophisticated and configurable simulation that runs magnitudes faster than real time and optionally provides aerodynamic BEM models as described in [Bauersfeld RSS'21](https://rpg.ifi.uzh.ch/docs/RSS21_Bauersfeld.pdf).\n\n\n# License\nThe official license file can be found [here](https://rpg.ifi.uzh.ch/docs/Agilicious_LICENSE_AGREEMENT_ACADEMIC_USE.pdf).\n\nTo request access for collaboration, please go [here](https://agilicious.readthedocs.io/en/latest/index.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuzh-rpg%2Fagilicious","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuzh-rpg%2Fagilicious","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuzh-rpg%2Fagilicious/lists"}