Skip to content

🛩️⚙️ 3D Planning, PID Control, Extended Kalman Filter for the Udacity Flying Car Nanodegree // FCND-Term1

License

Notifications You must be signed in to change notification settings

guilyx/FlyingCarUdacity

Repository files navigation

Udacity - Fly Car NanoDegree Say Thanks HitCount Contributors Forks Stargazers Issues MIT License LinkedIn


Simulator

Autonomous UAV Nanodegree

Path planner, cascaded controller, extended kalman filter...
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents

About the Project

Planning

This 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.

Setup

  1. Download miniconda and install it.
  2. Star the project (hehe).
  3. Clone the project. git clone https://github.com/guilyx/autonomous-uav.git
  4. Create the miniconda environment. conda env create -f environment.yml
  5. Activate the environment. source activate fcnd.
  6. If everything went well you can now use the projects scripts.
  7. Download latest version of the UAV Simulator from Udacity

You should now be ready to go.

Run

Udacity Simulator Planning

These 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 )

  1. Grid discretization : python src/motion_planning_grid.py
  2. Medial Axis discretization : python src/motion_planning_medialaxis.py
  3. Voronoi Graph discretization : python src/motion_planning_voronoi.py
  4. Probabilistic Graph discretization : python src/motion_planning_probabilisticroadmap.py # Under Development

Medial 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.

Matplotlib Planning

Matplot Plots

  1. Grid discretization : python src/grid_search.py
  2. Medial Axis discretization : python src/medialaxis_search.py (not working)
  3. Voronoi Graph discretization : python src/voronoi_search.py
  4. Probabilistic Graph discretization : python src/probabilistic_search.py
  5. Receding Horizon : none
  6. Potential Field : none

Control and Estimation Simulator

Controls

To use the simulator for control testing, follow these steps :

  1. cd _QuadrotorEstimator
  2. mkdir build && cd build
  3. cmake ..
  4. make
  5. ./CPPEstSim

You 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. Note that I do not own the simulator, it was designed and built by Fotokite. (Sergei Lupashin in particular)

EKF Estimator is located in QuadEstimatorEKF.cpp and the Cascaded PID Controller is located in QuadControl.cpp.

Udacity Simulator Control

Now let's mix things up ! (under dev)

Roadmap

See the open issues for a list of proposed features (and known issues).

Contribute

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Contribute on proposed features

  1. Choose any open issue from here.
  2. Comment on the issue: Can I work on this? and get assigned.
  3. Make changes to your fork and send a PR.

Otherwise just create the issue yourself, and we'll discuss and assign you to it if serves the project !

To create a PR:

Follow the given link to make a successful and valid PR: https://help.github.com/articles/creating-a-pull-request/

To send a PR, follow these rules carefully, otherwise your PR will be closed:

  1. Make PR title in this formats:
Fixes #IssueNo : Name of Issue
Feature #IssueNo : Name of Issue
Enhancement #IssueNo : Name of Issue

According to what type of issue you believe it is.

For any doubts related to the issues, i.e., to understand the issue better etc, comment down your queries on the respective issue.

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Based on seed project from Udacity ( 3D Motion Planning - Flying Cars Nanodegree ) Erwin Lejeune - @spida_rwin - [email protected]

Contributors

About

🛩️⚙️ 3D Planning, PID Control, Extended Kalman Filter for the Udacity Flying Car Nanodegree // FCND-Term1

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages