
How to Become a Robotics
- 30. Jan, 2025

The Impact of Technology Modern
- 12. Dec, 2024

How Early Education Shapes Future
- 12. Dec, 2024
Welcome to WordPress. This is your first post. Robotics needs developers!
Robotics needs software engineers and software developers. A lot of them. This article is for software developers who have never considered programming for robots. In this article, we discuss the following:
Robotics developers are people who use their programming skills to program robots.
Robotics developers do not need to develop new path-planning algorithms. They don’t need to develop a new control paradigm. They don’t need to invent a new object recognition system. That is the job of the roboticists and AI at the labs. Robotics developers need to know which algorithms exist, how to use them, when, and how to integrate them into the complete robotics application. Hence, the global robot always does what it is expected to do.
That is the role of the robotics developer.
However, programming robots differ from programming an app or a web page. The program’s hardware changes continuously (because the robot moves in the world) and often experiences unexpected problems. That makes the programs more complex than apps.
Robotic programs interact with hardware constantly to take action and perceive the result of that action. That goes beyond mere user interaction because now, the program considers the user interaction plus the robot’s interaction with the world all that in a continuously changing environment.
The first question you may have is why you should consider becoming a robotics developer. I have the following answers:
Forecast of the robotics market in the world for the next years (source Statista)
I’m talking about industrial robots, and robots targeting commercial and consumer spaces. I’m talking about robots that interact with humans and help them with tasks. I’m talking about service robots.
Source: Robotics Tomorrow
Even if the industrial and military robot sectors are growing, service robotics is growing even faster.
What is starting to happen in robotics already happened with data engineers and deep learning just a few years ago. Today, every company wants a machine learning engineer, hence, you can find machine learning engineers everywhere. The machine learning space is now too crowded.
However, that is not the case for robotics programming. There are very few robotics developers in the world. Now is the best time to jump onto the robotics wagon and be one of the first in this field.
Check the weekly list of robotics jobs on our jobs page divided by continents.
Salaries for robotics software developer jobs (as of July 2023)
Screenshot from I Robot movie, showing a case of how robots can be useful
The point is that robots will take over many jobs currently performed by humans. It is inevitable. And those robots must be programmed by someone. Would you like it to be you?
There is a lot of hype about ChatGPT and the like taking programmer’s jobs. Let me tell you clearly: this is not going to happen soon. Maybe 20 years from now, AIs will be able to program anything, but for now, they are far from it.
AIs can improve developers’ throughput. They can make developers more efficient. They can help a single developer create a lot more than before.
But AIs cannot create the programs required for robots to work and deliver tasks. That subject is highly complex, and no AI can do it (only a few humans in the world can do it, that is us, the robotics developers!). Not now, or in the next 20 years.
Yes, you will need to incorporate AI to do better work. Yes, you will have to continuously adapt over the next 20 years and increase your productivity. That is true. But your job will not be in jeopardy for the next few years.
So now is the time to jump into software development for robotics.
One of the main reasons is the lack of a comprehensive curriculum that leads to the necessary skills to be a robot programmer.
Until very recently, there was no need for robotics developers. Robots could not do anything useful, so robots were relegated to the labs. However, as robots become more skilled, they are leaving the lab and going to homes, facilities, etc.
It is there that robotics developers become necessary, to build robust products.
The problem is that there is no clear path to becoming a robotics developer, that is, a person who uses software skills to program robots.
Usually, in the past, robot programmers were roboticists that knew a lot about mechanics and electronics and just enough about computer programming. However, just enough is not valid anymore. If we want to build robotics products, we need pro programmers.
However, software programmers cannot go directly to work as robotics developers.
A robotics developer must be good at programming, know robotics, and know the basics to understand how robots work, the main structure of its components, get data from the sensors, send commands to the actuators, and little more. It must be able to trust that the hardware will work as expected (in the same way that the computer works as expected). To master that, robotics developers may also need to study robotics theory.
Let me say it again:
Robotics developers do not need to develop a new path planning algorithm. They don’t need to develop a new control paradigm. They don’t need to invent a new object recognition system. That is the job of the roboticists and AI at the labs. Robotics developers need to know which algorithms exist, how to use them, when to use them and how to integrate them into the complete robotics application. Hence, the global robot always does what it is expected to do.
Until now, there was no clear path to becoming a robotics developer. However, in this article, I describe a full path to becoming a robotics developer studying online.
The second main reason is that, in general, software developers do not like to deal with hardware. You are likely a developer and have never thought about entering into the robotics realm. You probably think that by programming for robots, you need to know about electronics and maybe even mechanics. You probably think that hardware and software are so coupled in robots that you cannot touch one without touching the other. That interaction with the hardware is something that many software developers don’t like. After all, they decided to become developers of software, not hardware!!
Fortunately, that hardware interaction is not required at present.
Due to that lack of software developers, robot programming is done by roboticists, which are the people that build the robots. Perhaps some programmers are not directly involved in creating the robot, but they have no problem getting into the hardware and trying to fix it when something goes wrong. But let’s face it. Most roboticists are not as good programmers as developers are. That is why robotics could benefit from having many expert programmers enter the field. The good news is that attracting developers to the field is easier than ever. Thanks to the Robot Operating System (ROS), you can completely abstract the hardware from the software, so you can program a robot by knowing the robot’s ROS API and testing it on a simulation. Using the ROS API, you can forget about the hardware and concentrate on the software that makes the robot do what you want.
The ROS API lists of ROS topics, services, action servers, and messages a given robot provides to access its hardware, sensors, and actuators. If you are unfamiliar with ROS, you may not understand these terms. But in the developer’s language, topics/services/messages are like the software functions you can call on a robot to get the data from the sensors and make the robot act. It also includes the parameters you can pass to those functions.
Most modern robot builders provide off-the-shelf ROS APIs. For example, the ROS-Components shop, provides all its hardware with a ROS API.
If the robot you want to work with does not run ROS, you can make it work with ROS by ROSifying it. ROSifying means adapting your robot to work with ROS. To ROSify a robot usually requires knowledge to access the hardware. You need to learn to communicate with the electronics that provide the sensor data or access the robot’s motors. In this post, I’m not dealing with that subject because it’s out of the scope of developers. We assume you will be working with a robot already ROSified.
ROS stands for Robot Operating System. Even if it says so, ROS is not a real operating system since it goes on top of Linux Ubuntu. ROS is a framework on top of the O.S. that allows you to abstract the hardware from the software. And that is good news for you because this implies that you can create programs for robots without dealing with the hardware. Yay!
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
You can learn more about the history of ROS in this post
ROS is becoming the standard in robotics programming, at least in the service robots sector. Initially, ROS started at the university level but quickly spread into the corporate world. Every day, more companies and startups are basing their business on ROS.
Before ROS, every robot was programmed with the manufacturer’s own API. If you changed robots, you had to start the software again, apart from learning the new programming environment. Furthermore, you had to know a lot about interacting with the robot’s electronics to understand how your program was doing. The situation was similar to the computers of the 1980s when every computer had its own operating system, and you had to create the same program for every type of computer.
ROS is for robots like Windows is for PCs or Android for phones. With a ROSified robot, you can create programs to be shared among different robots. You can build a navigation program, a program that makes the robot move around autonomously without colliding, for a four-wheel robot built by company A and then use the same code to move a two-wheel robot built by company B…or even use it on a drone from company C.
ROS is being used in many of the current service robots. Conversely, industrial robotics companies are still not entirely convinced about using it, mainly because they will not have a proprietary system. However, several years ago, an international group called ROS-Industrial was created. They aim to make industrial manufacturers of robots understand that ROS is for them since they can use all the software off-the-shelf that other people have created for other ROS robots.
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
In the same line as ROS-Industrial, ROS-Agriculture is another international group that aims to introduce ROS for agriculture. I highly recommend that you follow this group if you are interested in robots for agriculture because they are a very motivated team that can do crazy things with several tons of machines by using ROS. Check out, for instance, this video about an autonomous tractor running ROS, built by Kyler Laird of the ROS-Agriculture group.
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
Now, if you are convinced about becoming a robotics developer, here are the steps that you can take to become a robotics developer:
First, set up your system to install ROS installed on your development system. Let’s see how to set up your machine for programming robots with ROS. You have two options:
ROS works on Linux Ubuntu or Linux Debian. ROS also can work on Windows and Mac, but the development in those systems is not as mature. I recommend installing one of Ubuntu’s latest versions on your computer. As of, May 2022, I recommend installing Ubuntu 20.04. You can skip this step if you use the ROS Development Studio.
If you still want to use Windows or Mac for ROS development, you have two options:
Currently, there are two different versions of ROS: ROS1, also called Classic, the original. And ROS2, ROS2 is more modern and oriented toward building robotics products. If you are new to ROS, I advise you to go straight to ROS2, but depending on your goals, you may prefer to go for ROS1. I created a video to help you decide which one to go for.
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
Once you have an Ubuntu system working, install ROS. Both versions of ROS are published in distributions. A distribution is a new release of ROS, usually once every two years. Every distribution has a specific name.
You can skip this step if you use the ROS Development Studio.
ROS Development Studio
Now is the time to learn ROS.
First, you need to be comfortable using the Linux shell. Also, you need to know how to program in C++ or Python. If you still don’t know any of these, I recommend you start with the following free online courses:
As I already mentioned, ROS can be programmed in C++ or Python. However, if you don’t know C++, do not try to get into ROS with C++. If that is your situation, please learn ROS with Python. Of course, you can start learning C++ now because C++ is the language used in the industry, and you will need to transition from ROS Python to ROS C++ later, but your initial ROS learning should be done by programming in Python.
You will think you can handle it and take both (learn ROS and C++) simultaneously, but…bad decision. And good luck.
Finally, bindings exist for other languages, like Prolog, Lisp, Nodejs, or R. Find a complete list of currently supported languages here. I do not recommend that you learn ROS with any of those languages. ROS is complicated enough without you complicating it more with experimental languages.
If you have the basics of programming in any of those languages and using the shell, the next step is to learn ROS. To do that, I recommend that you read this post that describes the 5 methods to learn ROS.
Of all the methods, I recommend our online Robot Ignite Academy because it is the fastest and most comprehensive learning route. This is not something that I say, but what our customers say. Our online academy has a cost, but it will considerably speed up your learning of ROS.
On the other side, Open Robotics, which builds and maintains ROS, provides a long list of tutorials here for ROS1 and another for ROS2. The list is so extensive that it can be overwhelming. If you decide to use this method to learn ROS, then I recommend that you proceed in the following order for the tutorial for optimal learning:
As a final recommendation, apart from being a ROS teacher at the Master of Industry 4.0 of UPC University, I am delivering a live online class about ROS every Tuesday at 18:00 CEST/CET. I recommend you attend and practice a new ROS subject with me every Tuesday at the ROS Developers Open Class. It is free and an excellent opportunity to master a single subject of ROS with a simulated robot.
You will need a C++ or Python code editor. Follow this page to get an overview of the main IDEs you can use to write ROS code. However, I recommend only two of the available options:
How can you test the programs you are developing for a robot? I am assuming here that you do not have access to a robot; actually, you do not want to have access!! Remember: developers!! Well, you have several options to test your ROS programs without using a robot.
If you are a developer, you already know what mocks are. You can create your own mocks that emulate the connection to the different parts of the ROS API of your robot.
On this page, you will find information about using mocks in ROS.
Working with mocks in ROS is not an easy option since it requires a lot of preparation work. Also, its usefulness is limited since it can only produce what you have put on it previously. Using mocks is an option that I don’t recommend for developing. Use it only if you cannot use any of the other options below or if you are creating unit tests. In my experience, I have never used them. I have always used one of the next two options.
ROS provides a way to record in a log file the full ROS API of a robot while running in a real-life situation and then run it back later on another computer. This log file is called a ROS bag. When you run a ROS bag on another computer, the computer will show the same ROS API to your recorded programs. You can learn how to use ROS bags here: record and replay of ROS bags.
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
ROS bags are a limited system because you can only use them to create an algorithm that does something from sensor data. This means that you cannot generate commands for the robot because it is only a reproduction of data, so you can get the same data as the robot got when recorded, but you cannot decide new actions for the robot.
So if you want to go pro without using a real robot, you should use robot simulations. Simulations are the next step in software development.
Simulations are like having the actual robot by your side but without having to care for the electronics, hardware, and physical space. Roboticists consider simulations the ugly brother of robotics. Roboticists usually hate to use simulations because it is not the real robot. Roboticists like contact with the real thing. But fortunately, we are here talking with the opposite kind of people, those who want to keep their hands off the hardware. For those, simulations are essential.
Let me tell you one thing: robot simulations are the key to intelligent robots, even if roboticists do not
admit it. More on that in future posts, but remember you read it here first!
In the case of simulations, you have a simulation of the robot running in your computer that can run and act like the real robot. Once the simulation runs, your computer will present the same ROS API programs you would have had if you were on the real robot’s comupter. That is the same as in the case of the ROS bags, with the advantage that you can now actually send commands to the robot and the simulated robot will reply accordingly. That is awesome!
To use robot simulations, ROS provides the Gazebo simulator already installed. You only need the robot simulation you want to program for running. Usually, the companies’ creators of the robot provide a simulation of their robot that you can download and run on the Gazebo simulator.
Installing simulations and making them run could be a little more of hassle. If you want to avoid that work, I recommend using our ROS Development Studio which contains the simulations ready to be launched with a single click and has ROS, IDE, and other valuable tools. Everything executed on a web browser requires no installation.
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
An example of the ROS Development Studio working with a simulation, ROS navigation stack, Rviz, and a terminal recording a ROS bag:
The final step to becoming a robotics developer is to master some robotics subjects. I’m sure that as a software engineer, you already understand many of the topics above because they closely relate to the typical job of a software developer. However, some concepts are closely tied to robotics that a software engineer needs to master (in the same sense that if you need to create invoices, you need to understand some accounting concepts). Robots are living things, I mean, things that move around. That entails a series of new concepts you need to learn because program will not stay in a fixed place anymore). What follows is a list of concepts that you need to understand to create robot programs. I have included a link to online courses that teach these subjects:
In this post, I have shown the future of becoming a robotics developer and how you can become one. Let me know in the comments what doubts you may have and which problems you encounter when following this path.
Here are some additional links that can provide more information about the future of ROS and how to become a ROS developer.
A history of ROSEdit or delete it, then start writing!
Robotics Developer Masterclass: A program that equips you with the skills to become a job-ready robotics developer. Enroll in the Robotics Developer Masterclass
ROS Developers Days: an online conference where you can learn by practicing with robotics developers from universities and companies worldwide.Â
The amazing story of how ROS was born (an amazing video series made by RedHat)