What follows is the ROS story of Simon Steinmann from Canada. Simon is a ROS student at the Robot Ignite Academy, and he wanted to share his ROS engagement with all of us.
What is ROS
Before going into details about my Thesis and my reasons for using ROS, let me give a quick explanation or recap to what ROS actually is, for all of those who are not familiar with the subject.
ROS stands for Robot Operating System and is actually not a real operating system, rather a meta-operating system or environment. The big strength of ROS and its main operating principle is connecting different nodes together.
The power of ROS Nodes
Nodes are pieces of software and can be written in C++ or Python, making it really easy and accessible for most people. This way the functionality of a robot can be split into many little subsets of tasks. For example, we can have a node for controlling servo motors, nodes to read sensors and a node that contains controlling algorithms. All these nodes can talk to one another by using ROS’s publish and subscribe protocol. This is done using topics.
Imagine nodes being workers in an office, and topics being like blackboards in the hallway, which every worker can post information onto, and read the information of others, who have posted there. So, for example, a sensor node can post a topic containing the sensor data, and every node that needs that data can subscribe to that topic to get the data. There is a bit more to it, but that is the basic working principle, and it is a very simple and powerful one.
As mentioned before, one of those advantages is that different nodes can be written in either C++ or Python and work flawlessly together. Another great thing is the ability to have nodes running on different hardware. All we need is for them to be connected by a network. So, for example, we can have the nodes controlling the servos and reading sensors, directly running on the robot (like a drone), while the more complex controlling nodes and algorithms run one or several computers. It even enables you to control a robot from anywhere in the world, simply by setting up a VPN.
ROS – a must have skill for robotics developer
ROS is also open source and thus free, with a huge following and the excellent documentation and resources online. Robotics is a booming field in engineering, and with the advent of quadcopter and consumer drones in recent years, it has become a very accessible hobby with a low barrier to entry. However, ROS is not just for hobbyists, it is widely utilized in existing industry and the countless new robotics companies. This makes learning ROS almost a must if you are considering to become a robotics developer.
What do I plan on using ROS for?
I am currently studying Aerospace Engineering at the University of Stuttgart in Germany. However, my master thesis is in robotics and a cooperation between DLR (Deutsches Zentrum für Luft- und Raumfahrt, German Aerospace Agency) and the University of British Columbia. The goal is to develop a scalable method to train a set of Reinforcement Learning algorithms with the use of a digital twin. Once a task is “learned”, it is then to be implemented into the physical system, e.g. for production.
My Method is to be independent of the robot and task and scalable to a multitude of applications. In order to make things less complicated, I am working with the JACO2 Robot from KINOVA, which is a 6 DOF gripper robot.
The robot simulation is set up in gazebo. Both, the simulation and the physical robot, can be controlled via ROS. So in a first step, I plan to use ROS to communicate between the simulation and the machine learning algorithms, which I shall call the “brain”. The simulation provides and publishes all relevant position and sensor data, just like the real robot would, and the brain sends commands to the simulation. All this is done using ROS, nodes, and topics. Once the brain has learned a task in the simulation, it will then connect to the real robot, using ROS to send its commands to the robot. Since both simulating a robot and its interaction with objects with physics, as well as training machine learning algorithms is very CPU intensive, the ability to spread the workload over different machines with ROS comes in very handy. The goal is to have the machine learning run on one workstation, and the simulation on another. This was fairly straight forward to set up and didn’t require a lot of networking knowledge. Simply setting up a VPN between the machines and telling the 2nd computer to listen to the primary computer instead to its own localhost.
KINOVA, like many other robot manufacturers, already provides the controllers which can be easily implemented with ROS. This makes ROS an excellent choice for my thesis as a multitude of robots already use ROS. Furthermore, it natively supports c++ and python, making it incredibly easy to develop and to implement other software. Especially the compatibility with OpenAI Gym makes ROS a perfect choice for my work and any machine learning or reinforcement learning tasks.
Why did I consider Robot Ignite Academy as the best place to learn ROS?
Recently starting using and working with ROS made me realize how powerful and versatile it is, and I wish I would have been introduced to it earlier. I first came across the Robot Ignite Academy when researching how to make Gazebo and OpenAI Gym work together. I tried to implement their openai-ros package, which in theory is easy. However, having a non-natively supported robot, it quickly became apparent that I was lacking the skills and knowledge to efficiently tackle my problems. While the documentation for ROS on the internet is great and there are many tutorials, they are usually spread apart and it is hard to know what you have to know and where to start.
Having struggled for over a month getting our robot to run under ubuntu 18.04 and ROS melodic and constantly running into little hiccups and errors which require a lot of research, the already set up training environments in the Robot Ignite Academy sounds like a godsend and considerably less headaches trying to fix random errors and package incompatibilities in Linux. So I am looking forward to become a ROS developer in a quick and efficient manner. And while my field of study is Aerospace Engineering, with a focus on Space and Aircraft Propulsion, I am fascinated by AI, machine learning, robotics and Industry 4.0. All these areas are playing a rapidly increasing roll in my field of studies. And while I am not planning to become a pure ROS developer, I see learning and understanding ROS as a vital toolset for myself and anyone who plans to go into similar positions. In Industry 4.0 everything will be connected, and robotics will play a major role.
I want to be ready for that.