A Review of Udacity’s Robotics Nanodegree — First Term
Okay, so I got a little carried away. I signed up to be part of the Udacity’s Robotics Nanodegree’s first cohort. The class officially opened this May 24, 2017 and the first term will officially end in October 26, 2017. The program is 1,200 USD per term, but I got a discount of 200 USD for paying a few days early. I was completing this while I was also finishing the last term for Udacity’s Self-Driving Car Nanodegree. A few days ago, I finished the last of four project required to pass this term and be qualified for the second term. In this article, I share my thoughts and experience.
Before the term started, I joined Udacity-Robotics on Slack. Every week, Mike Salem, the Robotics Nanodegree Service Lead, interviews professional roboticists live. They are mostly founders and CEOs of successful startups such as Kiwi, 3D Robotics, Catalia Health, Let’s Robot, Traptic, and Dash Robotics. It’s interesting to hear them talk about their thought process, experiences and learnings from the challenges they face. I especially enjoyed the interview of Kiwi’s Felipe Chavez, especially how he leads solving the delivery-by-robots challenge. It is even more impressive because he has a non-engineering background and did not grow up in the United States. You can view the interviews on the Udacity Robotics Slack Google Site.
I really loved it when Udacity featured Yoky Matsuoka as Keynote Speaker in Udacity Intersect and in one of their Udacity Talks episodes. Yoky Matsuoka is the current CTO of Nest. She’s done a lot of awesome things such as being part of the founding members of Google X, and doing great robotics research at Carnegie Mellon which made her a MacArthur Fellow “genius award” recipient. It’s great to hear her talk about how she got into robotics and what it means for her. Aside from the interviews, robotic paper discussions were also held (#research slack channel) two times a week, carefully selected by the Udacity staff.
Aside from the live interviews and research paper discussions, Udacity also launched a free and very cute robotics orientation course. This is a web comic with a bunch of simple challenges to gauge if you’ve got the prerequisite skills required to start the term. I found the characters very endearing and the story relatively entertaining for what it was. Unfortunately, the real course didn’t include any web comics or even a cameo of the characters :( .
COURSE OUTLINE AND PROJECTS
New content is usually rolled out every three or four weeks. The core curriculum includes ROS, Kinematics, Perception, Control, and Deep-Learning. The curriculum is designed and delivered by Electric Movement, a start-up which helps robotic product development.
The course starts out with a philosophical discussion of what makes a robot a robot. From the discussion, I gather that essentially a robot is a machine that can perceive the world, decide what to do based on its perception, and then perform an action based on its decision. For me personally, I prefer this definition: robots are goal-oriented machines that can sense, plan, and act in a continuous loop in effort to achieve a specific goal. This is almost the same as the definition they gave but I think it is important to note that the perception, decision-making, and action are done repetitively and that it is all in the effort to achieve a desired goal.
After this, we proceed to the technical stuff — an introduction to ROS.This is a software environment for developing robots built on top of Ubuntu. Udacity provides an okay introduction to ROS — not horrible but not great either. I feel like there are many places online that provide a better introduction to ROS which you can even get for free (hint: Youtube). I’m also very curious about the very affordable Learn ROS Fast Course which I plan to take as soon as my schedule frees up.
The next set is kinematics and inverse kinematics of robot arms. Kinematics is a branch of mechanics concerned with the motion of object without considering forces. For a robot arm, kinematics is concerned about getting the specific position of the end-effector (the point which grasps objects) given the joint angles of the connected motors. Inverse kinematics is the opposite — what angles (with respect to a base line) should the connected motors make to get the desired position of the end-effector. This is a question pick-and-place robot arms in factories solve everyday and is a common exercise given to students taking a fundamentals of robotics course.
At the point of release, I really found this part of the course poorly-designed. I had a frustrating learning experience, and many students reported on Slack that they had the same sentiment. There were many errors reported and confusing things. Also, the fundamentals are not explained in a consistent step-by-step manner. To compensate, I watched a lot of free videos outside Udacity which really solidified my understanding. In particular, I watched videos from Robotics Academy by Queensland University of Technology, and videos from the Aerial Robotics by University of Pennsylvania.
It also didn’t help that running the project in a VM (which Udacity provided and supported) on a Mac with an i5 processor and 8GB memory is really really slow. It wasn’t fun. So I installed Ubuntu natively but still the simulated robot arm moved like a really slow turtle. Gazebo and RViz kept hanging I had to restart all the time (and it’s not just me, a lot of students reported the same experience!).
The third part is perception — making sense of data with machine learning. Maybe because of the feedback from the last section, they designed this part to be more newbie-friendly. I think this is my favorite section quite ironically because perception is my least favorite topic. The task is to recognize objects perceived from an RGB-D camera.
Aside from the RGB data, an RGB-D camera also captures the distance of each point resulting a colored 3-dimensional point cloud. Given the raw point cloud, we can apply filtering techniques to get rid of the parts we don’t care about, leaving only the cloud of objects we wish to recognize. After this, we can cluster or group the points belonging to the same object using something called a DBSCAN algorithm. This algorithm is based on the idea that points pertaining to the same object are close to each other in terms of distance. From each cluster of points, we can extract not only the color for each point but also the surface normals which gives us an idea about the shape of the object. We can actually distinguish objects based on the distribution of the surface normals and colors of each object.
The fourth part is control. The only control method discussed in this part is PID. PID control according to one study is used in more than 97% of industrial control problems because of its simplicity. I appreciate that the lessons discussed beyond the ideal case of PID. This includes noise, and something called the “integrator wind-up” which happens when there is accumulated error if there is slow system dynamics. The optional exercise is to use a cascaded PID to control the position and the attitude of the quadrotor in simulation. The discussion of quadrotor dynamics went mathematical fast and I felt like I was lacking foundational concepts to really understand it. I think there could be a better presentation of quadrotor dynamics. This is something I want to explore deeper in the future — dynamics and control of drones.
The last part is deep-learning. I used a fully-convolutional neural network to paint all pixels in an image which is part of a person. Two types of persons are identified, the “hero” target person, and everyone else. Identifying a specific person from everyone else is useful for various applications such as “follow-me” operations of a drone. We are given a Jupyter notebook and we just had to fill-out the necessary parts, this is very similar to the semantic segmentation project of the third term of Udacity’s Self-Driving Car Nanodegree. I must say despite the lessons and additional readings of great articles online, I only understand fully-convolutional neural networks at a superficial level.
The extracurricular section have things you might find useful or interesting such as research papers, people in the robotics scene, tips on product pitches. The selected research papers are diverse including biologically-inspired robots, grasping, and swarms. People doing great work in the field are also introduced such as the CTO of Mayfield Robotics, Kaijen Hsiao, and the managing director of Silicon Valley Robotics, Andrea Key.
MY TWO CENTS
I must say that I did learn some things. For the most parts, I did enjoy doing the four projects required to complete this term. However, because I am not very wealthy, I don’t think it is worth 1,200 USD or even 1,000 USD. In my country, you can get two semesters worth of subjects for that price. More importantly, there are more affordable and even completely free places online which provide better presentations of the topics. Taking this program will not make you a robotics engineer, it won’t give you the skills to get your dream job. Despite this, I will still be enrolling for the second term — Udacity promises to give hardware you can play with which gets me really excited. They haven’t released the official syllabus yet but I suspect (or hope!) it will be a mobile base where you can implement control, motion-planning, and SLAM.It is hinted that an RGB-D camera will be included. Completing this term solidified my resolve to take my masters at a reputable university outside my country hopefully in the near future and eventually pursue my research interests in this field. Looking forward to the next term!