Updated: July 26, 2023
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:
- Reasons why you should become a robotics developer
- What that entails for you
- How to start
What is a robotics developer?
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.
Why become a robotics developer?
The first question you may have is why you should consider becoming a robotics developer. I have the following answers:
- Robot programming has a big future. The number of robots used in the world is increasing exponentially.
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.
Even if the industrial and military robot sectors are growing, service robotics is growing even faster.
- More big companies are entering the robotics game. Companies like Dyson and Tesla, are creating robots. Additionally, Google’s spin-off Intrinsic bought the Robot Operating System (ROS) team of developers to release Flowstate, their own software product for programming robots. That is a trend.
- Not enough engineers…yet. Due to the increasing demand for robots, many companies now have a robotics division. I know that because every week, more companies join our academy (Robot Ignite Academy). They want to train their engineers to program robots. These companies do not have robotics divisions, but are considering creating one and cannot find properly trained people that know how to program robots.
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.
- The demand for robotics engineers is very high. You only have to look at the robotics-worldwide mailing list to see how many job offers relating to robotics programmers are posted daily. The offers include various jobs: you can work for companies, startups, and research institutes, or even do an internship, PhD, or Post-Doc.
Check the weekly list of robotics jobs on our jobs page divided by continents.
- Salaries. Salaries for robot programming are quite good. You can check the average salaries for different countries on this website. See below an example for the United States:
Salaries for robotics software developer jobs (as of July 2023)
- You may be able to work remotely. If you work in software for robots, chances are that you can program the robots using simulations and DevOps tools without having to be on site. See more information below.
- It is super cool! Let’s face it. A software developer for robots is a lot cooler than a software developer for accounting or for pizza apps that deliver to you at the beach. Society considers robots to be one of the coolest things in technology.
- You can make a difference in robotics. What is especially interesting about service robots is that the key to having a useful robot is not the hardware, but the software. The hardware that allows a robot to clean your house already exists. The most significant limiting factor for service robots is software. So, your job can contribute to finally bringing useful robots to real life.
- You can make a difference in society. All Hollywood movies depict robots as bad things that will hate and enslave us. If you are a robotics developer, you can change this narrative by creating robots that are useful, good, and willing to help us. The robots of the future depend on you.
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?
But what about ChatGPT taking those jobs!?!?
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.
Why are there not enough developers for robotics?
Reason 1: lack of a learning path
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.
Reason 2: developers hate hardware
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.
Roboticists programming robots
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.
What is the robot’s ROS API?
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.
What is ROS anyway?
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!
You can learn more about the history of ROS in this post
ROS for service robots
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 for industrial robots
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.
ROS for agricultural robots
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.
How to develop for robots with ROS
Now, if you are convinced about becoming a robotics developer, here are the steps that you can take to become a robotics developer:
- Setting Up
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:
- Install everything on your computer. See below.
- Use our online ROS Development Studio which already provides everything set up and only requires a web browser.
Which operating system should you use with ROS?
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.
But I’m using Windows/Mac, not Linux. Can I still develop in ROS?
If you still want to use Windows or Mac for ROS development, you have two options:
- Full support exists for OSX, Gentoo, and Windows, but I don’t recommend using them yet. I’ve never met anyone who installed ROS on Windows or Mac without trouble. If you still want to go that way, check this page for more information about ROS on those systems.
- Use the ROS Development Studio, where you can fully develop for ROS using a web browser. This is our online platform that provides a complete ROS environment working with your web browser and requires no installation. I especially recommend this if you are teaching and need your students to be quickly on track.
Which ROS version should I install?
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.
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.
- Here are the instructions to install ROS1. Go for Noetic distribution.
- Here are the instructions to install ROS2. Go for Galactic distribution.
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:
- Learn Linux Shell for Robotics online
- Learn Python for Robotics online
- Learn C++ for Robotics online
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:
- Navigating the ROS file system
- Creating a ROS package
- Understanding topics
- Writing publishers and subscribers
- Examining publishers and subscribers
- Writing service client
- Examining service client
- Creating Msg and Srv
- Understanding service params
- Defining custom messages
- Recording and playing back data
- ROS TF
- ROS URDF
- ROS Control
- ROS Navigation
Here you can find a complete summary of the main topics you need to learn about ROS basics with clickable links.
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:
- If you want to install the editor on your computer, use the VSCode editor with its ROS extension. It is by far the best editor for ROS coding.
- If you want to skip this step, use the ROS Development Studio instead since it comes with an integrated IDE in your browser, requires no installation, and allows the easy sharing of projects.
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.
You use mocks
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.
You use ROS bags
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.
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.
You use simulations
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.
An example of the ROS Development Studio working with a simulation, ROS navigation stack, Rviz, and a terminal recording a ROS bag:
Additional robotics concepts you need to master
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:
- Basic maths for robotics
- Wheeled robots kinematics
- Robot arm kinematics
- Rigid body dynamics
- URDF robot model description
- Robot navigation (including Kalman Filters and SLAM, localization, path planning, and obstacle avoidance)
- Robot manipulation
- What is a frame reference system?
- Robot joint control
- Robotics perception with OpenCV
- Machine Learning basics for robotics
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.
Related links about ROS that may clarify things for you
Here are some additional links that can provide more information about the future of ROS and how to become a ROS developer.
- Robotics Developer Masterclass 2023: A 6-month program that equips you with the skills to become a job-ready robotics developer. Get 5% off with this coupon code: 86F7F489
- ROS Developers Days: an online conference where you can learn by practicing with robotics developers from universities and companies worldwide.
- ROS Best Practices
- The ROS Developers Podcast
- The amazing story of how ROS was born (an amazing video series made by RedHat)
- A history of ROS