The Alumni Talk #1 — Mohamed Naveed (Batch 2014–18)
Mohamed Naveed finished his B.Tech in Instrumentation and Control Engineering from NIT Trichy (2014–18). He was the former President of Robotics and Machine Intelligence club of NIT Trichy. He’s an avid Robotics enthusiast and has worked towards inducing life into machines. Currently he is pursuing his Masters at Texas A&M university.
Interested in Robotics? Where to start from?
Is this the beginning of the robotics revolution?
This is the age for robotics, automation and artificial intelligence. Almost every other day there is some breakthrough in the research happening in these fields leading to machines that are getting more intelligent and lifelike. Many of you would be interested in getting into this field, so what to do? Where to start? Would be some of the questions you’ll be searching answers for. So, like you, I was also interested in robotics and have been working on it the last 4 years. I would love to share my experience, the path I took and the sources I referred to so that it’ll give you a rough idea. (I am not an expert, I have completed the basics and quite a little bit of advanced concepts in robotics which lead me to my next step. The path I took might not be the ideal one or one that you should strictly follow, but it certainly helps you to master your basics)
Firstly, you should have a strong interest to get things to work, a lot of patience and perseverance. Anything you try out is not going to work the first time, so try and debug until you get it to work.
Robotics is highly interdisciplinary, crudely we can say it has 3 main segments: coding (algorithms), electronics & embedded, mechanics.
Knowledge in C/C++ is essential, basic knowledge of data types, functions, decision statements, looping statements is sufficient for a beginner, knowing data structures and algorithms is a bonus, but they can also be explored later. Electronics and embedded systems is something new which requires a lot of learning. Initially, I learnt electronics basics like using a bread board, multi-meter, LEDs, resistors and some ICs like op-amps and voltage regulators. We are usually good at the theory, but in practice, it is very different, a lot of them don’t behave the way they should, it might be due to several reasons which we learn only when we try them out. So, the best way to learn is to build some basic circuits and test them out.
One of the most important basic things one should learn is how to use a microcontroller which is like the brain of your robot. I would recommend using the Arduino microcontroller, which is open source and has a lot of resources on the internet. It is also easy to code using the Arduino language, but if you wish to get a deeper understanding of how it works, code it in embedded C. You can move onto Arduino language after you understood entirely how it works. I used the book AVR Microcontrollers by Mazidi to learn microcontroller basics and embedded C. As told earlier, the best way to master it is to try it out by building some basic circuits. Interfacing different sensors helped me understand the various features (peripherals) of an Arduino and also helped me gain experience working with sensors. You can refer this website for tutorials and tasks. Basic mechanics is relatively easy as the concepts would have been covered in school physics. Additionally, I learnt about the types of joints, gears and actuators. I was able to build a ball launching mobile robot, line follower and a gesture-controlled robot using these knowledge.
Having familiarized with the basics, I went on to build my first project in my second year. Along with four others, I worked on ‘Sound Source Localizing All Terrain Hexapod’, a legged robot capable of traversing different terrains and moving towards a person who is calling it (Video). It involved embedded coding for Arduino, electronics for sensing sound (microphone), controlling motors (motor drivers), calculating motor shaft position (optical encoders) and a lot of mechanical and design aspect for building the robot structure which was the most challenging part. Since the project demanded design and fabrication, I got experience in using SOLIDWORKS and choosing the right materials required to build a robot. Calculating the required RPM and torque for the motors, selecting the right components, debugging, predicting future problems were some of the skills I gained by working on the project. After completing the fabrication and circuitry, came the locomotion part which we achieved using closed-loop control. The end product was amazing, we could visually see the algorithm, electronics and mechanics working together in harmony!
During my second year summer, I went on to do an internship at Indian Institute of Science (IISc) Bengaluru through the ‘Summer Research Fellowship Programme (SRFP)’. I worked on ‘Detection of Spam in Twitter’ which introduced me to machine learning. Initially, I had to go through the existing literature to study algorithms which are widely used in detection; then I had to compare and analyse their performance based on various metrics. Besides learning machine learning techniques, the internship also exposed me to how research is being carried out at this level. A good place to start machine learning would be to go through the course ‘Machine Learning’ by Andrew Ng in Coursera. I also learnt Python during the internship and would also recommend you to learn it as it is used predominantly in robotics.
I yearned to work on image processing, control and AI in my third year. So, I teamed up with three others to work on the project ‘Soccer Robots’ which involved the above fields. Every decision from robot design to choice of algorithm and components were taken after adequately studying the existing work and discussing the pros and cons. The project also involved design, fabrication and electronics part. Building the robots took majority of the time, we finalized on the design after optimizing it through 7 iterations, the electronics involved solenoid and boost converter for the kicking mechanism. Simultaneously, we also worked on image processing to localize the robot in a given environment. I gained experience using the OpenCV library for image processing which I learnt from these tutorials. I would recommend working on Linux (Ubuntu) as it is easy to install packages when compared to Windows. Our next task was to make the robot move to given destination which required control theory. We learnt the required concepts from the online course ‘Control of Mobile Robots’ by Magnus Egerstedt in Coursera and implemented them. It took us roughly 8 months to achieve this (Video)!
I interned at IIT Madras during my third year summer and worked on ‘Autonomous Mobile Manipulation’. The goal was to identify and manipulate (pick and place) an object specified by the user and to avoid static and dynamic obstacles in its path. The project involved object recognition, pose estimation, manipulation, trajectory tracking and SLAM (Simultaneous Localisation and Mapping). By now it is clear that robotics is diverse and has a lot of advanced fields and mastering even one of them is a tough task. So, how do we build a project that has a lot of fields involved?
ROS (Robot Operating System) comes in handy here. It helps us use third party packages for the fields we are not interested in and develop packages for the ones we are interested in, and ROS integrates them seamlessly. It is one of the most widely used applications in robotics all over the world and knowing it is highly desired. The tutorials given here are good, you can also refer the book ‘Learning ROS for Robotics Programming’. I developed packages for trajectory tracking and manipulation and used 3rd party packages for SLAM, object recognition and to collect data from Kinect and LiDAR. I learnt the concepts of manipulation (inverse kinematics) from ‘Robot Dynamics and Control’ by Mark W. Spong and trajectory generation from ‘Introduction to Robotics’ by JJ Craig. Though I went through only selective topics required for my project, I suggest you go through the entire text.
I continued my work on Soccer Robots in my final year and implemented path planning using A-star algorithm and trajectory tracking to enable the robot to reach the destination by avoiding obstacles (Video). I also worked on ‘Control Scheme for Leader Follower Mobile Robot System’ for my final year project. The project involved comparing the traditional PID controller with the modern State Feedback controller. The State Feedback controller was based on graph theory which is well described in the paper ‘Graph Theoretic Methods in Multiagent networks’ by Mehran Mesbahi and Magnus Egerstedt.
My journey involved learning the basics initially, then choosing good projects in the field I was fascinated by and developing the skills required to complete the project.
The internships I did gave me a chance to contribute to the research happening in those fields and also gain experience in modern techniques and methods.
I would like to thank Robotics and Machine Intelligence (RMI) without which I wouldn’t have even attempted these projects, and my project teammates, seniors, batchmates and my juniors who played an influential part in my journey.
Feel free to contact me if you need more information!
E-mail ID: firstname.lastname@example.org