Note: This is an email query I received from an undergraduate student who wanted to ask me about how to get into robotics research (SLAM and path planning). I am posting the questions and answers here in the hope that other people will find them useful. All personally identifying information has been removed. This is part of a pay it forward effort. Each one teach one.
I am currently in my 5th year of Dual Degree program offered by Aerospace Engineering Department at a top ranked college in India. I recently came across your profile on your website. I am interested in the field of robotics, in particular in SLAM and path planning, and wish to pursue my career/PhD in it. I am writing this to you hoping guidance/advice for the same as a fellow Aerospace engineer.
Here is a list of questions that are bothering me right now:
1) What is the on going research in this field (SLAM)? As in, what is research community in this field trying to solve? How many ways can one solve SLAM?
a) Read this paper. It will tell you what is the state of the art and future challenges in SLAM. SLAM is too vast a field for me to explain what’s happening in a blog post. The lines of research that come to the top are Pose-graph SLAM, recursive-SLAM, active-SLAM, SLAM with mutli-sensor fusion, SLAM with mutliple agents etc. Read the book Probabilistic Robotics, it is a good primer on all things robotics related. SLAM is still not a solved problem, people are trying all sorts of things, from doing SLAM for really really large environments to SLAM with novel sensors… the field is too vast to cover here. The ultimate goal is to build a robot where you can just push the “go” switch and the robot will handle all future events and tasks by itself it, if you think of the SLAM problem from that perspective then its easy to imagine a ton of challenges.
2) What all domain knowledge do I need to start working on state-of-the-art SLAM techniques? For example, this professor works
extensively on the manifold based optimization techniques in SLAM.
a) You need strong fundamentals in Probability, Linear Algebra, linear and non-linear optimization, some topology, basics of data structures and algorithms and very strong software programming skills (Python / C++). MATLAB is not programming!
3) What are the current applications of the SLAM in real life, that industries are interested in?
a) Pretty much everywhere you want to put a moving robot you can use SLAM, factory robots, warehouse robots, self-driving cars, drones, even in augmented reality, virtual reality etc.
4) Who are some popular persons whose research should I follow in this field?
a) I answer this question at the risk offending lots of good people I know personally in robotics. Here’s a highly incomplete list; Sebastian Thrun (no more an active researcher), Wolfram Burgard, Edwin Olson, Luca Carlone, Frank Dellaert, John Leonard, Stephano Soatto, Andrew Davison. Look at which papers have high citations, read them, then look at which papers they cite, read them…so it goes on. You will learn about the top people like this. Google scholar is your friend.
5) If I want to implement SLAM on my own, where should I start? As in which algorithm should I start with or which library should I start with. I was thinking of implementing Visual Odometry first before proceeding further. Or is there any data set online so that I can focus on optimization problem instead of dealing with hardware and feature extraction etc. Which one of the above do you think I should focus?
a) Focus on reading the basics and implementing simple simulations side-by-side. Understand the math, understand the physics, then move to a real problem. Start with EKF-SLAM. It was the first SLAM method and its very important to understand it. Then go to pose-graph SLAM (tutorial on how to do it with ROS). Look at Tim Bailey’s webpage for open source SLAM codes. Read Multiple-view geometry and understand how visual odometry works, then sure go ahead implement it. Theory and implementation are complementary and to become a good robotics researchers you need strong foundation in both. There is the KITTI dataset which is very popular in computer vision.
6) My aim is to contribute something to the research community at the end of this project. Basically, I want to produce at least one paper at the end of this project since I am thinking of pursuing PhD in robotics. Do you think I am being too ambitious considering that 1year time frame is too less since I need to start from scratch? If yes, then what and where should I focus? If no, then where and how should I approach? (If you find my perception of the world is messed up, please feel free to correct me since that is what the guidance is all about right?)
a) One year is enough time to create work worthy of a conference publication. Do not start from scratch if you’re planning to implement a real-world SLAM algorithm . Use as much open source software (ROS) as you can. Focus on implementing your own contributions if you want to make an experimental contribution and use open source for other things that you need. If you are planning to make a theoretical contribution (may not always be possible if you’re so fresh to the field) then really really focus on understanding what the problem is (read a book, few top papers), then pick a problem and attack a small part of it. This is where you local advisers (professors, senior students etc.) come into the picture. It is their job to guide you. BTW, reading and understanding the problem is required regardless whether you want to make a theoretical or experimental contribution.
7) Do you have any other interesting ideas where I can help you or where I can work on my own? I am fine with any kind of project as long as it involves challenges in implementation and a steep learning curve.
a) I have too many ideas and problems that I would like people to work on, but it usually works best when those problems are aligned with your own interests. My advice, learn lots of useful skills. I know of people who spend few hours every week learning Deep Learning / Machine Learning from Udacity, Coursera etc. Maybe you can learn computer vision, start with opencv. Build a strong knowledge-base, then use this knowledge to think of a problem that you really want to solve, apply your knowledge to solve this problem. After my undergrad, I had a crappy job, so I started learning OpenCV, I then wrote different applications, like one which would use my webcam to track if I was at the computer or not using face detection, if I wasn’t it would send me a text to remind to get back to work! I then quit my job to become a full-time researcher within a month. Have fun learning and do fun projects. Slowly you will see your skills improving, your project portfolio growing and your projects becoming increasingly more complex. In the end it will be a natural progression to an outside observer.
8) what are your plans after PhD? Will you stay in academia or shift to industries? If it is industries, what kind of companies are you looking for?
a) I plan to join a startup or start my own robotics company.
9) Is there any life advice you would like to give me? Anything like which courses I can do or how I should approach professors for PhD in these kinds of domains? What will they expect from a student? etc…
a) Take the time to learn more about your field, pick interesting problems and work on them. Dig deep, either you will hate it, or fall in love with it. If you hate it, then change the problem you are working on. If you love it, stick to it and dig deeper. That’s how I did it and I think it worked out okay till now… If you need specific advice see this other blog post I wrote on why people need to take robotics seriously as a career option and some specific advice on what courses etc to do.
P.S: I have searched for these answers on my own but I need your opinion/views considering that you are a researcher in this field.
P.P.S: I hope I am not causing you any trouble. I can’t ask other professors since they will ignore this kind of emails.
I cannot count how many such emails I receive every month. The common thread I sense amongst people who send me such queries are that they are unsure of the next best step in their career in order to get into robotics (one can generalize this to any career field really) and they are scared to just take “a” step, “any” step. My one line advice is, “You don’t have to have all the answers on day 1, no one ever did, I never did. This is your journey, it is up to you to make all the efforts you can to build your career, start by experimenting, take a job, take a research position. It doesn’t have to be in the exact field of your choice, but if you’re dedicated and determined you will always keep taking decisions that move you in the direction of your vision”. Here’s a beautiful quote by Chris Hadfield (astronaut).
“Decide in your heart of hearts what really excites and challenges you, and start moving your life in that direction. Every decision you make, from what you eat to what you do with your time tonight, turns you into who you are tomorrow, and the day after that. Look at who you want to be, and start sculpting yourself into that person. You may not get exactly where you thought you’d be, but you will be doing things that suit you in a profession you believe in. Don’t let life randomly kick you into the adult you don’t want to become.”
― Chris Hadfield
Advice on how to ask for advice from strangers
Ask yourself this question, if someone sent you such a lengthy email, how likely are you to respond and help that person? How deep are you willing to dive to help a total stranger? There is a reason why a professor will definitely not respond to an email like this. Keep your emails short, show that you have done some basic research yourself. Show that you made an effort to read about the field. Show that you did some projects. Show that you have some specific needs for which you are seeking answers. The more general your questions, the less likely you are to receive a response. If you just need career advice, please don’t send me your CV as I will not look at it. I am not planning to hire you! This is just you expecting me to do the hard work of learning who you are, instead you should explain in 2-4 sentences who you are and what are your top 3 accomplishments.