{"id":26845693,"url":"https://github.com/guilyx/flyingcarudacity","last_synced_at":"2025-08-19T06:37:53.347Z","repository":{"id":105103956,"uuid":"250830399","full_name":"guilyx/FlyingCarUdacity","owner":"guilyx","description":"🛩️⚙️ 3D Planning, PID Control, Extended Kalman Filter for the Udacity Flying Car Nanodegree // FCND-Term1","archived":false,"fork":false,"pushed_at":"2020-05-22T19:35:44.000Z","size":44964,"stargazers_count":18,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-30T20:26:57.490Z","etag":null,"topics":["control","drone","graph-search","motion-planning","pid","python","uav","udacity","udacity-flying-car-nanodegree","udacity-nanodegree"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guilyx.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":"2020-03-28T15:31:52.000Z","updated_at":"2025-01-04T09:09:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"90cbd5e2-f83a-4633-a742-1f382f1ece2b","html_url":"https://github.com/guilyx/FlyingCarUdacity","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/guilyx/FlyingCarUdacity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilyx%2FFlyingCarUdacity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilyx%2FFlyingCarUdacity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilyx%2FFlyingCarUdacity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilyx%2FFlyingCarUdacity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guilyx","download_url":"https://codeload.github.com/guilyx/FlyingCarUdacity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guilyx%2FFlyingCarUdacity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271113746,"owners_count":24701613,"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","status":"online","status_checked_at":"2025-08-19T02:00:09.176Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["control","drone","graph-search","motion-planning","pid","python","uav","udacity","udacity-flying-car-nanodegree","udacity-nanodegree"],"created_at":"2025-03-30T19:38:09.975Z","updated_at":"2025-08-19T06:37:53.315Z","avatar_url":"https://github.com/guilyx.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Udacity - Fly Car NanoDegree](https://s3.amazonaws.com/udacity-sdc/github/shield-carnd.svg?style=flat-square)](https://www.udacity.com/course/flying-car-nanodegree--nd787)\n[![Say Thanks][saythanks-shield]][saythanks-url]\n[![HitCount](http://hits.dwyl.com/guilyx/autonomous-uav.svg)](http://hits.dwyl.com/guilyx/autonomous-uav)\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"misc/controls-menu.gif\" alt=\"Simulator\" width=\"540\" height=\"400\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eAutonomous UAV Nanodegree\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n     Path planner, cascaded controller, extended kalman filter...\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/guilyx/autonomous-uav\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/guilyx/autonomous-uav\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/guilyx/autonomous-uav/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/guilyx/autonomous-uav/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\n\n## Table of Contents\n\n* [About the Project](#about-the-project)\n* [Setup](#setup)\n* [Run](#run)\n  * [UAV Simulator](#udacity-simulator-planning)\n  * [Matplotlib](#matplotlib-planning)\n  * [Control](#udacity-simulator-control)\n* [Roadmap](#roadmap)\n* [Contribute](#contribute)\n* [License](#license)\n* [Contact](#contact)\n* [Contributors](#contributors)\n\n## About the Project\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"misc/planning.gif\" alt=\"Planning\" width=\"600\" height=\"450\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThis is the projects from Udacity's FCND (Flying Car Nanodegree). It contains more or less elaborate planning and discretization techniques. Implemented for the Udacity simulator as well as in an \"empty shell\" plotted with matplotlib. It also contains control utilitaries for uav flights and a flight trajectories scenarii.\n\n\n## Setup\n\n1. [Download miniconda](https://conda.io/miniconda.html) and install it.\n2. Star the project (hehe).\n2. Clone the project. `git clone https://github.com/guilyx/autonomous-uav.git`\n3. Create the miniconda environment. `conda env create -f environment.yml`\n4. Activate the environment. `source activate fcnd`.\n5. If everything went well you can now use the projects scripts.\n6. Download latest version of the [UAV Simulator from Udacity](https://github.com/udacity/FCND-Simulator-Releases/releases)\n\nYou should now be ready to go.\n\n## Run\n\n### Udacity Simulator Planning\n\nThese four scripts will build your plan for the simulator with different planning/discretizing approaches. As of now they all use A* to find the optimal path and prune the colinear points of the path by default. ( comment function call to remove that )\n\n1. Grid discretization : `python src/motion_planning_grid.py`\n2. Medial Axis discretization : `python src/motion_planning_medialaxis.py`\n3. Voronoi Graph discretization : `python src/motion_planning_voronoi.py`\n4. Probabilistic Graph discretization : `python src/motion_planning_probabilisticroadmap.py` # Under Development\n\nMedial Axis and Grid discretization have diagonal actions activated by default, you can change the value in the MotionPlanner constructor. Note that all the scripts use arguments to define the goal position. Use `--goal_lon=x --goal_lat=y --goal_alt=z` to use a custom destination. A default one is defined so it's not mandatory.\n\n### Matplotlib Planning\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"misc/allplots.png\" alt=\"Matplot Plots\" width=\"1100\" height=\"300\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n1. Grid discretization : `python src/grid_search.py`\n2. Medial Axis discretization : `python src/medialaxis_search.py` (not working)\n3. Voronoi Graph discretization : `python src/voronoi_search.py`\n4. Probabilistic Graph discretization : `python src/probabilistic_search.py`\n5. Receding Horizon : `none`\n6. Potential Field : `none`\n\n### Control and Estimation Simulator\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"misc/drone_scenar5.gif\" alt=\"Controls\" width=\"800\" height=\"350\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nTo use the simulator for control testing, follow these steps :\n\n1. `cd _QuadrotorEstimator`\n2. `mkdir build \u0026\u0026 cd build` \n3. `cmake ..` \n4. `make`\n5. `./CPPEstSim`\n\nYou can use right click to change scenario, as well as change the control parameters ( that are already tuned ) in `_QuadrotorController/config/QuadControlParams.txt` and `_QuadrotorController/config/QuadEstimatorEKF.txt`.\nNote that I do not own the simulator, it was designed and built by Fotokite. (Sergei Lupashin in particular)\n\nEKF Estimator is located in `QuadEstimatorEKF.cpp` and the Cascaded PID Controller is located in `QuadControl.cpp`.\n\n### Udacity Simulator Control\n\nNow let's mix things up ! (under dev)\n\n## Roadmap\n\nSee the [open issues](https://github.com/guilyx/autonomous-uav/issues) for a list of proposed features (and known issues).\n\n## Contribute\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n### Contribute on proposed features\n\n1. Choose any open issue from [here](https://github.com/guilyx/autonomous-uav/issues). \n2. Comment on the issue: `Can I work on this?` and get assigned.\n3. Make changes to your fork and send a PR.\n\nOtherwise just create the issue yourself, and we'll discuss and assign you to it if serves the project !\n\nTo create a PR:\n\nFollow the given link to make a successful and valid PR: https://help.github.com/articles/creating-a-pull-request/\n\nTo send a PR, follow these rules carefully, **otherwise your PR will be closed**:\n\n1. Make PR title in this formats: \n```\nFixes #IssueNo : Name of Issue\n``` \n```\nFeature #IssueNo : Name of Issue\n```\n```\nEnhancement #IssueNo : Name of Issue\n```\n\nAccording to what type of issue you believe it is.\n\nFor any doubts related to the issues, i.e., to understand the issue better etc, comment down your queries on the respective issue.\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n## Contact\n\nBased on seed project from Udacity ( 3D Motion Planning - Flying Cars Nanodegree )\nErwin Lejeune - [@spida_rwin](https://twitter.com/spida_rwin) - erwin.lejeune15@gmail.com\n\n## Contributors\n\n- [Erwin Lejeune](https://github.com/Guilyx)\n\n[saythanks-shield]: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg?style=flat-square\n[saythanks-url]: https://saythanks.io/to/erwin.lejeune15%40gmail.com?style=flat-square\n[contributors-shield]: https://img.shields.io/github/contributors/guilyx/autonomous-uav.svg?style=flat-square\n[contributors-url]: https://github.com/guilyx/autonomous-uav/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/guilyx/autonomous-uav.svg?style=flat-square\n[forks-url]: https://github.com/guilyx/autonomous-uav/network/members\n[stars-shield]: https://img.shields.io/github/stars/guilyx/autonomous-uav.svg?style=flat-square\n[stars-url]: https://github.com/guilyx/autonomous-uav/stargazers\n[issues-shield]: https://img.shields.io/github/issues/guilyx/autonomous-uav.svg?style=flat-square\n[issues-url]: https://github.com/guilyx/autonomous-uav/issues\n[license-shield]: https://img.shields.io/github/license/guilyx/autonomous-uav.svg?style=flat-square\n[license-url]: https://github.com/guilyx/autonomous-uav/blob/master/LICENSE.md\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/erwinlejeune-lkn\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilyx%2Fflyingcarudacity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguilyx%2Fflyingcarudacity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilyx%2Fflyingcarudacity/lists"}