How to produce self-driving software?

What kind of software are these? How are all kinds of vehicles controlled by codes? For example, how do you become a software developer producing car parking software at tesla?

Did you try searching for this question? Likely something like C, C++, and Python (plus more depending).

Current technology for self-driving software relies on a number of technologies to gain information, such as lidar. Going with these sensors is a specific machine learning method called Deep Learning.

Essentially a deep learning network is fed a large amount of data to “train” it in pattern recognition. If you ever did a reCaptcha where you had to select street lights in an image. Your taking part in checking/re-checking machine learning models (!)

A software engineer/data engineer would primarily be in charge of the following:

  1. Getting the data to train the model. Data is the new oil, this is why a lot of large companies are sucking up data from multiple sources specifically for these purposes of training data models.
  2. Building the deep learning network to train later. Again, this doesn’t mean you specifically program “if light is green, go”, rather you build the deep learning network to figure this out on its own. This generally means you as a programmer are building the “structure that learns, rather than the AI that knows”.
  3. Dealing with issues with the data itself. One of the biggest current challenges with driving AI software today are “edge cases”. Its one thing if everything is as expected, but what if a street light is upside down? A person will still understand green means go, but an AI driver? Maybe, maybe not (!) Or worse, what if a person goes into the middle of the street dressed as a speed bump, such a scenario might trip up the AI where it continues to drive over the speed bump (!)

So to summarize, current AI is based around pattern recognition that is created by training models from large amounts of data. There are a number of issues with the field tied with the fact the data you feed into the model could be biased, missing scenarios, and simply doesn’t handle every case a human driver would.

At the same time, AI based driving can be safer than human drivers, but they aren’t perfect. The field is still rather new, but the methods it relies on aren’t super new. The biggest improvement is the massive increase in data available to train models.

Further reading:

1 Like

So how do we teach the machine that the light coming into the camera is green? I guess there is not only software (code) here, there are also engineering studies related to electrical and electronics, right?

there is a certificate for Machine Learning in the Free Code Camp curriculum, if you want to start looking up the topic

1 Like

The general method is similar to how you’d teach a child what the letter a looks like. With examples, repetition and re-enforcement.

So lets say you wanted to train a data model to take a picture and tell you if it contains a picture of a dog or a wolf. You start with a list of images that are already identified with “dog” or “wolf”, give them to the data model to “train it” by essentially brute force, where the model takes different parts of the image, breaks it down, and makes a statistical guess on if the picture is a dog or wolf. This is compared with the actual answer, and repeats multiple times over time while randomly tweaking different settings, picking the “better” settings that improve the overall result. Do this a bunch of times and you end up with a model “trained” to tell you if an image is a dog or a wolf based upon its own assumptions from the data built up over time.
At this point you might say “but wait, how does it know that?” and that’s the point where people actually can’t tell you directly. There is no “line of code” that explains how the data model works the way it doesn’t, the same way you can’t write code so a child recognizes the letter a.

Now I purposely picked this example because its real example that had a real issue. The issue with this example is with the data. After using your “wolf vs dog” AI to identify pictures you realize something… the AI actually just looks at the background and says its a wolf if the background is white/snow. This makes sense, since most pictures of wolfs are in their natural environment, and is an example of a big issue with AI, which is that it can rely on bias data, resulting in a model that doesn’t work the way you want it.

As mentioned above freeCodeCamp does provide curriculum to get into machine learning (I should of mentioned that earlier but forgot ;D) which you should go into as a start so you get some hands on experience with existing tools and libraries that are used with AI/machine learning.

1 Like