I recently watched CGP Grey’s video titled Humans Need Not Apply and I have some nitpicking to do. While I agree with his general premise, robots will take over more and more jobs and as a society we need to discuss the consequences of this, I disagree on some specific points about the robots he mentions. Particularly about self-driving cars (or autos as Grey calls them, which I will adopt for this post).


My main problem with the video is basically this: Watching the part about self-driving cars makes it seem like they are basically done and are waiting for legislative approval before going into mass production (I might exaggerate slightly for dramatic effect). This is far from true. Let’s look at some quotes from the video.

Self-driving cars aren’t the future, they’re here and they work.

Well, yes and no. Quite a few prototypes exists and it depends on your definition of “work”. I’ll get back to this.

Self-driving cars have traveled hundreds of thousands of miles up and down the California coast and through cities, all without human intervention.

Ah! Well I guess that’s technically true: There is no human intervention while they are driving. However, there is quite a lot of human intervention before they drive (and I’m not just talking about programming them). The problem with all of the existing autos being developed right now can be summed up in two words: No SLAM.

SLAM stands for Simultaneous Localization and Mapping which basically means that a robot (or auto in this case) starts with an unknown environment and via sensors construct a map of the place while simultaneously keeping track of its location in it. Few (if any, I couldn’t find any when searching) self-driving cars currently do this.

Take Google’s self-driving car project for example, it cannot navigate on its own without a human first having driven the same route and built a map of the area. And a Google Maps map is not sufficient. The map basically needs to contain much of the same information as the auto has access to while driving. This essentially means that a human must drive the auto (or a vehicle with similar sensors) once initially to create the map before it can do any navigation of its own.

The astute reader will probably have realized the consequence of this: In order for these autos to succeed in replacing human drivers, essentially all roads will need to be mapped in this manner. This also means that the maps has to be kept up to date continually. What if intersections move? If roads get built or shut down? While it is possible for the auto to detect and cope with such problems when they arise, they can for example make route planning sub-optimal.

The alternative solution is SLAM, if autos could just draw a map and localize themselves in it while driving, we wouldn’t need to hand them prefabricated maps. The problem is that SLAM is a hard problem. And by hard, I mean hard. Like people-have-been-cutting-their-teeth-on-this-problem-since-the-eighties-hard. The Wikipedia page I linked to above has some details about what makes it so difficult.

The question is not if they will replace cars but how quickly.

Nothing to argue against there. I agree it’s inevitable that autos will replace cars eventually. What I basically disagree with is the timeline I perceived from the video.

They don’t need to be perfect, they just need to be better than us.

Again, I agree, but in order to even begin to replace human driven cars, autos first need to master navigating in new environments at all.

Final Thoughts

I’m not saying there isn’t some awesome research being done regarding autos (because there is) and I would be the first person in line (budget permitting) to buy one when they do get mass produced. I’m also not complaining about Google’s research into self-driving cars. They had to do some trade-offs in order for the project to move forward at all and I can see why they chose to down-prioritize SLAM.

Tangential Side Note

I just wanted to point out that Baxter is a cool robot built on ROS which I regularly work with in the robot lab at Lund University. Without getting too technical, ROS provides lots of ready-made functionality and communication primitives which allows you to get started quickly when developing new robots.

That said, there are some design issues with ROS that makes it more or less impossible to use for critical real-time tasks, effectively limiting what robots build on ROS can do. Unfortunately, this means that much of the awesome functionality in ROS (such as geometry calculations, localization, mapping etc.) can’t be used for more demanding tasks. Oh well, can’t have it all.