Path planner, cascaded controller, extended kalman filter...
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
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.
- Download miniconda and install it.
- Star the project (hehe).
- Clone the project.
git clone https://github.com/guilyx/autonomous-uav.git
- Create the miniconda environment.
conda env create -f environment.yml
- Activate the environment.
source activate fcnd
. - If everything went well you can now use the projects scripts.
- Download latest version of the UAV Simulator from Udacity
You should now be ready to go.
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 )
- Grid discretization :
python src/motion_planning_grid.py
- Medial Axis discretization :
python src/motion_planning_medialaxis.py
- Voronoi Graph discretization :
python src/motion_planning_voronoi.py
- 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.
- Grid discretization :
python src/grid_search.py
- Medial Axis discretization :
python src/medialaxis_search.py
(not working) - Voronoi Graph discretization :
python src/voronoi_search.py
- Probabilistic Graph discretization :
python src/probabilistic_search.py
- Receding Horizon :
none
- Potential Field :
none
To use the simulator for control testing, follow these steps :
cd _QuadrotorEstimator
mkdir build && cd build
cmake ..
make
./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
.
Now let's mix things up ! (under dev)
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Choose any open issue from here.
- Comment on the issue:
Can I work on this?
and get assigned. - 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:
- 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.
Distributed under the MIT License. See LICENSE
for more information.
Based on seed project from Udacity ( 3D Motion Planning - Flying Cars Nanodegree ) Erwin Lejeune - @spida_rwin - erwin.lejeune15@gmail.com