Enhancing Vision of Autonomous Systems

Most of my robotics experience came from my involvement in Team IGVC last year. Recruited as a member of Team Robocon, we shifted to IGVC in October due to conflicting competition dates of the former. You can read about IGVC and its objective on its official website www.igvc.org.

The October was spent in understanding the problem statement, design rules, reading previous year design reports of participated teams and news forums. A basic construct I understood was that we were supposed to build an autonomous vehicle. Daily, we read the news about Tesla Autopilot, Driverless Car, Volvo Drive Me spending billions to make our autonomous car future a reality. Hence, the objective of this problem excited me. There were several modules on which one could work on. It was Localization and Mapping, Lane Detection, Motion Planning and Control. It wasn’t tough for me to snatch one end of the problem and decided to work on Lane Detection and Obstacle Elimination problem. It was because in my summer project I applied some basic processes of image processing and vision on Torch. As the work kicked off, the vision team revised some basics of OpenCV, installations, etc. For a couple of weeks, we worked on a sample IGVC lane video, only to get introduced to the drawbacks of using heuristic methods. We realized that we should stop checking Hit-and-Trial approach in such problems. One of the cons of using only heuristic approaches was that one could easily find several cases where it won’t work and in practicality, it obviously didn’t. Actually, for us realizing that solution of this problem using any obvious approach won’t work was tough but necessary. We needed to grasp some common theoretical concepts of computer vision, so we watched video tutorials of Prof. Mubarak Shah, UCF on YouTube. Most of our failed attempts were already described there as for why don’t they work and what more should be done. In practical testing at open environments, we got introduced to problems of changing weather conditions, soil patches, non-uniform grass, rough terrains, camera height, etc. Due to increased complexity, we were constrained to limited directions to think for the solution so that we don’t waste much time on an approach sure to fail. Not always one should search for an ultimate and easy solution to a tough problem because if the final solution has to get simplified it would automatically be done. A way to note down information to be extracted from lane video was to think how a human brain solves such a problem and what the input it remembers to return lane direction is. Often we used to read previously worked approaches on similar problems rather than always thinking from scratch. Documenting these approaches was an important task as weeks or months later we may want to know what we did. A good method was to neatly code it into functions so that directly loading the required library was sufficient to get their access. It also makes the code pretty understandable.

Another problem was obstacle detection. Blacking out some foreign color or some linear combination of several color components used to severely fail here returning false obstacles and hence cropping out some lane data. In order to tackle out this problem, we managed to incorporate LiDAR laser scan data. This gave us access to easily discriminate obstacles in the camera frame. Our final obstacle elimination algorithm was hence pretty much reliable as it would precisely crop out the obstacles.

Being a team member of IGVC has taught me a lot of things. Most important being Time Management. It was almost daily I used to wake up in the morning and note down a scheduled checklist for the whole day. One could hardly waste any time in such a situation. As one amongst 17 team members, it was the first time I got the opportunity to work in such large team. It is always a persistent experience working in such an enthusiastic environment. Thinking about how to approach a problem taught me that why sometimes intuition fails. It is because we don’t have the idea of all the problems one could face while approaching that problem or falsely simplifying it. As Einstein quoted, “Everything should be made as simple as possible, but not simpler.” If we realize that the solution to a problem won’t be easy, generally it doesn’t help to think from scratch. There are vast sources on the internet about such problems, people brainstorming on forums and research papers. Spending time wisely to read these materials always provides us with an offset edge as we get to know from where to start. So, our vision problem, in the end, wasn’t actually a coding problem but an algorithmic problem. Directly jumping on writing codes, debugging, etc. just to result in a failed attempt is nothing worth more than just a waste of time. Seniors and Professors were very helpful in the whole journey, and every member of the Team IGVC has been a source of motivation for me.

In these four years, not every student may get to apply things taught in his/her coursework. In Team IGVC one could learn anything helpful, see if it could work and apply it. The experience of the things going right according to your way is always satisfying. Not always do things work, so keep the morale high. In Elon Musk’s words, “If something is important enough, even if the odds are against you, you should still do it.” The first step is to establish that something is possible, then probability will occur.