What follows is the ROS story of Paschalis Pelitaris from France. Paschalis is a ROS student at the Robot Ignite Academy, and he wanted to share his ROS engagement with all of us.
How my interest grew
From an early age, I was fascinated by the notion of autonomous machines capable of sensing their surroundings, extracting valuable information in order to better understand their environment, and finally being able to act upon it, changing its state. I believe that the advancements and changes that can derive in the socioeconomic structures from the increased integration of autonomous machines in everyday life will be tremendous. Of course, the opportunities that will arise have to be treated carefully, but let’s not delve into this philosophical subject now.
During and after my university studies for Electrical and Computer Engineering, I had the chance to work on various AI and robotics projects. But gradually, I moved closer to the “machine learning” part, with tasks like Computer Vision and NLP. Coming from a non-embodied approach to building cognition where one tries to solve intelligence with a dualistic mindset, trying to teach the brain so that the interchangeable bodies that it will occupy will eventually follow, I was intrigued by the holistic view of intelligence that “Embodied Cognition” represents. Embodied cognition is the philosophical theory that claims that the best way for the brain to understand its surroundings and thus the world in which it operates is through the body it occupies. This quickly led me to realize the importance of being able to create and work alongside a body, a robotic body. Training Neural Network models was not enough. I knew I had to become proficient in developing robots.
The first, shy, steps
It was during my years at the university. Through my engagement with the University’s Robotics Team, I first came across and later was introduced to the Robot Operating System (ROS).
ROS is a middleware, or meta-operating system, created by two Ph.D. students, Eric Berger and Keenan Wyrobek. And further developed later by Willow Garage and finally Open Robotics, in order to simplify and eventually standardize the development of software for Robots.
You see, until then every Robotics researcher and company interested in working on robotics had to create their own platform to work on. This procedure was tedious and needed a lot, if not most, of the time and resources available. Also, the philosophy of freely distributing the code of your project so that others can use, change and improve it was not that prominent as most of the software was proprietary. That was one of the big contributions of ROS in the Robotics research society. Built with a philosophy of open source and modular software development it provided the ability to reuse code from other projects and thus increasing the speed of development cycles.
Additionally, it provides integration with other open-source frameworks that extend its functionality, such as “Moveit” for kinematics control and motion planning and “Gazebo” for 3D Robot simulations. Here, I would like to point out the importance of simulation in Robotics. It provides a low cost, easily accessible environment where multiple robots can be tested, and evaluated without the need to physically own any of them. It also provides an effective way to train robots with lots of “cheap” data before deploying them into the real world.
ROS vs …
Although there are other middleware for robotics similar to ROS, nowadays ROS is the framework that is most widely used by academia, and an increasing number of enterprises for Robot software development.
Apart from the features I mentioned before, one of the reasons why that’s the case might be that it is Cross-platform and language-agnostic, meaning that it can run on all major platforms and that the code can be implemented in multiple programming languages. Furthermore, ROS is becoming the standard for robotics, and I am of the belief that this will be solidified even more with ROS2.
Alreadythe knowledge of ROS is a highly demanded skill in the robotics job market. But the main reasons why I chose ROS over the other solutions available are the following two:
Firstly, it has a large and vibrant community. Apart from the fact that the active members of its community provide new packages or updates to existing ones making development faster, they also offer great troubleshooting advice that can help quickly overcome small or larger pitfalls.
Secondly, there is a plethora of documentation, books, tutorials, videos, and MOOCs available to get you going in “relatively” no time. This is a real advantage for beginners, it lowers the learning curve and gives you positive feedback when you see something that you developed working without being stuck at each step of the way.
Becoming better at ROS
And speaking about sources that can help you get up to speed with ROS quickly and smoothly, one of them stood out for me.
Of course, ROS has its official documentation and that’s a good starting point. Even though, there have been some concerns about the approachability of ROS documentation towards beginners. Personally, I think that ros.org provides decent documentation, but I feel that it lacks the interactiveness that we all got too used to lately. This is also a weakness of the second possible source of material, books. Although, I like how much depth a book can cover and that you can always go back to it for reference as long as you have it close. Online Videos and MOOCs can solve this drawback of static text. One can ask questions about things she has difficulty understanding and get answers fairly quickly.
However, some online video tutorials luck a good structure or cover topics sparsely. The same cannot be said for the videos of The Construct YouTube channel. For example, their “ROS in 5 minutes” playlist is a good point to start, it covers most of the basic tools and ideas you need to know. But what is even better is their online teaching platform Robot Ignite Academy (RIA). There, one can find almost 30 different courses that cover different topics and applications of ROS. The courses are also organized to “Paths”, bundles of courses with similar orientation for different purposes and uses of ROS. These courses are structured for a proposed duration of 5 days and the “Paths” for a duration of 1 month, so by the end of each week, you can finish with one course, move to the next one and by the end of the month you’ve completed the Path. RIA employs the philosophy of learning by making. It is interactive, and you can start learning right away. You don’t even have to install ROS on your computer, you can access it from every device. This is made possible by ROS Development Studio (ROSDS), the Construct’s online ROS platform. The learning actually takes place inside the ROSDS. The relative theory is laid out along with the steps of each tutorial and you can also watch the corresponding class video. You can run code and see the results in a simulated environment. It also features live class sessions on a specific topic every week.
And for all that, Robot Ignite Academy has become my weapon of choice for learning ROS.
The journey has just begun…
Now, I am already on my way to complete my first “Path”, “Machine Learning for Robotics”. After a recap of the ROS basics, I will move on to how to utilize TensorFlow and OpenAI Gym to train autonomous Agents. After that “ROS for Self-driving Cars”, will follow and then the possibilities are numerous…
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.
JACO2 Robot from KINOVA
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.
What follows is the ROS story of Shahram Najam from Pakistan. Shahram is a ROS student at the Robot Ignite Academy, and he wanted to share his ROS engagement with all of us.
Why ROS?
So, for this article, it would be appropriate to give a brief background of who I am and what are my credentials. So, my name is Shahram and I am enrolled as an undergrad student in one of the most renowned universities of Pakistan, NED University of Engineering and Technology with my major being in Electronics with a specialization in Robotics.
One of the most common questions I come across, (which evidently I had in my mind as well as beginner somewhere in time as well) is “What is ROS?” and “Why should I learn ROS?”. So these are the questions that I will be addressing in my brief article today and share my personal motivation and experience that led me down the mysterious pathways of ROS.
What is ROS?
Ever since its inception back in 2007, the popularity and importance as a universal framework has grown exponentially and now the ROS community is based on researchers and hobbyists alike. Everyone irrespective of their background is mesmerized by the “Esoteric-World” of ROS. So it would only be fair to introduce ROS in the simplest of manner.
ROS is an acronym of “Robotics Operating System”. It is obviously not your traditional “Operating System” like Microsoft Windows, Linux or Mac OS, rather it is a “meta-operating system” for a robot (Aerial robots/drones, Humanoid Robots, UGV, etc.), which provides relevant services one would expect from an OS to control and communicate between the various components of the robot to function seamlessly. In short, ROS is a flexible and universal framework for writing and publishing software for robots.Due to its vast community there are readily available libraries and tools that could be used as “out of the box” solutions that could be used across a wide variety of platforms for emulating robust and composite behavior of robots i.e. the concept of ROS was conceived with only one thing in mind, and that was to make the robotic software reusable across various platforms without being interlaced with the hardware of any specification.
Why ROS is the best option to become a robotics developer?
In the modern-day and age of computer, practically everything is being taken over by computers for automation; and the backend for any of these systems there exists a robust software. For those who have been a part of software development would opt with my point that software development can be quite a time consuming, and that is why most of us try to utilize the readily available frameworks that offer tools and conventions to streamline and speed up the development process and be unobtrusive, modular and efficient.
Likewise, before the advent of ROS, most of the time during research projects was invested in re-implementing the software infrastructure such as drivers for embedded electronics, actuators and sensor networks, defining communication protocols etc. for formulating algorithm for advancements in robotics research and very brief period of time was actually dedicated towards the actual research for intelligent algorithms for intelligent robots.
ROS is nothing short of a miracle and time-saver for any robotics developer in this era of robotics. The ROS community has sky-rocketed and now on daily basis state-of-the-art robotics tools, libraries and packages are being published and open-sourced by various researchers and industries which can be used as modular building blocks for building a robust foundation for any project and to simulate its behavior without the constraints of hardware availability and costs. This is especially a win-win situation for any robotics developer irrespective of his/her background; be it a hobbyist looking to make a savvy line follower robot using image processing and a sensor network or be it a researcher to implement the state-of-the-art mobility or control technique, presented just days before in a conference, for further improvements or be it an industry looking to implement the latest update seamlessly to its network of robots on the assembly line without cessation of production. The question isn’t “Why should I become a ROS developer” rather the question should be “Why shouldn’t I become a ROS developer?” given the strong community support and easily reproducible state-of-the-art tools available.
Why do I want to be a ROS developer & What do I plan on using ROS for?
Well like many others, I have always been fascinated by robots and so this fascination and alacrity led me towards the world of embedded systems for robotics. As my capstone research project in my final year, I decided to work on Pakistan’s first-ever human-sized Humanoid Robot “I-Force” due to my obsession with human-machine interaction. Instantly I ran into a world of problems when the software development phase has begun. It was quite difficult to mix and match various tools for actuator control, image processing, etc. and to implement the state-of-the-art algorithms. So this was the time when I was desperately looking for a way out of robotics and change my specialization to something else in the domain of electronics. That’s when I came across the esoteric yet wonderful world of ROS.
The more I read about ROS, the more I fell in love with it. So I decided to incorporate ROS in my humanoid robot “I-Force”. In its current state it is able to detect any object (without concept) using low-level image processing algorithm and localize its location in 3D space, this location is then used to determine the parameters like actuator position, sweep velocity, etc. using inverse kinematics technique and pick the object with the end-effector, which in my case is a claw. As a ROS developer porting the entire system onto ROS and incorporating decision making capability aided by AI to learn optimum strategies of detecting objects with context in high dimensional space state and implement Reinforcement Learning RL using the various tools that ROS has to offer. The sheer amount of data required for this is quite impractical to “teach” robot these capabilities, so a simulation on ROS could be used to train and transferring this useful “insight” from the state-of-the-art deep learning and RL models to the actual robot (this approach is readily being used for training warehouse robots, UGV, drones, etc.).
Why did I consider Robot Ignite Academy as the best place to learn ROS?
While searching for a comprehensive step-by-step tutorial for learning ROS from the ground up, I came across various books, video tutorials, and blog posts, but none were as comprehensive and exhaustive as in Robot Ignite Academy. The way clear paths are defined with a series of courses with hands-on exposure rather than just chugging down theory to reach a specific goal is truly an amazing concept, and all of this without the need of any ROS installation on a local system.