Skip to content

Commit 88d834d

Browse files
committed
improve README
add paper
1 parent 94d836d commit 88d834d

File tree

2 files changed

+45
-22
lines changed

2 files changed

+45
-22
lines changed

README.md

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,59 @@
11
# Autoparking
22

3-
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.
3+
[![Website shields.io](https://img.shields.io/website-up-down-green-red/http/shields.io.svg)](https://leoll2.github.io/Autoparking/)
4+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5+
[![C++](https://img.shields.io/badge/C++-blue.svg?style=flat&logo=c++)]()
6+
[![GitHub stars](https://img.shields.io/github/stars/leoll2/Autoparking.svg?style=social&label=Star&maxAge=2592000)](https://github.com/leoll2/Autoparking/stargazers/)
7+
[![GitHub forks](https://img.shields.io/github/forks/leoll2/Autoparking.svg?style=social&label=Fork&maxAge=2592000)](https://github.com/leoll2/Autoparking/network/)
48

5-
This is what the trained model looks like:
69

7-
![](img/autoparking.gif)
10+
***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.
811

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/)).
913

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!
1115

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+
![Autoparking GIF](img/autoparking.gif)
17+
*Demo of Autoparking trained model*
1518

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
1731

1832
**bin** -> contains the executable binaries after building
1933
**build** -> contains the .o object files generated during the compilation
2034
**cache** -> contains pre-trained weights of Q and R so that you can skip the learning phase
2135
**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!
2337
**font** -> contains few fonts used by the application
2438
**img** -> contains the gif image above
2539
**Makefile** -> just a makefile
2640
**README** -> this file
2741
**src** -> contains the most important source files, here's the core of the application
2842
**stats** -> contains some data for statistical purposes generated during the training, if logging is enabled
2943

30-
## Installation
44+
## Setup
3145

3246
First of all, download this repository with:
3347
```
3448
git clone https://www.github.com/leoll2/Autoparking.git
3549
```
3650

37-
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.
3955

40-
First, setup your repo list
56+
Setup your repo list:
4157
```
4258
cd /etc/apt/
4359
sudo gedit sources.list
@@ -50,7 +66,7 @@ Now install required dependencies:
5066
```
5167
sudo apt-get install build-essential git cmake cmake-curses-gui xorg-dev libgl1-mesa-dev libglu1-mesa-dev
5268
```
53-
and "optional" ones:
69+
and optional ones:
5470
```
5571
sudo apt-get install -y cmake g++ freeglut3-dev libxcursor-dev libpng-dev libjpeg-dev libfreetype6-dev libgtk2.0-dev libasound2-dev libpulse-dev libopenal-dev libflac-dev libdumb1-dev libvorbis-dev libphysfs-dev
5672
```
@@ -63,35 +79,42 @@ and switch to version 5.2.4:
6379
```
6480
git checkout 5.2.4
6581
```
66-
Setup the compilation:
82+
Get ready to compile:
6783
```
6884
mkdir build
6985
cd build
7086
ccmake -DCMAKE_INSTALL_PREFIX=/usr ..
7187
```
7288
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).
7389

74-
Here comes the fun, compilation:
90+
Here comes the fun, compile:
7591
```
7692
make
7793
```
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.
7995
Finally, install:
8096
```
81-
make install
97+
sudo make install
8298
```
8399

84100
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:
86105
```
87106
make
88107
```
89108

90-
You're done! Enjoy the simulation!
109+
### Run
110+
111+
Start the simulation:
91112
```
92113
bin/main
93114
```
94115

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)]
96119

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!

docs/paper_short.pdf

297 KB
Binary file not shown.

0 commit comments

Comments
 (0)