I have been musing of late around thinking about the algorithm behind self driving cars.  For all you programmers out there – the self driving car is a great thought experiment on how to devise a technical solution to an existing problem (assuming you think humans driving cars is a problem).   If presented with the problem – how would you attack it?

Here were my thoughts.  Assuming a car has over 20 different sensors,  make each sensor responsible for a task – and each sensor elevates a recommendation to a central processor.  For instance, ‘right front camera detects pedestrian on right’,  and ‘front camera detects stop sign at 100 ft’.  The central processor would then weigh the various inputs and make a decision on how to proceed.

So that’s one layman’s thought. I ran across this video that has the answer on how Google approaches the problem.  According to the video presenter, the algorithm first processes all the inputs, and detects known shapes, then calculates the various shapes predicted movements, then makes a decision.

Google has invested a lot of money into machine learning, so it wouldn’t surprise me if their algorithm is more dependent on machine learning than say Tesla, BMW or others.  The algorithm may also be different for self driving trucks, since their use case is more highway oriented, with fewer variations in objects, and hopefully more defensive. Also, self driving trucks will likely have podding technology, allowing trucks to virtually chain together to reduce wind drag and improve mileage.

Whatever the case, it seems certain that in 5 years, when you buy a car, a significant factor will be ‘what operating system does it have?’.   Will different operating systems make different moral judgments about what to do an emergency?

It could also be that the best algorithm hasn’t even been designed yet,  as we are in the early stages of this technological transformation.  I hope all technology companies add the question ‘how would you design a self driving car?’ to its list of interview questions when hiring software developers.  Seems like the ultimate programming problem of our day.


Leave a Reply