Coursera Robotics Specialization Summary
Summary
I recently worked through the Coursera robotics specialization. I have written this post to provide a high-level overview of the program. If you are considering this program, I believe the following lists provide the best executive summary:
Pros:
- The courses cover, even in limited detail, all aspects of robotics systems engineering, from high-level planning and perception to low-level controls and kinematics. There is even a hardware project at the end!
- The programming assignments, in addition to being very relevant, were engaging and fun.
- Matlab makes implementating the algorithms quick and easy.
- The cost of completion is a good bargain when compared to comparable programs at Udacity.
Cons:
- Matlab isn’t open-source :(
- The hardware capstone track has different programming language requirements than the rest of the specialization.
- The course material is not accessible after completion. This is a major issue for me!
- The presentation was a bit too academic at times.
Introduction
After going to work for Ford’s autonomous vehicles division in late-2015, I quickly realized that I lacked sufficient depth in the different areas of the self-driving car technology stack. In particular, I felt uncomfortable with the high-level path planning and computer vision pipelines. I had taken several MOOCs through Coursera before, like Andrew Ng’s Intro to Machine Learning, and I saw that they had on offering a robotics specialization from the University of Pennsylvania. The topics that I was interested in learning were covered in a structured format that built upon ideas I was already familiar with, including feedback control design and Kalman filtering for estimation and tracking. The cost was $50 per course, with each course taking between 4 and 6 weeks. The platform used for computational exercises was Matlab, which I had a lot of familiarity with. With all of these factors put together, I figured that this specialization had a low barrier-to-entry and I enrolled.
The specialization is broken out into 6 courses, which I will discuss briefly herein.
Course 1: Aerial Robotics
This term discussed control of UAVs; quadrotors, namely. The force and moment equations for idealized systems was developed, along with methods of tracking control and high-level path planning. Below is a gif showing 2D quadrotor control using a PD controller to track a sine wave:
This term was interesting because it was mathematically-intensive without being too complicated or slow-moving. I really enjoyed the presentation on generating jerk-minimizing trajectories through desired waypoints. It was particularly interesting to see how to apply simplified methods of optimal control to a real-world ish problem. To top things off, I implemented a PD feedback controller to actually track the planned trajectory. This was a great start to the specialization in my opinion; my prior knowledge was reinforced and extended to industry-relevant problems.
Course 2: Computational Motion Planning
This was the course that I was particularly interested in taking. I had been hearing many of my coworkers talking about “A*“-this and “Dijkstra”-that for a few months-time. I had not even heard of these fairly basic search techniques for motion planning until I started work at Ford, much less did I understand how they worked. Once I watched the lectures and understood how to implement these algorithms, the concepts were much clearer. In connection to mathematical optimization, which I was familiar with, the course also covered gradient-based methods using continuously-varying potentials over a robot’s state space. This gave me a way to see grid-based planners, like A* and Dijkstra’s algorithm, as brute force optimization techniques with simplified cost heuristics. My favorite part of the course was using these planning techniques to plan motion around obstacles to a desired terminal state for a multi-linked robot:
Course 3: Mobility
In contrast to the previous two courses, which had programming assignments at the end of each week’s lectures, this course had qualitative assessments at the end of each unit by way of quizzes. I found the material interesting enough (Jerboa seems really cool!), but the presentation seemed uninspired and, therefore, this course was unenjoyable for me. Nevertheless, it was only 4 weeks long and I finished it.
Course 4: Perception
This course was pretty cool because I actually got to do image processing on actual videos. Applications ranged from the seemingly-trivial, like using homography to broadcast my rotated picture onto the goal in a soccer game
to tracking QR codes
I was also able to learn about about cameras and feature transformations, like SIFT:
A little detracting from the topics themselves was the fact that core Matlab utilities were integral to completing these assignments. If all I was trying to do was gain familiarity with image processing techniques, this would not have been a big deal. I was hoping, however, that I would be building algorithms with limited external library calls. If the course had been in Python, or any other open-source programming language, I would have been able to see the actual source implementations. Matlab’s nature as a “black-box” was more than a little frustrating for me during this course.
Course 5: Estimation and Learning
The first two weeks covered Kalman filtering and tracking objects. The final week had a challenging assignment to localize a robot with noisy range measurements against a known map:
The final project was particularly interesting because it was the first time that I applied particle filtering to a real problem. In the past, I had only really considered estimation problems where the underlying probability densities were mostly unimodal. In these problems, there was a sharp peak in the distribution near some central point (mean). For the robot localization problem considered in this project, the environment ws structured in such a way that only tracking the most likely hypothesis at each time would lead to poor estimates overall. This was revelatory for me and seeing how to apply these methods to a real problem was the most enjoyable part of the course for me, up to this point.
Course 6: Capstone
The capstone was my favorite part of the project. There were two tracks: hardware and software. For successful completion, only one track needed to be completed. The hardware track sounded like more fun so that is what I chose. This added an additional expense of about $150 for the materials (motors, Raspberry Pi, Arduino, chassis, etc…).
I am in the process of writing up a project post for this, so I will only summarize here. In six weeks, I built a simple differential-drive robot that autonomously navigated through a course with known map using April Tags as visual landmarks. The project was a lot of fun: I got to build a robot running ROS, nearly from the ground-up, in six weeks.
One frustrating thing for me was the fact that the programming for the hardware track was in Python and, therefore, not necessarily accessible based upon the rest of the specialization.
Conclusion
For the cost (about $450 all-in), I thought that this program was a bargain over comparable online programs, e.g. those of Udacity. The exposition was at times a little too academic for my taste: the presentations were dry and unengaging and the problems were a little contrived. Perhaps they have addressed these concerns by now, and perhaps not; I am not sure. This brings me to my major complaint about this specialization, and about Coursera, in general.
Since completing the specialization about a year ago, I have been unable to access the course materials. With Udacity, I am able to access a course’s lectures, exercises, etc… despite my already having completed the course. In my opinion, this is unacceptable, Coursera! What good is the material to me if I can’t review it later? On several occasions, I have wanted to go back and review some lectures or exercises for clarification and been unable to do so. Since I have already paid for the material, I believe that I have a right to access the materials at my convenience. Not being able to do so is annoying and inconvenient. However, even when considering this, I still believe that going through this specialization had great value for me. I learned a great deal and have found many useful resources as a result of the coursework.