(Most of the images are taken from Udacity’s SDCND page, all credit to them)
I think I am lucky to say that I am a mentor for Udacity’s first ever Self Driving Car Nanodegree. Some quick background on me, I am a graduate student at WPI (Worcester Polytechnic Institute) here in Massachusetts pursuing a master in robotics engineering.
Well some might argue that it’s not the first course, since there is Artificial Intelligence for Robotics, but to be honest this Nanodegree dives deep into the concepts of Machine Learning, Computer Vision, Localization, Control, etc. I’ve had contact with the material and let me tell you that if you are signed in, you are getting your money’s worth, some of these topics are things that you see in a graduate level education.
What to expect?
Lot’s of new information in a fast paced environment, if haven’t coded in Python or C++ before I recommend waiting a bit before taking the Nanodegree, if you have never had contact with robotics before I would also wait for latter cohorts and prepare first, latter in this post I’ll mention some good starting points.
So the course is divided in three Terms:
Term 1: Computer vision and Machine Learning
This is the only term that to which I have access so far. It starts with a small project, Finding Lane Lines, so at the end of the lesson you end up with something like this:
And you can successfully detect the lines of the road in a video input. You learn concepts like Hough Transforms, Canny Edge detectors, region sampling and more. All your code will be on python, and you’ll use OpenCV a lot, so if you have never used it, you’d better start reading some basic tutorials. Below you can see the output of a Canny Edge detector:
Then you got and intro to Deep Learning and Machine Learning, concepts like Regression and Classification, Neural Networks, TensorFlow ! To be honest I’ve used TF just a bit, and I got to review it even further. Then you’ll dive deeper into Deep Learning (sorry for the pun, couldn’t help it), Convolutional Neural Networks, you’ll build a Traffic Sign Classifier, you’ll learn to use Keras along with TensorFlow, Transfer Learning, and you’ll end up implementing a network to clone driving behavior and test it on a simulation like the one you can see here:
It is all implemented in a beautiful way, that combines theory and practice, you learn about something new and you implemented. Most of this material can be seen on graduate level courses here at WPI and I guess other schools.
As you can see this module focuses a lot on computer vision and deep learning, it might be a bit too much for a beginner but in my opinion is the right way to start this Nanodegree.
Term 2: Sensor Fusion, Localization and Control
While I still don’t have access to this term, you can see by the title what is it about, sensors, SLAM and Control, I also think this term will involve planning, but as soon as have access I’ll update this post.
Term 3: Concentrations and Hardware
Same here, expect updates as soon as it’s available.
How to prepare for it?
So this part will have my advice on some courses to take so that you can feel more prepared for this Nanodegree. Note: this involves my point of view only, if you have tips to improve this list please message me at firstname.lastname@example.org
If you already know computer vision and what to review your knowledge, or if you are just starting in that area I suggest this Introduction to Computer Vision by Georgia Tech, while I myself haven’t finished that course, I’ve checked some of their videos according to the needs I had and they are really good.
The same, if you have never heard about Machine Learning, or you want to review your knowledge this Intro to Machine Learning by the same guys. This I’ve dived more deep into.
This one I have you suggest the most, Artificial Intelligence for Robotics by Sebastian Thrun, one of the very best courses I’ve taken in Udacity and it covers a lot of basic concepts you’ll probably see in this Nanodegree.
That would cover theoretical concepts and some programming. If you don’t know Python please refer to Programming Foundations with Python, you are not supposed to know C++ for the first term as far as I know but it’ll be used in the second, so if you don’t know any, if you Google around you can find many useful tutorials.
If you think that’s too many Udacity courses, Coursera has this robotics specialization that I’ve taken and recommend because of the material provided there.
Get your ROS ready!
So this course will use ROS (Robot Operating System), ROS along with Gazebo and Rviz, are probably the most used tool for roboticists in many labs around the world. Here at the WPI Humanoid Robotics Lab (WHRL) we used these tools to work with a humanoid robot like in the figure below:
Ros uses a subscription/publisher methodology to make many frameworks and programming languages interact with each other. With this tool you can write a controller in Python, a Motion Planner in C++ and SLAM in Lisp without hassle, it’s an extremely powerful tool once you learn how to use it. The web-page itself has many tutorials, but if you are looking for a book I can recommend these two:
There are also many resources on-line, video tutorials and blogs, all a couple of searches away.
I can’t stress this enough, during this Nanodegree you’ll probably meet new friends with the same interests as you, and that is wonderful. Besides Slack, maybe you can create a study group in the social network of you preference, try video chats and of course if you ever feel stuck you can ask your mentor.
There are some places where I get my daily dose of robotics:
- The IEEE blog on Automation
- Reddit, where there are many amazing threads, like /r/SelfDrivingCars/, /r/robotics/, /r/artificial/, and many others.
- Facebook groups
- Meetups, I’ve got to know great people because of local events in robotics and interactions with other labs.
I am sure this Nanodegree will be a wonderful experience for you, robotics is such a beautiful area, you never get bored, you can do code, then jump and do electronics, then go and design a new structure in Cad, then you can test your implementation and play a little. If you are enrolled in this Nanodegree I am sure you are already passionate about robotics, and you won’t be disappointed.
This post had some amazing response, I’ll write more guides for this nanodegree in the future. Some people messaged me and what follows is more material to prepare:
- Amr Abd El compiled this wonderful spreadsheet, it’s really detailed, and while you probably won’t end up finishing all by the October cohort, maybe you can finish it by November or January.
“Don't blame you," said Marvin and counted five hundred and ninety-seven thousand million sheep before falling asleep again a second later.”
– Douglas Adams, The Hitchhiker's Guide to the Galaxy