An Honest Review of Udacity’s Self-Driving Car Nanodegree — third term and beyond!

Mithi
10 min readOct 29, 2017

--

TLDR: It’s ok. I don’t really recommend it. I think there should be twice as much content, and much better presentation, at half the price. There is a lot of free content out there that gives a much better presentation of the topic. Here’s a compiled list of curated resources.

If this article helped you in someway, consider buying me a coffee :)
Bitcoin Address

Now for me, it’s over! I think it’s ok, but temper your expectations.

First, I’ll talk about the three projects. Then, I’ll talk about jobs. 😱😱😱😱😱

Path-Planning

The first project’s goal is to create a path planning pipeline that would smartly, safely, and comfortably navigate a virtual car around a virtual highway with other traffic.

The path-planning isn’t as straight forward as the other projects. We were presented many ideas about predictions, trajectory generation, and behavior-planning, but left in the dark on how to actually use them for this specific project.

❤ CHECKOUT MY HEXAPOD ROBOT SIMULATOR PROJECT! ❤

Luckily, the SDCND Slack team was so vibrant and lively with a lot of people sharing their ideas, approaches, and findings. As a result, different students came up with different ways to solve the problem while achieving the same goal and not necessarily using the ideas from the lessons. I think this is awesome, and it reminds of that cute barometer story.

However, I was disappointed with what happened in the Bosch Challenge. Out of 66 submissions, only six finished, and for some reason certain submissions did not compile properly. Some received feedback that their code did not compile, or did not finish the track, and some (including myself) did not receive feedback at all.

It was okay for me, since I did not put that much effort into it. There was only one major difference between my submitted project and the others: instead of using the instantaneous measured gap of my vehicle with the nearest vehicles in each lane, for additional safety I used a computed effective gap that adds additional distance based on the vehicle’s current velocity and assumed latency. I also made some parameter tweaks and changes in cost computation. I feel bad for the other students though.

Elective

There were two electives: semantic segmentation, and functional safety. Functional safety is interesting, but I chose semantic segmentation, because it is a coding project. The functional safety project consisted of writing a document.

At any rate, I learned about the concept of functional safety, as well as functional safety frameworks, to ensure that the vehicle would be safe, both at the system and component levels. For semantic segmentation, we were to use a Fully-Convolutional Network (FCN) script to label the pixels of roads in images.

To complete this project, I read some additional materials online. To be honest, even after reading so much, I still only understand FCNs at a superficial level. If you are inclined, here are the resources which I found most helpful:

Refreshers of TensorFlow: TensorFlow Tutorial, CNN of Image Classification, TensorFlow Tip

Semantic Segmentation Concepts: Semantic Segmentation in 2017, Transpose Convolution in TensorFlow, Video from a Stanford class about Semantic Segmentation, An Actual Paper about Semantic Segmentation

Transpose Convolution: A Guide to Convolution Arithmetic, Theano: Transpose Convolution, Transpose Convolution Animations

For this project, we were given template code and we just had to fill out the necessary parts. I feel like I’m not in a good position to comment about the code structure, as I haven’t done that much with TensorFlow. But some people who have been coding for a really long time did mention that the template for this specific project could have been written in a better way.

Systems Integration Project

What I loved most about this project was that it was a team project. At first I was a bit apprehensive about it, thinking that nobody would want to be my teammate.

I was thrilled when Lukasz invited me to join his team, Kung-Fu-Panda Automotive. I was excited to work with people from different countries and different walks of life. Me from the Philippines, Lukasz from Switzerland, Kostas from Greece, Maurice from Germany, and Alexey from London (Alexey left, as he had personal things to attend to at that time, and eventually led his own team.).

I was lucky that I ended up in a passionate group full of members I had great time working with. We didn’t have problems that other groups had, like members not replying, arguments, and conflict.

I will quote my teammate Kostas as we have a similar sentiment regarding this final project (he wrote this article) and I think he couldn’t have phrased it better:

“Unfortunately, as a part of the first cohort, this project is not as interesting as it could be. Every team of five (5) persons has to tackle two basic problems (a) program a controller for the car (b) identify traffic lights and make the car stop at predefined positions. Just that. No sensor fusion, no other cars, no path planning. It feels limited for a team of five. Hopefully that might change in future iterations of the nanodegree.

