You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The project simulates a typical car parking scenario, where a car has to make maneuvers to correctly re-position itself while avoiding near obstacles. The vehicle is 'intelligent', which means that it autonomously learns how to accomplish the task. This is done using Q-learning, a popular reinforcement learning technique.
***Autoparking*** simulates a typical car parking scenario, where the goal is to re-position a car with a series of manuevers, while avoiding obstacles nearby. Thanks to Q-Learning, a popular reinforcement learning algorithm, I show that the car is able to park on its own, without any external input.
8
11
12
+
Everything, including the AI logic, is implemented from scratch in C++. The only dependency is the open-source graphics library ([Allegro](https://liballeg.org/)).
9
13
10
-
## Implementation details
14
+
Want to know more about how it works? Watch the [**video**](https://www.youtube.com/watch?v=UjPmsWEHtsU) or read the short [**paper**](https://leoll2.github.io/Autoparking/docs/paper_short.pdf). Enjoy!
11
15
12
-
+ Everything has been implemented from scratch by me, with the only exception of graphics libraries (Allegro).
13
-
+ Everything has been implemented in C/C++.
14
-
+ Nothing has been implemented using frameworks or high-level libraries, including the AI stuff.
16
+

17
+
*Demo of Autoparking trained model*
15
18
16
-
## Files and Folders
19
+
20
+
Table of Contents
21
+
=================
22
+
23
+
*[Folders organization](#folders-organization)
24
+
*[Setup](#setup)
25
+
*[Install dependencies](#install-dependencies)
26
+
*[Build](#build)
27
+
*[Run](#run)
28
+
*[About](#about)
29
+
30
+
## Folders organization
17
31
18
32
**bin** -> contains the executable binaries after building
19
33
**build** -> contains the .o object files generated during the compilation
20
34
**cache** -> contains pre-trained weights of Q and R so that you can skip the learning phase
21
35
**conf** -> contains the configuration files
22
-
**docs** -> contains a pdf file with interesting information about this project. Give it a look!
36
+
**docs** -> contains .pdf files with interesting information about this project. Give it a look!
23
37
**font** -> contains few fonts used by the application
24
38
**img** -> contains the gif image above
25
39
**Makefile** -> just a makefile
26
40
**README** -> this file
27
41
**src** -> contains the most important source files, here's the core of the application
28
42
**stats** -> contains some data for statistical purposes generated during the training, if logging is enabled
Then, you need to install Allegro5. The following steps apply to Debian/Ubuntu and are based on the official [wiki](https://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Debian). Installation on other distros is similar, yet some dependencies may differ. For instance, Centos/RHEL users shall refer to the relative [documentation](https://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Centos).
38
-
Honestly, I'm not sure which deps are strictly necessary and which are not, but unless you have limited storage capacity, I advise to download them all.
51
+
### Install dependencies
52
+
53
+
The only dependency is Allegro5. The following steps refer to Debian/Ubuntu and are based on the official Allego [wiki](https://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Debian). Installing on other distros is possible, though some dependencies may differ. For instance, Centos/RHEL users shall refer to the relative [documentation](https://wiki.allegro.cc/index.php?title=Install_Allegro5_From_Git/Linux/Centos).
54
+
Honestly, I'm not sure which deps are mandatory and which are optional, but unless you have limited storage capacity (or enough time to figure out), I recommend to download them all.
39
55
40
-
First, setup your repo list
56
+
Setup your repo list:
41
57
```
42
58
cd /etc/apt/
43
59
sudo gedit sources.list
@@ -50,7 +66,7 @@ Now install required dependencies:
Inside the cmake environment, press 'C' (configure) and 'E' if it complains about few missing libraries (don't worry, it still works). Then press 'G' (generate).
73
89
74
-
Here comes the fun, compilation:
90
+
Here comes the fun, compile:
75
91
```
76
92
make
77
93
```
78
-
You can optionally add the -j option to parallelize (speed up) the compilation on multiple cores.
94
+
You can optionally add the -j option to parallelize the compilation on multiple cores.
79
95
Finally, install:
80
96
```
81
-
make install
97
+
sudo make install
82
98
```
83
99
84
100
If all the previous steps went fine, Allegro5 is properly installed and setup.
85
-
All you need now is to compile the Autoparking application, which is very easy. Switch back to the Autoparking directory, and run:
101
+
102
+
### Build
103
+
104
+
Compiling Autoparking is straightforward. From the project root directory:
86
105
```
87
106
make
88
107
```
89
108
90
-
You're done! Enjoy the simulation!
109
+
### Run
110
+
111
+
Start the simulation:
91
112
```
92
113
bin/main
93
114
```
94
115
95
-
## Disclaimer
116
+
## About
117
+
118
+
This work has first proposed as final project for the 'Neural Networks' exam at SSSUP, and later presented at [EEML](https://www.eeml.eu/home) 2020. [[video](https://www.youtube.com/watch?v=UjPmsWEHtsU)][[paper](https://leoll2.github.io/Autoparking/docs/paper_short.pdf)]
96
119
97
-
This work has been carried out as final project for the 'Neural Networks' exam at SSSUP. Anyway, anyone is encouraged to fork, modify or extend it for non-commercial purposes, as long as the original author (that's me) is explicitly credited. Feel free to contact me for any doubt!
120
+
Anyone is encouraged to fork, modify or extend it for non-commercial purposes, as long as the original author is explicitly credited (cite as below). Feel free to contact me for any doubt!
0 commit comments