Who I am
I am an engineer at the core - a person who believes that there is a difference between "science" and "engineering". There is a reason why the knowledge of programming computers is called "computer science" - because it is really an art. Long ago when I came to the Silicon Valley there used to be an idea floating around that very soon all programming will be automated and there would be no need for human programmers. Twenty-five years later the demand for human programmers has multiplied many times and there is no doubt in any one's mind that humans will be needed to drive computers for ever. I was lucky to stick to my job back then - the artistic way of making computers perform our job (otherwise also called as programming), since I am still in business doing the same job as twenty-five years ago.
I have a hard-core engineering background for my Bachelor's degree, and also have a Master's and Ph.D in Robotics. I really enjoy all ideas involving making machines mimic human behavior. In the late eighties when I was a fresh graduate looking for ideas to do my Ph.D thesis, I observed something drastically different between the ways in which we humans solve problems vs. the way people program computers to solve the same problem. One of the hot topics back then was making robots avoid obstacles. At that time artificial intelligence had just started becoming a tool of choice for computer science researchers, and they were using concepts like configuration space to solve this problem. Every robot needs at least 6 degrees of freedom to uniquely access a point in space with a given angle. To allow some flexibility in readjusting its arm and end-effector location we need extra degrees of freedom. This is called redundancy in a robotic arm. The configuration space involves converting all degrees of freedom of a robot in real space (3-D world's X-Y-Z coordinates) to an alternate space comprising of angles of actuators (like \(\theta_{1}, \theta_{2}, \theta_{3}\) etc.) The obstacle avoidance problem was solved in configuration space attempting to find configurations where there was no collision. Needless to say it required high computation demands not available to everyone during that time. But what struck me is that this approach was very "non-human". We as humans do not need to do such complicated techniques in our head to avoid an obstacle on a path, be it static or dynamic. How are humans able to solve this common problem so effortlessly and effectively? There must be something missing!
Enter a new field of mathematics called Fuzzy Logic (invented by the mathematician L. A Zadeh) where all calculations are done in an approximate way. Humans are really good at performing approximate calculations in our head, and we manage to solve the most complex situations by constant sensory feedback about our actions. This seemed a more natural technique to me for avoiding obstacles. This was the genesis of my Ph.D thesis which involved determining an approach to provide feedback to a robot using sensory data in a "human" way. Each incremental movement of the robot was determined by simple rules like "if you see an obstacle on the right, move left".
To my surprise the topic of avoiding obstacles remains alive even now. The latest effort around autonomous vehicles has brought this topic up as one of the most relevant in today's world. Computers have become incredibly faster and sensors have become accurate and sophisticated. Chipsets have become so fast that one can carry an entire data center at the back of one's car. The problem of avoiding obstacles on the road for a moving car is still a 2-D problem - relatively easy to formulate, but taking decisions in a fast-moving dynamic environment with erratic human drivers around is a really challenging task. I am sure this will keep the current generation of autonomous vehicle researchers busy for a while.