One of the most important things I learned very early in my CS schooling was that data (or problem) representation is, by far, the most important step to solving a problem computationally. Your computing platform, compiler, language, editor, memory size, speed, etc. cannot compensate for bad representation.<p>While I recognize the amount of work and smarts that has gone into self driving cars it is my humble opinion that the typical approach being taken is fundamentally flawed.<p>The right approach, again, in my humble opinion, is to change the representation of the problem: Roads have to be smart. Cars smarter, yes, but roads need to be modified for robots. Change the problem you are trying to solve and the solution might just become massively simpler.<p>Embedding technology into roads in order to facilitate robotic navigation would solve tons of problems. Private enterprise can take care of parking lots and private garages, and they will, when enough self-driving cars are around to make it worth their while to install the technology.<p>When my kids were younger they had huge problems opening doors around the house that were equipped with spherical handles. If their hands were wet after washing them, even worst. So, we changed the problem: We installed lever type door handles and even the youngest kid with hands full of soap could open the door now.<p>But, hey, what do I know.