Nowadays self driving cars has become a very interesting area of technology where different companies such as Google, Tesla and Nvidia are trying to create a complete autonomous car that can give response to many situations and carry out the most efficient solutions to them.
Self Driving Cars are a main focus area of companies to get advantages on Artificial Intelligence algorithms to their cars or other means of transport.
Nvidia, Google, Tesla and most of the automobile industries are investing in this new advances and creating autonomous prototypes that can reduce the amount of accidents and improve the comfort of the passengers and the conductor.
Self driving cars also should predict the behaviors of the human driving cars because they will be in the same environment.
A self driving car will need to have sophisticated systems in different areas.
Firstly, in the hardware part, cars should have sophisticated sensors and cameras to get the different agents that surround the car. These agents can be other cars, traffic lights, road lines…
This sensors can help the car to understand the environment and represent it in a 3D Computational space to understand better how it should move.
The car includes LiDAR sensors for raycasting distances at light speed, different HD cameras to detect objects, a 360 degress camera, a radar for long distances and a GPS for getting the current position and map data.
Also they will need to have a powerful CPU where all the algorithms are executed with a high speed and accuracy to have instant responses and prevent accidents.
This is the most complex part for self driving cars. With so many data obtained by the sensors, the CPU should manage it in an optimal way and give the car some outputs like the steering and acceleration of the car.
Now we will subdivide the software in different models and technologies
Neural Networks are the main tool for Artificial Intelligence. Because the amount of data the car must handle the neural networks tend to be insane and with different architectures. For object detection and line detection a Convolutional Neural Network must be implemented. It is widely used for image classification and it can reach a high accuracy. Also a car will have a Recurrent Neural Network to make better predictions . All of this models are based on the Feed-Forward Neural Network.
The entire network will be a complex Modular Network. This type of architecture wil have more simple Neural Networks with different layers: convolutional layers, pooling layers, fully connected layers…
They will also have sophisticated optimization algorithms to get better results.
The inputs of the Neural Network are all the images, distances, positions given by the sensors and the outputs all the possible movements and behaviors the car could do.
One important part of self driving cars is the computer vision. The are libraries for this specific tasks such as OpenCV. The car should detect everything around him and must represent it in a 3D Environment where the car is more comfortable.
In conclusion a lot of work must be done to get a complete autonomous car. A lot of different situations must be handled by the car and also the car should respond to imprediptible situations. Nowadayrs, comercial cars can drive in an autonomous way when the conditions are favorable but the conductor should be careful and be prepared to take the steering wheel.
You can create your own Self Driving 3D simulation in this tutorial series with Unity 3D.1