So you want to become a Robotics Developer. You know, a guy that creates programs for robots. After all, there are not enough robotics developers in the world. It is a profession on the rise, and with good salary prospects. (See the image below, obtained from Glassdoor.com December 2022)
Maybe you have finished an engineering degree but feel a lack of application to real jobs. So you decide to go online to find the practical content required to become a Robotics Developer. Once you have the content, it is a matter of following it and acquiring the knowledge. Right?
Well, yes and no. The problem with that approach is that there is too much content online about robotics and software development for robotics.
The amount of content material (free and paid) is so massive that, unless somebody provides you with a proper roadmap, you will lose a lot of time in the learning process.
So in order to effectively learn by yourself, first, you need to figure out the following:
- Which content should you select?
- And, how should you prioritize the learning content?
In the following post, I’ll answer those questions. I’ll show you what subjects you must master and in which order to become a Robotics Developer. I have assumed that you are starting with zero knowledge (i.e., basic high school maths skills only).
This post describes the same structure that we follow in our Robotics Developer Master Class. Our 6-month learning plan guides you from zero to Robotics Developer and helps you land a job by means of our included internships at a robotics company. So I can asure that the learning plan of this post works!
First, you require a foundation for the systems used to learn more complicated subjects. The minimum basic knowledge required is the following:
- Linux. Linux is the base of most professional robotics systems. For that reason, Linux knowledge is a must. Take this free course to learn Linux essentials for robotics.
- Python 3. Python allows you to create quick prototypes and test your ideas before going into a production solution. Take this free course to learn Python essentials for robotics.
- Basic maths. A minimum high school level math equivalent is a requirement to understand basic robotics concepts. Take this free course to learn essential math concepts for robotics.
Good books about those subjects:
- Python Basics: A Practical Introduction to Python 3 (English Edition)
- Linux for Beginners: An Introduction to the Linux Operating System and Command Line
- Basic maths: High School Math Made Simple
1. The basics of robot programming
In this section, you will build your foundation skills for robot programming. This includes the following topics:
- C++, in-depth. Most robotics jobs require you to have an excellent knowledge of C++, so you need to start learning it as soon as possible and gain experience. The critical point for learning C++ is to dedicate time to practice on real projects. That is why the sooner you start, the better.
- Git version control. Git is a tool that allows developers to work collaboratively. Understand that when working in a company, there is no concept of “my code”. Your code will have to work with another engineer’s code. Git is the tool used in every robotics project to facilitate this collaboration. Master this tool and develop your robotics projects using Git, even if you study alone.
- Basics of ROS2. ROS is the standard in robotics. Learn and use this framework in the rest of your learning. ROS has the same problem as C++: you can learn the theory quickly, but real learning begins when you practice with different robots and situations. So, base your learning on this tool and, practice as much as possible during your learning phase.
- Learning the basics of ROS includes learning all the basic concepts of packages, messages, topics, services, and actions, as well as robot modeling using URDF and the concept of transformations (TF). However, that is the bare minimum you need to know in ROS.
- Which ROS version should you learn? Now, you need to know ROS2.
- Robot simulations. Simulations are an essential tool in robot development. After all, if you don’t want to deal with the hardware, you will need a place to test your code. That is in the simulation. So go and learn how to do simulations with Gazebo simulator. That is the default simulator in the ROS world and integrates well.
2. Build your own robot
Even if you are looking for a developer’s job (this is programming robots, not building them), you still require a basic knowledge of the parts and pieces of a robot and how they interact together to build the final robotic system.
You should build your own robot, even if a basic one, to see how the various parts interact physically. This process will give you a grounded knowledge of physical elements that you can later apply to your programming, an understanding why some software components are required, why they do not work, and isolate problems when something doesn’t work.
Aim to build a wheeled robot with a minimum of two wheels, encoders, batteries, and one sensor (a camera is the cheapest version, but if you can afford it, include a LIDAR).
Once the robot is built, you will need to add ROS controllers to it. But since your ROS knowledge at this time will be low, I recommend you start building a robot that already has the ROS controllers developed by somebody else, so you can practice cloning the repo, compiling, and installing those controllers.
I do not recommend trying to create the controllers for that robot at this stage because it will take a considerable amount of time. Of course, you will learn a lot, but you can speed up the process by reading another person’s and understanding it. After all, you will have to do that process (cloning repos, understanding other people’s code, installing…) often once you land a job!
3. Advanced robot control programming
Up to this point, you will have mastered the basic building blocks required for a robotics developer. Now, go to the next level, to apply that knowledge to a robot, making it accomplish tasks. You must master a robot’s different skills and apply them to task resolution.
- Robot navigation, or how to make the robot autonomously move from one location to another
- Robot perception, or how to make the robot perceive its environment and detect the relevant parts for its task
- Robot manipulation, or how to make the robot act upon the objects of the environment by grasping, pushing, and releasing them, etc
- How to add control to robot motors
4. Robotics theory basics
Now it is time to learn the theory. Even if you are going to work in robotics development and use many solutions already made for you, a minimum of robotics theory is necessary to understand what happens when something goes wrong. Also, knowing the theory will allow you to build better algorithms for robotics.
This section should include the following:
- Mobile kinematics
- Arm kinematics
- Kalman filters
- Robot dynamics
- Robot control
- Path planner algorithms
I recommend that you search for material that teaches you the algorithms while making you implement them in robots. I have found that this is the most efficient way to learn all that theory, make it stick in your head, and find the relation with what you use in your robot implementations.
5. Development tools for robotics
So far, you have learned a lot about programming robots and making them do things. However, when you apply that knowledge to a job in a robotics company, you also need to understand the tools required for software development in a professional environment. Again, you will not be alone, doing your own code. You will be part of a team that, develops the full robot software together. Then, you need to learn to use the tools used for proper software development.
Among those tools, include:
- Jenkins or a similar tool to automate processes
- Unit tests
- Functional tests
- Continuous integration
The goal is to understand how all the development tools integrate to have a complete pipeline of deployment, testing, and detection of errors. This is continuous integration. So you need to learn how to perform continuous integration, integrate Git pushes with Jenkins actions, deploy dockers with the code to test, launch the tests and associated simulations, and generate reports based on the success of the tests.
6. Extra subjects
As additional optional subjects, I recommend studying the following:
- ROS1. Many companies still work on ROS1, so you need to know how it works. Even if very similar to ROS2, you need to understand some differences in creating software for ROS1 robots.
- Web development to create interfaces for robots. The robots of the future will be from many different manufacturers, and the web interface is the only universal interface between the robots and human devices. So robot interfaces will not be based on apps but on the web.
Learn how to create web interfaces that display the robot’s status and allow you to control it remotely.
TIP: Practice while studying
My final recommendation would be that, in order to learn all this material, you do not just watch videos or read books. If you want to get the knowledge, you need to practice the material along every step you are studying. That is the only way you can master the subjects.
For that, I recommend you find sources that provide you with robot simulations or at least git repos with code that you can download and test your solutions. You can check The Construct’s public repo of free robot simulations and download some simulations to practice with them. You can also check The Construct Open Classes, delivered each Tuesday online, which provide a lot of code and simulations already working on any computer without requiring any installation, and everything for free.
So now you can search the internet for the best resources to provide you with the materials above. This should be your plan:
- Dedicate a few days to select the best materials by reviewing them.
- Make a list of the materials you selected for each subject in a document with links to the videos/posts/courses. If you are relying on books, order them now.
- Then, make a calendar detailing when you will finish each subject. This is mandatory, especially if you are following the program by yourself. The calendar will act as accountability, which is the most challenging part when studying alone.
- Then concentrate on those materials until you finish. Do not redo your list, or you will never end. The amount of resources out there is too huge! You should concentrate on learning rather on compiling more material (that is a way of procrastination, and signals that you lack willpower).
If willpower is your weak point…
Take into account that the weakest point in your path is your willpower. The main drawback of the self-learning approach is not not having the optimal path, and it is not not finding the optimal materials. It is, having the will to follow your plan until the end. This is where most self-guided learning fails at a +80% rate.
If you want to avoid that pitfall and wish to have a team that supports you, motivates you, and pushes you forward, check out our Robotics Developer Master Class. In a 6-month program, we provide you with a path and all the resources, a group of tutors supporting your learning, simulated and real robots, projects, and a final internship once you graduate.
Our Robotics Developer Master Class is project-based learning with employability in mind. Of course, we teach you robotics theory, too, but we emphasize the tools that you will use when working for a robotics company as a robotics developer.
And we will be pushing you along throughout the program! Check it out! Classes start in March and September 2023.
Check the Q&A session about the Robotics Developer Master Class that we are delivering on Youtube
Now you have a list of the essential knowledge must you master to land a robotics development job.
Go for it. The next 6 months can change your future for the better.
Final recommendation: during the learning process, pay attention to which subject sparks more interest in you. As you may imagine, the topics you learn in this program can be deepened in many ways. And since you cannot be a master of all the subjects, you should pay attention to those subjects that attract you more, and then, once you finish the program, go and learn more about them, or search for jobs related to that subject.
Now, go and do your homework. The robots of the future depend on you!