Thomas Tran, Juan Sebastian Hoyos, Daniel Esguerra, Tigran Karapetyan
We are four students who study at Concordia University in Montreal and we all live in the west of the island. Here, construction is as bad and common as the cold and both of these make travel within the city a crawl through hell. We thought of a solution to this problem, the self-driving car! If all cars are self-driving, we eliminate the human factor and standardize transport to be safer and more fluid.
To advance on this idea, we developed a simulation of a self driving car that uses deep Q-Learning. So we have a 2D overview of a rectangular map and the car does round trips between two corners of the map ( the destinations). We can also draw boundaries (simulating streets) and the car will learn to follow that road to his destinations.
We used the software anaconda spyder3. we coded the program in python with the help of pyTorch and Tensor to implement the artificial neural network and all of the AI component of our project. To draw the map, we used Kivy. In simple terms, the car has a neural network with 3 inputs, 3 outputs and 1 hidden layer of 30 neurons. We give it negative rewards when the car would touch the walls of the map, or the sand that we draw. It also gets a small positive reward when it gets closer to the destination and a larger when when it gets to a destination.
During programming we had a hard time saving multiple runs in a memory as a batch and returning that value. After that, it took a long time to get a good AI since we used trial and error to find some good values for some of the rewards, the temperature of the brain, the number of neurons and hidden layers that we should use.
We are really proud of actually having a functioning self-driving car that is very capable of going through some of the hard maps that we drew. Programming an AI is very different than usual but we are very happy of the final product.
During this weekend of coding, we learned how to use pyTorch and Tensor and we also learned about the complexity of Artificial Intelligence as well as how to create one and train it.
The next step is to work on sensors that can recognize different objects and and try to implement that in a more complex simulator.