README.md 5.02 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Graph Search-Based Motion Planner with Motion Primitives

This is a programming exercise for the lecture **Introduction to Artificial Intelligence** (WS19) delivered at the  Department of Informatics, TUM. Please clone this repository or download it using the button at the upper-right corner. The repository has the following folder structure:
``` code-block:: text
commonroad-search/
	├GSMP/
		├motion_automata/
			├automata/
			├motion_primitives/
			└vehicle_model/
		└tools/
			├commonroad-collision-checker/
			└commonroad-road-boundary/
	├notebooks/	
		├batch_processing/
		├motion_primitives_generator/
		└tutorials/
	├scenarios/
Edmond Irani Liu's avatar
Edmond Irani Liu committed
19
20
		├exercise/
		└tutorial/
21
22
	└solutions/ 
```
Edmond Irani Liu's avatar
Edmond Irani Liu committed
23
The codes are written in Python 3.7 and tested on Ubuntu 18.04. Please follow the installation guide below if you are using your own machine. Alternatively, you can use the virtual machine image provide by us, in which all the necessary modules are installed for you already. You can down the virtual machine via [this](https://syncandshare.lrz.de/dlpw/fi2BN8NUepqiQzfG3LzWYf4J/Virtual_Machine.zip) link, the downloading password and default login password are both `commonroad`. After you installed the softwares, or if you intend to use the virtual machine, please further proceed with `notebooks/tutorials/0_Guide_for_Exercise.pdf`. 
Moritz Klischat's avatar
Moritz Klischat committed
24
25
26

## Before you start

Edmond Irani Liu's avatar
Edmond Irani Liu committed
27
28
`Skip this section if you intend to use the provided virtual machine.`

29
30
31
32
33
We recommend using [Anaconda](https://www.anaconda.com/) to manage your environment so that even if you mess up something, you can always have a safe and clean restart. A guide for managing the environments can be found [here](https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html). Also, the usage of [PyCharm](https://www.jetbrains.com/pycharm/) is highly recommended (free version available for students).

After installing Anaconda, create a new environment by command:
``` sh
 $ conda create -n commonroad-py37 python=3.7
Moritz Klischat's avatar
Moritz Klischat committed
34
```
35
36
37
38
39

Here the name of the environment is called **commonroad-py37**. You may also change this name as you wish. In such case, don't forget to change it in the following commands as well.

`Always activate` this environment before you do anything related:

Moritz Klischat's avatar
Moritz Klischat committed
40
```sh
41
42
  $ conda activate commonroad-py37
  or
Moritz Klischat's avatar
Moritz Klischat committed
43
44
  $ source activate commonroad-py37
```
45
Install `Jupyter Notebook` and supplementary modules:
Moritz Klischat's avatar
Moritz Klischat committed
46
```sh
47
  $ conda install jupyter
Moritz Klischat's avatar
Moritz Klischat committed
48
  $ conda install ipykernel
49
  $ pip install ipython-autotime
Moritz Klischat's avatar
Moritz Klischat committed
50
51
  $ conda install ipywidgets
  $ conda install sphinx
52
53
  $ jupyter nbextension install --py widgetsnbextension --user
  $ jupyter nbextension enable widgetsnbextension --user --py
Moritz Klischat's avatar
Moritz Klischat committed
54
55
```

56
## Installation guide
Moritz Klischat's avatar
Moritz Klischat committed
57

Edmond Irani Liu's avatar
Edmond Irani Liu committed
58
`Skip this section if you intend to use the provided virtual machine.`
Moritz Klischat's avatar
Moritz Klischat committed
59

60
This exercise has three main dependencies that need to be installed.
Moritz Klischat's avatar
Moritz Klischat committed
61

62
### 1. CommonRoad-io
Moritz Klischat's avatar
Moritz Klischat committed
63

64
As documented in CommonRoad-io [Documentation](https://commonroad.in.tum.de/static/docs/commonroad-io/index.html), type in the following command to install the package:
Moritz Klischat's avatar
Moritz Klischat committed
65
66

```sh
67
  $ pip install commonroad-io
Moritz Klischat's avatar
Moritz Klischat committed
68
69
70
71
```


### 2. CommonRoad-Collision-Checker
72
Go to folder `GSMP/tools/commonroad-collision-checker/` and follow the instruction in README.rst. (You may navigate to it from this page by  for a better rendering of the .rst file)
Moritz Klischat's avatar
Moritz Klischat committed
73

74
A tutorial of CommonRoad Collision Checker can be found [here](https://commonroad.in.tum.de/tutorials/).
Moritz Klischat's avatar
Moritz Klischat committed
75

76
77
### 3. CommonRoad-Road-Boundary
Go to folder `GSMP/tools/commonroad-road-boundary/` and follow the instruction in README.md. (You may navigate to it from this page by  for a better rendering of the .md file) In case you face an error, refer to troubleshooting section. 
Moritz Klischat's avatar
Moritz Klischat committed
78

79
80
81
82
## Tutorials

Navigate your terminal to `commonroad-search/` folder, and start Jupyter Notebook with:
```shell
Moritz Klischat's avatar
Moritz Klischat committed
83
84
85
  $ jupyter notebook
```

86
In the prompt up page, navigate to `notebooks/tutorials/` and follow the tutorials `tutorial_commonroad-io.ipynb` and `tutorial_commonroad-search.ipynb`.  Remember to refer to `tutorials/0_Guide_for_Exercise.pdf` for additional explanation. The executed Jupyter notebooks for tutorials can also be found [here](https://commonroad.in.tum.de/tutorials/).
Moritz Klischat's avatar
Moritz Klischat committed
87
88
89

## Implement your own search algorithm

90
Open `GSMP/motion_automata/automata/MotionPlanner.py`. Write your own heuristic functions and/or search algorithm in the following functions:
Moritz Klischat's avatar
Moritz Klischat committed
91
92

```python
93
94
	def calc_heuristic_cost()
	def search_alg()
Moritz Klischat's avatar
Moritz Klischat committed
95
96
```

97
There are already two search algorithms, namely `A*` and `Greedy Best First Search`, implemented as examples for you. You are free to refer to them for some inspiration.
Moritz Klischat's avatar
Moritz Klischat committed
98

99
## Troubleshooting
Moritz Klischat's avatar
Moritz Klischat committed
100

101
### 1. Boundary library not working properly
Moritz Klischat's avatar
Moritz Klischat committed
102

103
104
If there are errors stating not finding the boundary library (e. g. module `construction` not found) while going through the second tutorial, try manually copying all the contents under folder `GSMP/tools/commonroad-road-boundary/`  into `/path/to/your/anaconda3/envs/lib/python3.7/site-packages/commonroad-road-boundary/`. 
`Make sure to copy all files within the folder manually, not just copying the folder it self. Also, remember to add this path to your IDE's (e. g. PyCharm) interpretor path.`