In our childhood, often robots are seen as very metallic, totally mechanical devices. But after getting into the robotics field, you will realize there is a lot of software side in robotics. Robotics software engineering is the field where you develop software for robot control and automation. In this article I will list out 11 steps that will improve the essential skills required to pursue a Robotics Software Engineering career. At the end of each step, I will list out selected courses under Recommended Courses heading.
Please note that the first five steps, along with the last two steps, are enough for you to start your career as a Robotics Software Engineer. But if you want a much broader knowledge in robotics, I can assure you following all 11 steps will make you an expert.
Step 1 — Learn Mathematics
Is mathematics really used in robotics? When you were building your first line following robot, you may never have used any mathematics concept. But, actually, mathematics is fundamental if you are building your robot from the ground level.
Okay, I will list out what you should learn.
- Linear Algebra
Calculus is used in developing algorithms—especially when developing algorithms for navigation and mapping of the robot. Linear Algebra — Matrix and Vector Algebra are used in Artificial intelligence, Computer Vision, and Robot Kinematics. Computer Vision, along with machine learning, requires the concepts of Statistics.
Step 2 — Learn Programming Languages
Since you are going to become a robotics software engineer, this step is a must. But, you don’t have to learn as much as programming languages in different areas. There are only 3 programming languages you need to know.
Let me explain why you need to learn these programming languages one by one.
Python is a programming language with many libraries that allow you to prototype robotics algorithmic concepts and visual data and run tests rapidly with less coding than C++.
When it comes to Raspberry Pi single-board computers, Python is the preferred language and also can be used with Robot Operating System (ROS)
ROS is not an operating system but a collection of software frameworks for Robotics.
Python is the programming language for Artificial Intelligence as well.
C is also an essential and widely-used programming language for robotics but in a different perspective. Almost all the hardware libraries used in robotics use C. These are the libraries that allow interactions with real-time hardware and real-time performance.
Additionally, C can be considered as one of the most efficient programming languages available.
The third programming language to learn is C++. I will say it like this — if you want to pursue a Robotics Industry career, knowing C++ is necessary. C++ can be considered a perfect programming language for robotics for performance, memory management, and scalability; C++ can be considered a perfect programming language for robotics. C++ can be considered a procedural and object-oriented programming language, while C is only a procedural programming language.
Note: You can use either Python or C++ or even both with ROS.
In job interviews for robotics software engineers, I also like to mention here, questions in C++, even about advanced topics such as inheritance, C++ design patterns, are very usual.
Step 3 — Learn Linux
As a robotics software engineer, you need to know Linux. Linux is the preferred operating system for robotics due to its security, stability, and customizability. The other reason is Linux is open source.
Besides ROS, Gazebo both run on UNIX-based platforms. So if you ever need to use ROS or Gazebo, you will need to know Linux.
But for now, I suggest you learn the basics of Linux rather than directly going for learning ROS. The best way to learn ROS is by using it in a project.
Step 4 — Learn Data Structures and Algorithms
Data Structures and Algorithms are two of the essential courses to take by anyone who wants to make a Computer Science related career. Since we are talking about a Robotics Software Engineer, you should start learning these two when you feel comfortable with your programming knowledge.
Besides, there are always, I say this with high confidence, at least 3 or 4 questions related to Data Structures and Algorithms in job interviews for Robotics Software Engineer roles.
Step 5 — Learn Mechatronics
Mechatronics is the branch of engineering that focuses on mechanical, electrical, and electronic systems. Actually, robotics is a subfield of mechatronics.
I highly recommend buying an Arduino or a Raspberry Pi and doing some hands-on projects while learning mechatronics. Just learning theories won’t help you in engineering fields. You need to see the proper application of those theories.
Step 6 — Learn Robot Vision
Robot vision is a broad term that includes,
- Image processing
- Computer vision
- Machine learning / Deep Learning
Robot vision is used in mobile robots, humanoid robots, self-driving cars: drones, surgical robots, and many more. Simply, robot vision is an essential part if you are building an advanced robot.
I will tell you a simple example to understand how the above three robot vision concepts are used in practice.
Let’s say you want your robot to track a Cricket ball. If you have ever watched a cricket match, you must be very familiar with the sentence “Ball tracking when ready.” Yes, I’m talking about the third umpire’s ball tracking for LBW. (If you don’t know what I just said, imagine you are tracking a tennis ball)
You first use Image Processing techniques to convert the colour image of the object to a greyer scale. Next, you use Computer Vision techniques to detect the object within the image. After that, you use Machine Learning / Deep Learning techniques for pattern recognition and decide if the detected object is a Cricket ball. And then if and only if it is a Cricket ball, you track it.
You may remember, I said in Step 1 that Linear Algebra is used in computer vision. The reason is images are basically 3D matrices, and you do a lot of matrix operations in computer vision.
OpenCV is the most popular computer vision that you can use with or without ROS using both Python and C++ when it comes to Computer Vision libraries.
Artificial Intelligence or AI also has applications in robotics. Besides, AI is a huge field on its own. Even many of the existing robots, such as BostonDynamics, are still not full AI robots.
So my personal recommendation is not to get into AI at this point unless you want to be specialized in an area like self-driving cars.
Step 7 — Learn Localization, Path Planning, and Navigation
Simultaneous localization and mapping, a.k.a SLAM, is the method of constructing or updating a map of an unknown environment while keeping track of your robot’s location within that map at the same time. SLAM is mainly used in self-driving cars, robot vacuums, rovers, and many other mobile robots.
Have you ever wondered how a robot vacuum works? A robot vacuum with a SLAAM uses data from the wheels, cameras, and other sensors to determine the number of movements needed. This is called localization.
This robot also simultaneously creates a map of the surrounding environment and obstacles. This is called mapping.
Step 8 — Learn Robot Kinematics
As a robotic software engineer, you may need to implement forward inverse kinematics for a robot arm. Additionally, you will have to deal with coordinated system transformations during your career as a robotics software engineer.
As I have mentioned above, there are three main concepts you have to learn under robot kinematics. They are,
- Coordinate system transformation
- Forward kinematics
- Reverse kinematics
Let me give you a simple example. Assume you have a robot arm with two joints, and each joint is at a specific angle.
Knowing these two angles, you can calculate where the tip of the robot arm should be in the space. This is what forward kinematics will answer.
Now, what if we have the exact opposite situation, meaning you want the robot’s tip to go to a specific point. What joint angles do we need to give to the robot. This is what reverse kinematics answers.
Robot Kinematics (Beginner to Advanced) – Robotics (edX)_
Robot Kinematics (for Mechanical Engineering Students) – Modern Robotics, Course 2: Robot Kinematics (Coursera)
Step 9 — Learn Control System Design
Since you are focusing on the software engineering side, you don’t need to be an expert in control system design. Usually, mechanical engineers specializing in mechatronics or robotics or robotics electrical engineers are responsible for developing a robotics project’s control system.
As a robotics software engineer, you only need to know what a PID controller is and implement it.
Step 10 — Learn Software Development Lifecycle
This is the last step of this roadmap and one of the most practical steps that will prepare you for your job interview and your first job as a robotics software engineer.
When you feel like you need to master a certain area in these topics, find a proper course to follow.
Step 11 — Keep practising.
Just watching the tutorials in an online course won’t take you anywhere. The most important part is to keep practising. A theory’s application is the best possible way to go deep into that theory and understand it properly. So, get your hands dirty and go for an advanced project while doing small projects to learn.
And finally, I should tell you, unless you are going to start your own robotics company or have done advanced robotics projects, you will require a college or university degree. Otherwise, your chances of passing the first stage of an interview will be significantly less. But you don’t need a robotics degree. A software engineering or a mechanical engineering degree, or a Bachelor of Science degree will be enough for that step.