The hardest part in this project was actually the lack of specification and the continuous guessing, because we could test our code in the simulator but the specifications of the car are not determined fully. For example, we are asked to provide throttle in percent but we do not know what throttle 1.0 (100%) corresponds too. Normally when you press throttle all the way down in a car, you command the engine to provide all available torque to the driving wheels, but that value depends on current speed, shift, rpm and maybe more values. We have no clues on how the car behaves and every team tries to address that problem instead of having clear specs.” — Kostas Oreopolous

So, do you have an SDC job now?

Okay, first of all, please stop — I’m having a panic attack! 😱😱😱😱😱😱

Getting a job in this field is not so easy, especially coming from the Philippines. But of course, it’s possible, as this woman from India just did. Be wary of survivorship bias, though.

While I did get some invitations for jobs, none of them were willing to sponsor my visa. Also, I haven’t spent (nor am I planning to spend) energy looking for an SDC job soon. I’ll explain why later.

If you enroll in SDCND hoping to land that 100K USD salary (especially if you’re not from USA or Europe) then prepare to be severely disappointed. However, if you are enrolling because you have a genuine interest in this field, then you might like it.

So how do you get a job in SDC anyway? In my mind, I generally classify SDC jobs to three main types:

  • Perception and Machine Learning Stuff
  • Hardcore Software Engineering Stuff
  • Research and Development Stuff

Of course, this is to not to say that there are no other types of SDC jobs, such as mechanical engineer or electronics engineer jobs. It’s just that the types of jobs I mentioned earlier are what I commonly see in SDC job descriptions. I don’t think getting a job in any of these three main areas requires you to enroll at Udacity ;).

Let’s talk about these areas a bit more.

Perception and Machine-learning Stuff

A self-driving car requires the car to understand its surroundings in order to make decisions. This is something human drivers take for granted, but self-driving companies are still perfecting to ensure passenger safety.

In my mind, I call this the “George Sung Path.” He also took the SDCND and eventually became a self-driving car machine-learning engineer at BMW.

If you want to go down this path, you should learn TensorFlow. And then eventually apply what you’ve learned on your own open-source project and/or participate in Kaggle Competitions.

“Much of the interview was also spent on discussing my past projects in deep learning and computer vision — my motivations, the process I went through, how I could improve upon the projects. One particular question that came up repeatedly was “how did you go beyond the coursework requirements?”, or similarly “which of your projects were not part of your coursework?”. An important trait is to be genuinely curious about the topic, such that you go above & beyond the project requirements and/or create your own interesting project(s)” — George Sung

Hardcore Software Engineering Stuff

According to Paysa, over 90% of the self-driving-car job applicants need to know C++. Also, C++ is a compiled, high-performance language, so most code that actually runs on the vehicle tends to be C++. Check out this repository for some C++ resources.

Be really, really good and learn the nuances of C++, and be prepared for the coding interview. In my mind, this is the “Googley as Heck Path. You must have a really solid foundation in data structures and algorithms.

From Paysa

Research and Development Stuff

This is the more traditional path, requiring a Master’s degree, preferably in robotics and non-negotiably from a reputable university. If you want to be able to have a solid grasp of different ideas from very brilliant people on how to solve engineering problems, this is the path for you. And if you want to be able to add to the state-of-the-art-and-ever-evolving body of knowledge, then this would be the best way to go. It’s also a great way to be able to work with like-minded people in a great robotics research lab in the near future.

Check out my robotics coursework repository here.

Summary

This article might be a bit of a hodgepodge, but I just wanted to share my thoughts about SDCND and SDC Jobs. The course was an ok experience. However, if you are just thinking of spending $2,400 USD in hopes of getting that 100k USD salary, then you should probably spend your money on something else (see my recommendations above).

In summary, I don’t really recommend it. I think it there should be twice as much content, and much better presentation, at half the price. There is a lot of free content out there that give much better presentation of the topic.

From Paysa

I will end this article with a quotation from my teammate Kostas again:

“I almost forgot. The best part of the program are fellow students. They all share the same passion to learning, regardless of age or learning backgrounds. The Slack channel is the best part of the course. You exchange ideas with other people, you help and you are being helped. That is what makes the experience 100 times more interesting from being done in isolation.”

If this article helped you in someway, consider buying me a coffee :)

--

--